Avg Release Cycle
- There were some problems related to absolute paths when loading profiles that were not in the current working directory.
- 👕 Mandating version 0.2.3 of pylint-plugin-utils, as the earlier ones don't work with the add_message API changes made in pylint 1.4+
- 👕 #102 By default, prospector will hide pylint's "no-member" warnings, because more often than not they are simply incorrect. They can be re-enabled with the '--member-warnings' command line flag or the 'member-warnings: true' profile option.
- 💅 #101 Code annotated with pep8/flake8 style "# noqa" comments is now understood by prospector and will lead to messages from other tools being suppressed too.
- ⬆️ #100 Pyflakes error codes have been replaced with the same as those used in flake8, for consistency. Profiles with the old values will still work, and the profile-validator will warn you to upgrade.
- 👕 Messages now use Pylint error symbols ('star-args') instead of codes ('W0142'). This makes it much more obvious what each message means and what is happening when errors are suppressed or ignored in profiles. The old error codes will continue to work in profiles.
- 🔧 The way that profiles are handled and parsed has completely been rewritten to avoid several bugs and introduce 'shorthand' options to profiles. This allows profiles to specify simple options like 'doc-warnings: true' inside profiles and configure anything that can be configured as a command line argument. Profiles can now use options like 'strictness: high' or 'doc-warnings: true' as a shortcut for inheriting the built-in prospector profiles.
- A new
--show-profileoption is available to dump the calculated profile, which is helpful for figuring out what prospector thinks it is doing.
- 🗄 Profiles now have separate
ignore-patternsdirectives to match the command line arguments. The old
ignoredirective remains in place for backwards compatibility and will be deprecated in the future.
- ⚠ A new tool,
profile-validator, has been added. It simply checks prospector profiles and validates the settings, providing warnings if any are incorrect.
- 🔀 #89 and #40 - profile merging was not behaving exactly as intended, with later profiles not overriding earlier profiles. This is now fixed as part of the aforementioned rewrite.
- ⚠ pep257 is now included by default; however it will not run unless the '--doc-warnings' flag is used.
- 📚 pep257 messages are now properly blended with other tools' documentation warnings
- 👍 Path and output character encoding is now handled much better (which is to say, it is handled; previously it wasn't at all).
- 🔖 Version loading in setup.py no longer imports the prospector module (which could lead to various weirdnesses when installing on different platforms)
- #82 resolves regression in adapter library detection raising,
ValueError: too many values to unpack. provided by @jquast
- #83 resolves regression when adapter library detects django,
TypeError: '_sre.SRE_Pattern' object is not iterable. provided by @jquast
- 👀 Demoted frosted to be an optional tool - this is because development seems to have slowed and pyflakes has picked up again, and frosted how has several issues which are solved by pyflakes and is no longer a useful addition.
- #78 Prospector can now take multiple files as a path argument, thus providing errors for several files at a time. This helps when integrating with IDEs, for example.
- ⬆️ Upgrading to newer versions of Pylint and related dependencies resolves #73, #75, #76 and #79
- 👕 #74, #10 Tools will now use any configuration specific to them by default. That is to say, if a
.pylintrcfile exists, then that will be used in preference to prospector's own opinions of how to use pylint.
- ➕ Added centralised configuration management, with an abstraction away from how prospector and each tool is actually configured.
- ✂ Removed the "adaptors" concept. This was a sort of visitor pattern in which each tool's configuration could be updated by an adaptor, which 'visited' the tool to tweak settings based on what the adaptor represented. In practise this was not useful and a confusing way to tweak behaviour - tools now configure themselves based on configuration options directly.
- 🔄 Changed the default output format to be 'grouped' rather than 'text'
- 👌 Support for Python 2.6 has been dropped, following Pylint's lead.
- 👕 Using pylint 1.4's 'unsafe' mode, which allows it to load any C extensions (this was the behaviour for 1.3 and below). Not loading them causes many many inference errors.
- ⚠ #65 Resolve UnicodeDecodeErrors thrown while attempting to auto-discover modules of interest by discovering target python source file encoding (PEP263), and issuing only a warning if it fails (thanks to Jeff Quast).
- 🚀 Pylint dependency version restricted to 1.3, as 1.4 drops support for Python 2.6. Prospector will drop support for Python 2.6 in a 0.8 release.
- ✅ File names ending in 'tests.py' will now be ignored if prospector is set to ignore tests (previously, the regular expression only ignored files ending in 'test.py')
- #70 Profiles starting with a
.ymlextension can now be autoloaded
- 👀 #62 For human readable output, the summary of messages will now be printed at the end rather than at the start, so the summary will be what users see when running prospector (without piping into
- The E265 error from PEP8 - "Block comment should start with '# '" - has been disabled for anything except veryhigh strictness.