summaryrefslogtreecommitdiff
path: root/devel/py-pylint
AgeCommit message (Collapse)AuthorFilesLines
2017-03-01Update devel/py-pylint to 1.6.5.fhajny6-48/+114
- Change to use ALTERNATIVES to avoid conflicts between Python versions. Pylint 1.6.5 - Copyright and doc changes only Pylint 1.6.4 - Recurse into all the ancestors when checking if an object is an exception Pylint 1.6.3 - Do not crash when inferring uninferable exception types for docparams extension Pylint 1.6.2 - Do not crash when printing the help of options with default regular expressions - More granular versions for deprecated modules. - Do not crash in docparams when we can't infer the exception types.
2017-01-03Use "${MV} || ${TRUE}" and "${RM} -f" consistently in post-install targets.jperkin1-6/+6
2016-08-29Sort, and add python-2.x only files.wiz1-106/+117
2016-08-29Make PLIST match installed files.darcy1-118/+106
2016-08-29Update devel/py-logilab-common to version 1.2.0.darcy1-3/+1
This is mainly to remove dependency on time/py-mxDateTime so that it can build on Python >= 3.4. Removed PYTHON_VERSIONS_INCOMPATIBLE line from this and other packages that had it for this incompatibility.
2016-08-28Remove unnecessary PLIST_SUBST and FILES_SUBST that are now providedwiz1-2/+1
by the infrastructure. Mark a couple more packages as not ready for python-3.x.
2016-07-12Updated py-pylint to 1.6.1.wiz3-172/+411
What's new in Pylint 1.6.1? =========================== Release date: 2016-07-07 * Use environment markers for supporting conditional dependencies. What's New in Pylint 1.6.0? =========================== Release date: 2016-07-07 * Added a new extension, `pylint.extensions.mccabe`, for warning about complexity in code. * Deprecate support for --optimize-ast. Part of #975. * Deprecate support for the HTML output. Part of #975. * Deprecate support for --output-files. Part of #975. * Fixed a documentation error for the check_docs extension. Fixes #735. * Made the list of property-defining decorators configurable. * Fix a bug where the top name of a qualified import was detected as unused variable. Close #923. * bad-builtin is now an extension check. * generated-members support qualified name through regular expressions. For instance, one can specify a regular expression as --generated-members=astroid.node_classes.* for ignoring every no-member error that is accessed as in `astroid.node_classes.missing.object`. * Add the ability to ignore files based on regex matching, with the new ``--ignore-patterns`` option. This addresses issue #156 by allowing for multiple ignore patterns to be specified. Rather than clobber the existing ignore option, we introduced a new one called ignore-patterns. * Added a new error, 'trailing-newlines', which is emitted when a file has trailing new lines. Closes issue #682. * Add a new option, 'redefining-builtins-modules', for controlling the modules which can redefine builtins, such as six.moves and future.builtins. Close #464. * 'reimported' is emitted when the same name is imported from different module. Close #162. * Add a new recommendation checker, 'consider-iterating-dictionary', which is emitted which is emitted when a dictionary is iterated through .keys(). Close #699 * Use the configparser backport for Python 2 This fixes a problem we were having with comments inside values, which is fixed in Python 3's configparser. Close #828 * A new error was added, 'invalid-length-returned', when the `__len__` special method returned something else than a non-negative number. Close issue #557 * Switch to using isort internally for wrong-import-order. Closes #879. * check_docs extension can find constructor parameters in __init__. Closes #887. * Don't warn about invalid-sequence-index if the indexed object has unknown base classes. Closes #867 * Don't crash when checking, for super-init-not-called, a method defined in an if block. * Do not emit import-error or no-name-in-module for fallback import blocks by default. Until now, we warned with these errors when a fallback import block (a TryExcept block that contained imports for Python 2 and 3) was found, but this gets cumbersome when trying to write compatible code. As such, we don't check these blocks by default, but the analysis can be enforced by using the new ``--analyse-fallback-block`` flag. Close #769. What's New in Pylint 1.5.6? =========================== Release date: 2016-06-06 * config files with BOM markers can now be read. Close #864. * epylint.py_run does not crash on big files, using .communicate() instead of .wait() Close #599 What's New in Pylint 1.5.5? =========================== Release date: 2016-03-21 * Let visit_importfrom from Python 3 porting checker be called when everything is disabled Because the visit method was filtering the patterns it was expecting to be activated, it didn't run when everything but one pattern was disabled, leading to spurious false positives Close #852 * Don't emit unsubscriptable-value for classes with unknown base classes. Close #776. * Use an OrderedDict for storing the configuration elements This fixes an issue related to impredictible order of the disable / enable elements from a config file. In certain cases, the disable was coming before the enable which resulted in classes of errors to be enabled, even though the intention was to disable them. The best example for this was in the context of running multiple processes, each one of it having different enables / disables that affected the output. Close #815 * Don't consider bare and broad except handlers as ignoring NameError, AttributeError and similar exceptions, in the context of checkers for these issues. Closes issue #826 What's New in Pylint 1.5.4? =========================== Release date: 2016-01-15 * Merge StringMethodChecker with StringFormatChecker. This fixes a bug where disabling all the messages and enabling only a handful of messages from the StringFormatChecker would have resulted in no messages at all. * Don't apply unneeded-not over sets. What's New in Pylint 1.5.3? =========================== Release date: 2016-01-11 * Handle the import fallback idiom with regard to wrong-import-order. Closes issue #750. * Decouple the displaying of reports from the displaying of messages Some reporters are aggregating the messages instead of displaying them when they are available. The actual displaying was conflatted in the generate_reports. Unfortunately this behaviour was flaky and in the case of the JSON reporter, the messages weren't shown at all if a file had syntax errors or if it was missing. In order to fix this, the aggregated messages can now be displayed with Reporter.display_message, while the reports are displayed with display_reports. Closes issues #766 and #765. * Ignore function calls with variadic arguments without a context. Inferring variadic positional arguments and keyword arguments will result into empty Tuples and Dicts, which can lead in some cases to false positives with regard to no-value-for-parameter. In order to avoid this, until we'll have support for call context propagation, we're ignoring such cases if detected. Closes issue #722. * Treat AsyncFunctionDef just like FunctionDef nodes, by implementing visit_asyncfunctiondef in terms of visit_functiondef. Closes issue #767. * Take in account kwonlyargs when verifying that arguments are defined with the check_docs extension. Closes issue #745. * Suppress reporting 'unneeded-not' inside `__ne__` methods Closes issue #749. What's New in Pylint 1.5.2? =========================== Release date: 2015-12-21 * Don't crash if graphviz is not installed, instead emit a warning letting the user to know. Closes issue #168. * Accept only functions and methods for the deprecated-method checker. This prevents a crash which can occur when an object doesn't have .qname() method after the inference. * Don't emit super-on-old-class on classes with unknown bases. Closes issue #721. * Allow statements in `if` or `try` blocks containing imports. Closes issue #714. What's New in Pylint 1.5.1? =========================== Release date: 2015-12-02 * Don't emit unsubscriptable-object if the node is found inside an abstract class. Closes issue #685. * Add wrong-import-position to check_messages's decorator arguments for ImportChecker.leave_module This fixes an esoteric bug which occurs when ungrouped-imports and wrong-import-order are disabled and pylint is executed on multiple files. What happens is that without wrong-import-position in check_messages, leave_module will never be called, which means that the first non-import node from other files might leak into the current file, leading to wrong-import-position being emitted by pylint. * Fix a crash which occurred when old visit methods are encountered in plugin modules. Closes issue #711. * Don't emit import-self and cyclic-import for relative imports of modules with the same name as the package itself. Closes issues #708 and #706. What's New in Pylint 1.5.0? =========================== Release date: 2015-11-29 * Added multiple warnings related to imports. 'wrong-import-order' is emitted when PEP 8 recommendations regarding imports are not respected (that is, standard imports should be followed by third-party imports and then by local imports). 'ungrouped-imports' is emitted when imports from the same package or module are not placed together, but scattered around in the code. 'wrong-import-position' is emitted when code is mixed with imports, being recommended for the latter to be at the top of the file, in order to figure out easier by a human reader what dependencies a module has. Closes issue #692. * Added a new refactoring warning, 'unneeded-not', emitted when an expression with the not operator could be simplified. Closes issue #670. * Added a new refactoring warning, 'simplifiable-if-statement', used when an if statement could be reduced to a boolean evaluation of its test. Closes issue #698. * Added a new refactoring warning, 'too-many-boolean-expressions', used when a if statement contains too many boolean expressions, which makes the code less maintainable and harder to understand. Closes issue #677. * Property methods are shown as attributes instead of functions in pyreverse class diagrams. Closes Issue #284 * Add a new refactoring error, 'too-many-nested-blocks', which is emitted when a function or a method has too many nested blocks, which makes the code less readable and harder to understand. Closes issue #668. * Add a new error, 'unsubscriptable-object', that is emitted when value used in subscription expression doesn't support subscription (i.e. doesn't define __getitem__ method). * Don't warn about abstract classes instantiated in their own body. Closes issue #627. * Obsolete options are not present by default in the generated configuration file. Closes issue #632. * non-iterator-returned can detect classes with iterator-metaclasses. Closes issue #679. * Add a new error, 'unsupported-membership-test', emitted when value to the right of the 'in' operator doesn't support membership test protocol (i.e. doesn't define __contains__/__iter__/__getitem__) * Add new errors, 'not-an-iterable', emitted when non-iterable value is used in an iterating context (starargs, for-statement, comprehensions, etc), and 'not-a-mapping', emitted when non-mapping value is used in a mapping context. Closes issue #563. * Make 'no-self-use' checker not emit a warning if there is a 'super()' call inside the method. Closes issue #667. * Add checker to identify multiple imports on one line. Closes issue #598. * Fix unused-argument false positive when the "+=" operator is used. Closes issue #518. * Don't emit import-error for ignored modules. PyLint will not emit import errors for any import which is, or is a subpackage of, a module in the ignored-modules list. Closes issue #223. * Fix unused-import false positive when the import is used in a class assignment. Closes issue #475 * Add a new error, 'not-context-manager', emitted when something that doesn't implement __enter__ and __exit__ is used in a with statement. * Add a new warning, 'confusing-with-statement', emitted by the base checker, when an ambiguous looking with statement is used. For example `with open() as first, second` which looks like a tuple assignment but is actually 2 context managers. * Add a new warning, 'duplicate-except', emitted when there is an exception handler which handles an exception type that was handled before. Closes issue #485. * A couple of warnings got promoted to errors, since they could uncover potential bugs in the code. These warnings are: assignment-from-none, unbalanced-tuple-unpacking, unpacking-non-sequence, non-iterator-returned. Closes issue #388. * Allow ending a pragma control with a semicolon. In this way, users can continue a pragma control with a reason for why it is used, as in `# pylint: disable=old-style-class;reason=...`. Closes issue #449. * --jobs can be used with --load-plugins now. Closes issue #456. * Improve the performance of --jobs when dealing only with a package name. Closes issue #479. * Don't emit an unused-wildcard-import when the imported name comes from another module and it is in fact a __future__ name. * The colorized reporter now works on Windows. Closes issue #96. * Remove pointless-except warning. It was previously disabled by default and it wasn't very useful. Closes issue #506. * Fix a crash on Python 3 related to the string checker, which crashed when it encountered a bytes string with a .format method called. * Don't warn about no-self-use for builtin properties. * Fix a false positive for bad-reversed-sequence, when a subclass of a `dict` provides a __reversed__ method. * Change the default no-docstring-rgx so missing-docstring isn't emitted for private functions. * Don't emit redefined-outer-name for __future__ directives. Closes issue #520. * Provide some hints for the bad-builtin message. Closes issue #522. * When checking for invalid arguments to a callable, in typecheck.py, look up for the __init__ in case the found __new__ comes from builtins. Since the __new__ comes from builtins, it will not have attached any information regarding what parameters it expects, so the check will be useless. Retrieving __init__ in that case will at least detect a couple of false negatives. Closes issue #429. * Don't emit no-member for classes with unknown bases. Since we don't know what those bases might add, we simply ignore the error in this case. * Lookup in the implicit metaclass when checking for no-member, if the class in question has an implicit metaclass, which is True for new style classes. Closes issue #438. * Add two new warnings, duplicate-bases and inconsistent-mro. duplicate-bases is emitted when a class has the same bases listed more than once in its bases definition, while inconsistent-mro is emitted when no sane mro hierarchy can be determined. Closes issue #526. * Remove interface-not-implemented warning. Closes issue #532. * Remove the rest of interface checks: interface-is-not-class, missing-interface-method, unresolved-interface. The reason is that its better to start recommending ABCs instead of the old Zope era of interfaces. One side effect of this change is that ignore-iface-methods becomes a noop, it's deprecated and it will be removed at some time. * Emit a proper deprecation warning for reporters.BaseReporter.add_message. The alternative way is to use handle_message. add_message will be removed in Pylint 1.6. * Added new module 'extensions' for optional checkers with the test directory 'test/extensions' and documentation file 'doc/extensions.rst'. * Added new checker 'extensions.check_docs' that verifies parameter documention in Sphinx, Google, and Numpy style. * Detect undefined variable cases, where the "definition" of an undefined variable was in del statement. Instead of emitting used-before-assignment, which is totally misleading, it now emits undefined-variable. Closes issue #528. * Don't emit attribute-defined-outside-init and access-member-before-definition for mixin classes. Actual errors can occur in mixin classes, but this is controlled by the ignore-mixin-members option. Closes issue #412. * Improve the detection of undefined variables and variables used before assignment for variables used as default arguments to function, where the variable was first defined in the class scope. Closes issue #342 and issue #404. * Add a new warning, 'unexpected-special-method-signature', which is emitted when a special method (dunder method) doesn't have the expected signature, which can lead to actual errors in the application code. Closes issue #253. * Remove 'bad-context-manager' due to the inclusion of 'unexpected-special-method-signature'. * Don't emit no-name-in-module if the import is guarded by an ImportError, Exception or a bare except clause. * Don't emit no-member if the attribute access node is protected by an except handler, which handles AttributeError, Exception or it is a bare except. * Don't emit import-error if the import is guarded by an ImportError, Exception or a bare except clause. * Don't emit undefined-variable if the node is guarded by a NameError, Exception or bare except clause. * Add a new warning, 'using-constant-test', which is emitted when a conditional statement (If, IfExp) uses a test which is always constant, such as numbers, classes, functions etc. This is most likely an error from the user's part. Closes issue #524. * Don't emit 'raising-non-exception' when the exception has unknown bases. We don't know what those bases actually are and it's better to assume that the user knows what he is doing rather than emitting a message which can be considered a false positive. * Look for a .pylintrc configuration file in the current folder, if pylintrc is not found. Dotted pylintrc files will not be searched in the parents of the current folder, as it is done for pylintrc. * Add a new error, 'invalid-unary-type-operand', emitted when an unary operand is used on something which doesn't support that operation (for instance, using the unary bitwise inversion operator on an instance which doesn't implement __invert__). * Take in consideration differences between arguments of various type of functions (classmethods, staticmethods, properties) when checking for `arguments-differ`. Closes issue #548. * astroid.inspector was moved to pylint.pyreverse, since it belongs there and it doesn't need to be in astroid. * astroid.utils.LocalsVisitor was moved to pylint.pyreverse.LocalsVisitor. * pylint.checkers.utils.excepts_import_error was removed. Use pylint.chekcers.utils.error_of_type instead. * Don't emit undefined-all-variables for nodes which can't be inferred (YES nodes). * yield-outside-func is also emitted for `yield from`. * Add a new error, 'too-many-star-expressions', emitted when there are more than one starred expression (`*x`) in an assignment. The warning is emitted only on Python 3. * Add a new error, 'invalid-star-assignment-target', emitted when a starred expression (`*x`) is used as the lhs side of an assignment, as in `*x = [1, 2]`. This is not a SyntaxError on Python 3 though. * Detect a couple of objects which can't be base classes (bool, slice, range and memoryview, which weren't detected until now). * Add a new error for the Python 3 porting checker, `import-star-module-level`, which is used when a star import is detected in another scope than the module level, which is an error on Python 3. Using this will emit a SyntaxWarning on Python 2. * Add a new error, 'star-needs-assignment-target', emitted on Python 3 when a Starred expression (`*x`) is not used in an assignment target. This is not caught when parsing the AST on Python 3, so it needs to be a separate check. * Add a new error, 'unsupported-binary-operation', emitted when two a binary arithmetic operation is executed between two objects which don't support it (a number plus a string for instance). This is currently disabled, since the it exhibits way too many false positives, but it will be reenabled as soon as possible. * New imported features from astroid into pyreverse: pyreverse.inspector.Project, pyreverse.inspector.project_from_files and pyreverse.inspector.interfaces. These were moved since they didn't belong in astroid. * Enable misplaced-future for Python 3. Closes issue #580. * Add a new error, 'nonlocal-and-global', which is emitted when a name is found to be both nonlocal and global in the same scope. Closes issue #581. * ignored-classes option can work with qualified names (ignored-classes=optparse.Values) Closes issue #297. * ignored-modules can work with qualified names as well as with Unix pattern matching for recursive ignoring. Closes issues #244. * Improve detection of relative imports in non-packages, as well as importing missing modules with a relative import from a package. * Don't emit no-init if not all the bases from a class are known. Closes issue #604. * --no-space-check option accepts `empty-line` as a possible option. Closes issue #541. * --generate-rcfile generates by default human readable symbols for the --disable option. Closes issue #608. * Improved the not-in-loop checker to properly detect more cases. * Add a new error, 'continue-in-finally', which is emitted when the `continue` keyword is found inside a `finally` clause, which is a SyntaxError. * The --zope flag is deprecated and it is slated for removal in Pylint 1.6. The reason behind this removal is the fact that it's a specialized flag and there are solutions for the original problem: use --generated-members with the members that causes problems when using Zope or add AST transforms tailored to the zope project. At the same time, --include-ids and --symbols will also be removed in Pylint 1.6. Closes issue #570. * missing-module-attribute was removed and the corresponding CLI option, required-attributes, which is slated for removal in Pylint 1.6. * missing-reversed-argument was removed. The reason behind this is that this kind of errors should be detected by the type checker for *all* the builtins and not as a special case for the reversed builtin. This will happen shortly in the future. * --comment flag is obsolete and it will be removed in Pylint 1.6. * --profile flag is obsolete and it will be removed in Pylint 1.6. * Add a new error, 'misplaced-bare-raise'. The error is used when a bare raise is not used inside an except clause. This can generate a RuntimeError in Python, if there are no active exceptions to be reraised. While it works in Python 2 due to the fact that the exception leaks outside of the except block, it's nevertheless a behaviour that an user shouldn't depend upon, since it's not obvious to the reader of the code what exception will be raised and it will not be compatible with Python 3 anyhow. Closes issue #633. * Bring logilab-common's ureports into pylint.reporters. With this change, we moved away from depending on logilab-common, having in Pylint all the components that were used from logilab-common. The API should be considered an implementation detail and can change at some point in the future. Closes issue #621. * `reimported` is emitted for reimported objects on the same line. Closes issue #639. * Abbreviations of command line options are not supported anymore. Using abbreviations for CLI options was never considered to be a feature of pylint, this fact being only a side effect of using optparse. As this was the case, using --load-plugin or other abbreviation for --load-plugins never actually worked, while it also didn't raise an error. Closes issue #424. * Add a new error, 'nonlocal-without-binding' The error is emitted on Python 3 when a nonlocal name is not bound to any variable in the parents scopes. Closes issue #582. * 'deprecated-module' can be shown for modules which aren't available. Closes issue #362. * Don't consider a class abstract if its members can't be properly inferred. This fixes a false positive related to abstract-class-instantiated. Closes issue #648. * Add a new checker for the async features added by PEP 492. * Add a new error, 'yield-inside-async-function', emitted on Python 3.5 and upwards when the `yield` statement is found inside a new coroutine function (PEP 492). * Add a new error, 'not-async-context-manager', emitted when an async context manager block is used with an object which doesn't support this protocol (PEP 492). * Add a new convention warning, 'singleton-comparison', emitted when comparison to True, False or None is found. * Don't emit 'assigning-non-slot' for descriptors. Closes issue #652. * Add a new error, 'repeated-keyword', when a keyword argument is passed multiple times into a function call. This is similar with redundant-keyword-arg, but it's mildly different that it needs to be a separate error. * --enable=all can now be used. Closes issue #142. * Add a new convention message, 'misplaced-comparison-constant', emitted when a constant is placed in the left hand side of a comparison, as in '5 == func()'. This is also called Yoda condition, since the flow of code reminds of the Star Wars green character, conditions usually encountered in languages with variabile assignments in conditional statements. * Add a new convention message, 'consider-using-enumerate', which is emitted when code that uses `range` and `len` for iterating is encountered. Closes issue #684. * Added two new refactoring messages, 'no-classmethod-decorator' and 'no-staticmethod-decorator', which are emitted when a static method or a class method is declared without using decorators syntax. Closes issue #675.
2016-07-12Update HOMEPAGE.wiz1-2/+2
2016-07-09Remove python33: adapt all packages that refer to it.wiz1-2/+2
2016-06-08Switch to MASTER_SITES_PYPI.wiz1-2/+2
2015-12-05Extend PYTHON_VERSIONS_INCOMPATIBLE to 35adam1-2/+2
2015-11-03Add SHA512 digests for distfiles for devel categoryagc1-1/+2
Issues found with existing distfiles: distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip distfiles/fortran-utils-1.1.tar.gz distfiles/ivykis-0.39.tar.gz distfiles/enum-1.11.tar.gz distfiles/pvs-3.2-libraries.tgz distfiles/pvs-3.2-linux.tgz distfiles/pvs-3.2-solaris.tgz distfiles/pvs-3.2-system.tgz No changes made to these distinfo files. Otherwise, existing SHA1 digests verified and found to be the same on the machine holding the existing distfiles (morden). All existing SHA1 digests retained for now as an audit trail.
2015-04-05Update to 1.4.3wen3-148/+275
Update DEPENDS Add test target Upstream changes: 2015-03-14 -- 1.4.3 * Remove three warnings: star-args, abstract-class-little-used, abstract-class-not-used. These warnings don't add any real value and they don't imply errors or problems in the code. * Added a new option for controlling the peephole optimizer in astroid. The option ``--optimize-ast`` will control the peephole optimizer, which is used to optimize a couple of AST subtrees. The current problem solved by the peephole optimizer is when multiple joined strings, with the addition operator, are encountered. If the numbers of such strings is high enough, Pylint will then fail with a maximum recursion depth exceeded error, due to its visitor architecture. The peephole just transforms such calls, if it can, into the final resulting string and this exhibit a problem, because the visit_binop method stops being called (in the optimized AST it will be a Const node). 2015-03-11 -- 1.4.2 * Don't require a docstring for empty modules. Closes issue #261. * Fix a false positive with `too-few-format-args` string warning, emitted when the string format contained a normal positional argument ('{0}'), mixed with a positional argument which did an attribute access ('{0.__class__}'). Closes issue #463. * Take in account all the methods from the ancestors when checking for too-few-public-methods. Closes issue #471. * Catch enchant errors and emit 'invalid-characters-in-docstring' when checking for spelling errors. Closes issue #469. * Use all the inferred statements for the super-init-not-called check. Closes issue #389. * Add a new warning, 'unichr-builtin', emitted by the Python 3 porting checker, when the unichr builtin is found. Closes issue #472. * Add a new warning, 'intern-builtin', emitted by the Python 3 porting checker, when the intern builtin is found. Closes issue #473. * Add support for editable installations. * The HTML output accepts the `--msg-template` option. Patch by Dan Goldsmith. * Add 'map-builtin-not-iterating' (replacing 'implicit-map-evaluation'), 'zip-builtin-not-iterating', 'range-builtin-not-iterating', and 'filter-builtin-not-iterating' which are emitted by `--py3k` when the appropriate built-in is not used in an iterating context (semantics taken from 2to3). * Add a new warning, 'unidiomatic-typecheck', emitted when an explicit typecheck uses type() instead of isinstance(). For example, `type(x) == Y` instead of `isinstance(x, Y)`. Patch by Chris Rebert. Closes issue #299. * Add support for combining the Python 3 checker mode with the --jobs flag (--py3k and --jobs). Closes issue #467. * Add a new warning for the Python 3 porting checker, 'using-cmp-argument', emitted when the `cmp` argument for the `list.sort` or `sorted builtin` is encountered. * Make the --py3k flag commutative with the -E flag. Also, this patch fixes the leaks of error messages from the Python 3 checker when the errors mode was activated. Closes issue #437. 2015-01-16 -- 1.4.1 * Look only in the current function's scope for bad-super-call. Closes issue #403. * Check the return of properties when checking for not-callable. Closes issue #406. * Warn about using the input() or round() built-ins for Python 3. Closes issue #411. * Proper abstract method lookup while checking for abstract-class-instantiated. Closes issue #401. * Use a mro traversal for finding abstract methods. Closes issue #415. * Fix a false positive with catching-non-exception and tuples of exceptions. * Fix a false negative with raising-non-exception, when the raise used an uninferrable exception context. * Fix a false positive on Python 2 for raising-bad-type, when raising tuples in the form 'raise (ZeroDivisionError, None)'. * Fix a false positive with invalid-slots-objects, where the slot entry was an unicode string on Python 2. Closes issue #421. * Add a new warning, 'redundant-unittest-assert', emitted when using unittest's methods assertTrue and assertFalse with constant value as argument. Patch by Vlad Temian. * Add a new JSON reporter, usable through -f flag. * Add the method names for the 'signature-differs' and 'argument-differs' warnings. Closes issue #433. * Don't compile test files when installing. * Fix a crash which occurred when using multiple jobs and the files given as argument didn't exist at all. 2014-11-23 -- 1.4.0 * Added new options for controlling the loading of C extensions. By default, only C extensions from the stdlib will be loaded into the active Python interpreter for inspection, because they can run arbitrary code on import. The option `--extension-pkg-whitelist` can be used to specify modules or packages that are safe to load. * Change default max-line-length to 100 rather than 80 * Drop BaseRawChecker class which were only there for backward compat for a while now * Don't try to analyze string formatting with objects coming from function arguments. Closes issue #373. * Port source code to be Python 2/3 compatible. This drops the need for 2to3, but does drop support for Python 2.5. * Each message now comes with a confidence level attached, and can be filtered base on this level. This allows to filter out all messages that were emitted even though an inference failure happened during checking. * Improved presenting unused-import message. Closes issue #293. * Add new checker for finding spelling errors. New messages: wrong-spelling-in-comment, wrong-spelling-in-docstring. New options: spelling-dict, spelling-ignore-words. * Add new '-j' option for running checks in sub-processes. * Added new checks for line endings if they are mixed (LF vs CRLF) or if they are not as expected. New messages: mixed-line-endings, unexpected-line-ending-format. New option: expected-line-ending-format. * 'dangerous-default-value' no longer evaluates the value of the arguments, which could result in long error messages or sensitive data being leaked. Closes issue #282 * Fix a false positive with string formatting checker, when encountering a string which uses only position-based arguments. Closes issue #285. * Fix a false positive with string formatting checker, when using keyword argument packing. Closes issue #288. * Proper handle class level scope for lambdas. * Handle 'too-few-format-args' or 'too-many-format-args' for format strings with both named and positional fields. Closes issue #286. * Analyze only strings by the string format checker. Closes issue #287. * Properly handle nested format string fields. Closes issue #294. * Don't emit 'attribute-defined-outside-init' if the attribute was set by a function call in a defining method. Closes issue #192. * Properly handle unicode format strings for Python 2. Closes issue #296. * Don't emit 'import-error' if an import was protected by a try-except, which excepted ImportError. * Fix an 'unused-import' false positive, when the error was emitted for all the members imported with 'from import' form. Closes issue #304. * Don't emit 'invalid-name' when assigning a name in an ImportError handler. Closes issue #302. * Don't count branches from nested functions. * Fix a false positive with 'too-few-format-args', when the format strings contains duplicate manual position arguments. Closes issue #310. * fixme regex handles comments without spaces after the hash. Closes issue #311. * Don't emit 'unused-import' when a special object is imported (__all__, __doc__ etc.). Closes issue #309. * Look in the metaclass, if defined, for members not found in the current class. Closes issue #306. * Don't emit 'protected-access' if the attribute is accessed using a property defined at the class level. * Detect calls of the parent's __init__, through a binded super() call. * Check that a class has an explicitly defined metaclass before emitting 'old-style-class' for Python 2. * Emit 'catching-non-exception' for non-class nodes. Closes issue #303. * Order of reporting is consistent. * Add a new warning, 'boolean-datetime', emitted when an instance of 'datetime.time' is used in a boolean context. Closes issue #239. * Fix a crash which ocurred while checking for 'method-hidden', when the parent frame was something different than a function. * Generate html output for missing files. Closes issue #320. * Fix a false positive with 'too-many-format-args', when the format string contains mixed attribute access arguments and manual fields. Closes issue #322. * Extend the cases where 'undefined-variable' and 'used-before-assignment' can be detected. Closes issue #291. * Add support for customising callback identifiers, by adding a new '--callbacks' command line option. Closes issue #326. * Add a new warning, 'logging-format-interpolation', emitted when .format() string interpolation is used within logging function calls. * Don't emit 'unbalanced-tuple-unpacking' when the rhs of the assignment is a variable length argument. Closes issue #329. * Add a new warning, 'inherit-non-class', emitted when a class inherits from something which is not a class. Closes issue #331. * Fix another false positives with 'undefined-variable', where the variable can be found as a class assignment and used in a function annotation. Closes issue #342. * Handle assignment of the string format method to a variable. Closes issue #351. * Support wheel packaging format for PyPi. Closes issue #334. * Check that various built-ins that do not exist in Python 3 are not used: apply, basestring, buffer, cmp, coerce, execfile, file, long raw_input, reduce, StandardError, unicode, reload and xrange. * Warn for magic methods which are not used in any way in Python 3: __coerce__, __delslice__, __getslice__, __setslice__, __cmp__, __oct__, __nonzero__ and __hex__. * Don't emit 'assigning-non-slot' when the assignment is for a property. Closes issue #359. * Fix for regression: '{path}' was no longer accepted in '--msg-template'. * Report the percentage of all messages, not just for errors and warnings. Closes issue #319. * 'too-many-public-methods' is reported only for methods defined in a class, not in its ancestors. Closes issue #248. * 'too-many-lines' disable pragma can be located on any line, not only the first. Closes issue #321. * Warn in Python 2 when an import statement is found without a corresponding `from __future__ import absolute_import`. * Warn in Python 2 when a non-floor division operation is found without a corresponding `from __future__ import division`. * Add a new option, 'exclude-protected', for excluding members from the protected-access warning. Closes issue #48. * Warn in Python 2 when using dict.iter*(), dict.view*(); none of these methods are available in Python 3. * Warn in Python 2 when calling an object's next() method; Python 3 uses __next__() instead. * Warn when assigning to __metaclass__ at a class scope; in Python 3 a metaclass is specified as an argument to the 'class' statement. * Warn when performing parameter tuple unpacking; it is not supported in Python 3. * 'abstract-class-instantiated' is also emitted for Python 2. It was previously disabled. * Add 'long-suffix' error, emitted when encountering the long suffix on numbers. * Add support for disabling a checker, by specifying an 'enabled' attribute on the checker class. * Add a new CLI option, --py3k, for enabling Python 3 porting mode. This mode will disable all other checkers and will emit warnings and errors for constructs which are invalid or removed in Python 3. * Add 'old-octal-literal' to Python 3 porting checker, emitted when encountering octals with the old syntax. * Add 'implicit-map-evaluation' to Python 3 porting checker, emitted when encountering the use of map builtin, without explicit evaluation. 2014-07-26 -- 1.3.0 * Allow hanging continued indentation for implicitly concatenated strings. Closes issue #232. * Pylint works under Python 2.5 again, and its test suite passes. * Fix some false positives for the cellvar-from-loop warnings. Closes issue #233. * Return new astroid class nodes when the inferencer can detect that that result of a function invocation on a type (like `type` or `abc.ABCMeta`) is requested. Closes #205. * Emit 'undefined-variable' for undefined names when using the Python 3 `metaclass=` argument. * Checkers respect priority now. Close issue #229. * Fix a false positive regarding W0511. Closes issue #149. * Fix unused-import false positive with Python 3 metaclasses (#143). * Don't warn with 'bad-format-character' when encountering the 'a' format on Python 3. * Add multiple checks for PEP 3101 advanced string formatting: 'bad-format-string', 'missing-format-argument-key', 'unused-format-string-argument', 'format-combined-specification', 'missing-format-attribute' and 'invalid-format-index'. * Issue broad-except and bare-except even if the number of except handlers is different than 1. Fixes issue #113. * Issue attribute-defined-outside-init for all cases, not just for the last assignment. Closes issue #262. * Emit 'not-callable' when calling properties. Closes issue #268. * Fix a false positive with unbalanced iterable unpacking, when encountering starred nodes. Closes issue #273. * Add new checks, 'invalid-slice-index' and 'invalid-sequence-index' for invalid sequence and slice indices. * Add 'assigning-non-slot' warning, which detects assignments to attributes not defined in slots. * Don't emit 'no-name-in-module' for ignored modules. Closes issue #223. * Fix an 'unused-variable' false positive, where the variable is assigned through an import. Closes issue #196. * Definition order is considered for classes, function arguments and annotations. Closes issue #257. * Don't emit 'unused-variable' when assigning to a nonlocal. Closes issue #275. * Do not let ImportError propagate from the import checker, leading to crash in some namespace package related cases. Closes issue #203. * Don't emit 'pointless-string-statement' for attribute docstrings. Closes issue #193. * Use the proper mode for pickle when opening and writing the stats file. Closes issue #148. * Don't emit hidden-method message when the attribute has been monkey-patched, you're on your own when you do that. * Only emit attribute-defined-outside-init for definition within the same module as the offended class, avoiding to mangle the output in some cases. * Don't emit 'unnecessary-lambda' if the body of the lambda call contains call chaining. Closes issue #243. * Don't emit 'missing-docstring' when the actual docstring uses `.format`. Closes issue #281. 2014-04-30 -- 1.2.1 * Restore the ability to specify the init-hook option via the configuration file, which was accidentally broken in 1.2.0. * Add a new warning [bad-continuation] for badly indentend continued lines. * Emit [assignment-from-none] when the function contains bare returns. Fixes BitBucket issue #191. * Added a new warning for closing over variables that are defined in loops. Fixes Bitbucket issue #176. * Do not warn about \u escapes in string literals when Unicode literals are used for Python 2.*. Fixes BitBucket issue #151. * Extend the checking for unbalanced-tuple-unpacking and unpacking-non-sequence to instance attribute unpacking as well. * Fix explicit checking of python script (1.2 regression, #219) * Restore --init-hook, renamed accidentally into --init-hooks in 1.2.0 (#211) * Add 'indexing-exception' warning, which detects that indexing an exception occurs in Python 2 (behaviour removed in Python 3). 2014-04-18 -- 1.2.0 * Pass the current python paths to pylint process when invoked via epylint. Fixes BitBucket issue #133. * Add -i / --include-ids and -s / --symbols back as completely ignored options. Fixes BitBucket issue #180. * Extend the number of cases in which logging calls are detected. Fixes bitbucket issue #182. * Improve pragma handling to not detect pylint:* strings in non-comments. Fixes BitBucket issue #79. * Do not crash with UnknownMessage if an unknown message ID/name appears in disable or enable in the configuration. Patch by Cole Robinson. Fixes bitbucket issue #170. * Add new warning 'eval-used', checking that the builtin function `eval` was used. * Make it possible to show a naming hint for invalid name by setting include-naming-hint. Also make the naming hints configurable. Fixes BitBucket issue #138. * Added support for enforcing multiple, but consistent name styles for different name types inside a single module; based on a patch written by morbo@google.com. * Also warn about empty docstrings on overridden methods; contributed by sebastianu@google.com. * Also inspect arguments to constructor calls, and emit relevant warnings; contributed by sebastianu@google.com. * Added a new configuration option logging-modules to make the list of module names that can be checked for 'logging-not-lazy' et. al. configurable; contributed by morbo@google.com. * ensure init-hooks is evaluated before other options, notably load-plugins (#166) * Python 2.5 support restored: fixed small issues preventing pylint to run on python 2.5. Bitbucket issues #50 and #62. * bitbucket #128: pylint doesn't crash when looking for used-before-assignment in context manager assignments. * Add new warning, 'bad-reversed-sequence', for checking that the reversed() builtin receive a sequence (implements __getitem__ and __len__, without being a dict or a dict subclass) or an instance which implements __reversed__. * Mark `file` as a bad function when using python2 (closes #8). * Add new warning 'bad-exception-context', checking that `raise ... from ...` uses a proper exception context (None or an exception). * Enhance the check for 'used-before-assignment' to look for 'nonlocal' uses. * Emit 'undefined-all-variable' if a package's __all__ variable contains a missing submodule (closes #126). * Add a new warning 'abstract-class-instantiated' for checking that abstract classes created with `abc` module and with abstract methods are instantied. * Do not warn about 'return-arg-in-generator' in Python 3.3+. * Do not warn about 'abstract-method' when the abstract method is implemented through assignment (#155). * Improve cyclic import detection in the case of packages, patch by Buck Golemon * Add new warnings for checking proper class __slots__: `invalid-slots-object` and `invalid-slots`. * Search for rc file in `~/.config/pylintrc` if `~/.pylintrc` doesn't exists (#121) * Don't register the newstyle checker w/ python >= 3 * Fix unused-import false positive w/ augment assignment (#78) * Fix access-member-before-definition false negative wrt aug assign (#164) * Do not attempt to analyze non python file, eg .so file (#122)
2014-12-06No need to buildlink with devel/py-logilab-common, just DEPENDS.obache1-3/+2
2014-05-09Mark packages that are not ready for python-3.3 also not ready for 3.4,wiz1-2/+2
until proven otherwise.
2014-03-12CATEGORIES+=pythonrodent1-2/+2
2014-03-12Import py27-pylint-1.1.0 as devel/py-pylint.rodent5-0/+648
Pylint is a Python source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells (as defined in Martin Fowler's Refactoring book). Pylint can be seen as another PyChecker since nearly all tests you can do with PyChecker can also be done with Pylint. However, Pylint offers some more features, like checking length of lines of code, checking if variable names are well-formed according to your coding standard, or checking if declared interfaces are truly implemented, and much more. . Additionally, it is possible to write plugins to add your own checks.