On Travis CI, the flake8 env suddenly started to fail (pip upgrade?):
Invalid requirement: 'pep257==0.7.0 # still needed by flake8-docstrings but ignored'
Traceback (most recent call last):
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/_vendor/packaging/requirements.py", line 92, in __init__
req = REQUIREMENT.parseString(requirement_string)
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/_vendor/pyparsing.py", line 1172, in parseString
raise exc
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/_vendor/pyparsing.py", line 1162, in parseString
loc, tokens = self._parse( instring, 0 )
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/_vendor/pyparsing.py", line 1028, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/_vendor/pyparsing.py", line 2462, in parseImpl
loc, exprtokens = e._parse( instring, loc, doActions )
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/_vendor/pyparsing.py", line 1032, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/_vendor/pyparsing.py", line 2265, in parseImpl
raise ParseException(instring, loc, self.errmsg, self)
pip._vendor.pyparsing.ParseException: Expected stringEnd (at char 15), (line:1, col:16)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/req/req_install.py", line 78, in __init__
req = Requirement(req)
File "/home/travis/build/The-Compiler/qutebrowser/.tox/flake8/lib/python3.4/site-packages/pip/_vendor/packaging/requirements.py", line 96, in __init__
requirement_string[e.loc:e.loc + 8]))
pip._vendor.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "'# still '"
I can't reproduce this locally, but I hope this'll help.
* ``cherrypy.test.webtest.WebCase`` now honors a
'WEBTEST_INTERACTIVE' environment variable to disable
interactive tests (still enabled by default). Set to '0'
or 'false' or 'False' to disable interactive tests.
* Fix AttributeError when listiterator was accessed
using the ``next`` attribute.
* Removed ``cherrypy.lib.sessions.PostgresqlSession``.
* Fix errors with redirects to Unicode URLs.
1.2.1 (2015-05-05):
- Fix false RedefinedWhileUnused for submodule imports
1.2.0 (2016-05-03):
- Warn against reusing exception names after the except: block on Python 3
- Improve the error messages for imports
- Another charmap problem. In 3.1.2 text/characters would break on
systems which had /tmp/ mounted on a different partition than the
Hypothesis storage directory (usually in home). This fixes that.
* Add support for specifying a certificate authority when serving SSL
using the built-in SSL support.
* Use ssl.create_default_context when available.
* Catch platform-specific socket errors on OS X.
* Fix parsing of URIs containing ``://`` in the path part.
Anything which used a text() or characters() strategy was broken on
Windows and I hadn't updated appveyor to use the new repository location
so I didn't notice. This is now fixed and windows support should work
correctly.
- Fix concurrency issue when running tests that use text() from multiple
processes at once
- Improve performance of code using lists with max_size
- Fix install on Python 2 with ancient versions of pip so that it
installs the enum34 backport
- Remove duplicated __all__ exports from hypothesis.strategies
- Update headers to point to new repository location.
- Allow use of strategies that can’t be used in find() (e.g. choices) in
stateful testing.
- Corrected an issue that caused the debugger not to use the
machine GUID on POSIX systems.
- Corrected an Unicode error on Python 3 for the debugger's
PIN usage.
- Corrected the timestamp verification in the pin debug code.
Without this fix the pin was remebered until too long.
- werkzeug.serving: Still show the client address on bad requests.
- improved the PIN based protection for the debugger to make it harder to
brute force via trying cookies. Please keep in mind that the debugger
*is not intended for running on production environments*
- increased the pin timeout to a week to make it less annoying for people
which should decrease the change that users disable the pin check
entirely.
- werkzeug.serving: Fix broken HTTP_HOST when path starts with double slash.
- Allow regex selector to use codes extracted from each line
- Add predefined ignore pattern # flake8: disable=<codes>
- Add environment marker selector (PEP 0496)
- Fix bug when filename selector contained trailing whitespace
- Switched to using tox-travis, and added PyPy 3 testing
This always caused problems and unneeded complexity in the past, and it
also increases Travis CI runtime.
We now require either a DISPLAY during tests or Xvfb being installed.
In 43a4a6a3e7 we added
pkg_resources._vendor.pyparsing to the frozen modules - however, older
setuptools (and thus pkg_resources) versions don't have that module yet,
so freezing would fail.
astroid
-------
2016-03-21 -- 1.4.5
* decoratornames() does not leak InferenceError anymore.
* wildcard_imported_names() got replaced by _public_names()
Our understanding of wildcard imports through __all__ was
half baked to say at least, since we couldn't account for
modifications of the list, which results in tons of false positives.
Instead, we replaced it with _public_names(), a method which returns
all the names that are publicly available in a module, that is that
don't start with an underscore, even though this means that there
is a possibility for other names to be leaked out even though
they are not present in the __all__ variable.
The method is private in 1.4.X.
pylint
------
2016-03-21 -- 1.5.5
* 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
* Don't emit unsubscriptable-value for classes with unknown
base classes.
* 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.
* Don't consider bare and broad except handlers as ignoring NameError,
AttributeError and similar exceptions, in the context of checkers for
these issues.
- Improve error message when a plugin fails to load.
- pytest.fail with non-ascii characters raises an internal pytest error.
- junit parses report.nodeid incorrectly, when params IDs contain ::.
- SyntaxErrors containing non-ascii lines at the point of failure generated an
internal py.test error.
- When passing in a bytestring regex pattern to parameterize attempt to decode
it as utf-8 ignoring errors.
- parametrized test nodes cannot be specified to run on the command line.
[test] [feature] The default test runner is now py.test. Running “python
setup.py test” will make use of py.test instead of nose. nose still works as a
test runner as well, however.
[lexer] [bug] Major improvements to lexing of intricate Python sections which
may contain complex backslash sequences, as well as support for the bitwise
operator (e.g. pipe symbol) inside of expression sections distinct from the
Mako “filter” operator, provided the operator is enclosed within parentheses or
brackets. Pull request courtesy Daniel Martin.
[feature] Added new method Template.list_defs(). Pull request courtesy Jonathan
Vanasco.
* Bugfix for ``test_HTTP11_pipelining`` test in Python 3.5
* Bugfix regarding the keyword arguments support for Python 3 on the config
file.
* Bugfix for ``test_2_KeyboardInterrupt`` test in Python 3.5.
by monkey patching the HTTPRequest given a bug on CPython
that is affecting the testsuite (https://bugs.python.org/issue23377).
* Add additional parameter ``raise_subcls`` to the tests helpers
`openURL` and ``CPWebCase.getPage`` to have finer control on
which exceptions can be raised.
* Add support for direct keywords on the calls (e.g. ``foo=bar``) on
the config file under Python 3.
* Add additional validation to determine if the process is running
as a daemon on ``cherrypy.process.plugins.SignalHandler`` to allow
the execution of the testsuite under CI tools.
- Add a 'nothing' strategy that never successfully generates values.
- sampled_from() and one_of() can both now be called with an empty argument
list, in which case they also never generate any values.
- one_of may now be called with a single argument that is a collection of
strategies as well as as varargs.
- Add a 'runner' strategy which returns the instance of the current test object
if there is one.
- 'Bundle' for RuleBasedStateMachine is now a normal(ish) strategy and can be
used as such.
- Tests using RuleBasedStateMachine should now shrink significantly better.
- Hypothesis now uses a pretty-printing library internally, compatible with
IPython's pretty printing protocol (actually using the same code). This may
improve the quality of output in some cases.
- As a 'phases' setting that allows more fine grained control over which parts
of the process Hypothesis runs
- Add a suppress_health_check setting which allows you to turn off specific
health checks in a fine grained manner.
- Fix a bug where lists of non fixed size would always draw one more element
than they included. This mostly didn't matter, but if would cause problems
with empty strategies or ones with side effects.
- Add a mechanism to the Django model generator to allow you to explicitly
request the default value (thanks to Jeremy Thurgood for this one).
New Features
- New pytest.mark.skip mark, which unconditionally skips marked tests.
- --doctest-glob may now be passed multiple times in the command-line.
- New -rp and -rP reporting options give the summary and full output of passing
tests, respectively.
- pytest.mark.xfail now has a strict option which makes XPASS tests to fail the
test suite, defaulting to False. There’s also a xfail_strict ini option that
can be used to configure it project-wise.
- Parser.addini now supports options of type bool.
- New ALLOW_BYTES doctest option strips b prefixes from byte strings in doctest
output (similar to ALLOW_UNICODE).
- give a hint on KeyboardInterrupt to use the –fulltrace option to show the
errors
- catch IndexError exceptions when getting exception source location. This
fixes pytest internal error for dynamically generated code (fixtures and
tests) where source lines are fake by intention
Changes
- Important: py.code has been merged into the pytest repository as
pytest._code. This decision was made because py.code had very few uses
outside pytest and the fact that it was in a different repository made it
difficult to fix bugs on its code in a timely manner. The team hopes with
this to be able to better refactor out and improve that code. This change
shouldn’t affect users, but it is useful to let users aware if they encounter
any strange behavior.
Keep in mind that the code for pytest._code is private and experimental, so
you definitely should not import it explicitly!
Please note that the original py.code is still available in pylib.
- pytest_enter_pdb now optionally receives the pytest config object.
- Removed code and documentation for Python 2.5 or lower versions, including
removal of the obsolete _pytest.assertion.oldinterpret module.
- Comparisons now always show up in full when CI or BUILD_NUMBER is found in
the environment, even when -vv isn’t used.
- --lf and --ff now support long names: --last-failed and --failed-first
respectively.
- Added expected exceptions to pytest.raises fail message
- Collection only displays progress (“collecting X items”) when in a terminal.
This avoids cluttering the output when using --color=yes to obtain colors in
CI integrations systems
Bug Fixes
- The -s and -c options should now work under xdist; Config.fromdictargs now
represents its input much more faithfully.
- support Python 3.5’s @ operator in assertion rewriting.
- Fix formatting utf-8 explanation messages.
- Fix traceback style docs to describe all of the available options
(auto/long/short/line/native/no), with auto being the default since v2.6.
- junit record_xml_property doesn’t allow multiple records with same name.
- Warn if using xmlconfig.file, self.loadZCML is the preferred option.
- Avoid false reports by suffixing an opening parenthesis on all methods.
- Add decorators from zope.interface and zope.component.
Due to the bugfix we can also remove the D001 suppression.
- The ``no_xvfb``-marker is now registered automatically so pytest doesn't fail
when run with ``--strict``.
- The ``xvfb`` fixture is now session-scoped.
- PropertyMock is now accessible from mocker.
- Fix regression using one of the assert_* methods in patched functions which
receive a parameter named method.
- Remove duplication from the environment section
- Dropped support for Python 3.2
- Indicated setup and teardown in report
- Fixed colour of errors in report
- Fix version parsing of py.test to work with py.test release candidates
- More general handling of the health check problem where things could fail
because of a cache miss - now one "free" example is generated before the start
of the health check run.
- Fix a bug where Hypothesis would error when running on Python 2.7.3 or earlier
because it was trying to pass a bytearray object to struct.unpack (which is
only supported since 2.7.4).
We used to use flake8-pep257 because docstrings claims no codes are ignorable
(which is wrong). However, that doesn't work with pydocstyle, so we had a
separate pydocstyle environment (and flake8-pep257 to check tests with relaxed
rules).
Now we only use flake8-docstrings + pydocstyle (which it switches to if it's
available, even though it still depends on pep257), and drop the pydocstyle tox
env.
As soon as flake8-docstrings is updated to drop the (unneeded) pep257
dependency, we can drop it as well.
This means we can now run things like running pylint --version without having
to set PYTHONPATH correctly now.
When using skip_install=true, the plugins wouldn't work as they need to import
qutebrowser.
We have to keep setting PYTHONPATH in run_pylint_on_tests.py, otherwise we get
this error I don't quite understand:
F: 1, 0: error while code parsing: Unable to load file
'/home/florian/proj/qutebrowser/git/__init__.py' ([Errno 2] No such
file or directory: '...') (parse-error)
(3.0.2: performance fix)
------------------
3.0.1 - 2016-02-18
------------------
* Fix a case where it was possible to trigger an "Unreachable" assertion when
running certain flaky stateful tests.
* Improve shrinking of large stateful tests by eliminating a case where it was
hard to delete early steps.
* Improve efficiency of drawing binary(min_size=n, max_size=n) significantly by
provide a custom implementation for fixed size blocks that can bypass a lot
of machinery.
* Set default home directory based on the current working directory at the
point Hypothesis is imported, not whenever the function first happens to be
called.
------------------
3.0.0 - 2016-02-17
------------------
Codename: This really should have been 2.1.
Externally this looks like a very small release. It has one small breaking change
that probably doesn't affect anyone at all (some behaviour that never really worked
correctly is now outright forbidden) but necessitated a major version bump and one
visible new feature.
Internally this is a complete rewrite. Almost nothing other than the public API is
the same.
New features:
* Addition of data() strategy which allows you to draw arbitrary data interactively
within the test.
* New "exploded" database format which allows you to more easily check the example
database into a source repository while supporting merging.
* Better management of how examples are saved in the database.
* Health checks will now raise as errors when they fail. It was too easy to have
the warnings be swallowed entirely.
New limitations:
* choices and streaming strategies may no longer be used with find(). Neither may
data() (this is the change that necessitated a major version bump).
Feature removal:
* The ForkingTestCase executor has gone away. It may return in some more working
form at a later date.
Performance improvements:
* A new model which allows flatmap, composite strategies and stateful testing to
perform *much* better. They should also be more reliable.
* Filtering may in some circumstances have improved significantly. This will
help especially in cases where you have lots of values with individual filters
on them, such as lists(x.filter(...)).
* Modest performance improvements to the general test runner by avoiding expensive
operations
In general your tests should have got faster. If they've instead got significantly
slower, I'm interested in hearing about it.
Data distribution:
The data distribution should have changed significantly. This may uncover bugs the
previous version missed. It may also miss bugs the previous version could have
uncovered. Hypothesis is now producing less strongly correlated data than it used
to, but the correlations are extended over more of the structure.
Shrinking:
Shrinking quality should have improved. In particular Hypothesis can now perform
simultaneous shrinking of separate examples within a single test (previously it
was only able to do this for elements of a single collection). In some cases
performance will have improved, in some cases it will have got worse but generally
shouldn't have by much.
Switched to a new changelog format (the one in http://keepachangelog.com/)
since it was contributed by Alexander Artemenko. Re-added a newline to support
old version of Python, as requested by azjps.
* Removed deprecated support for ``ssl_certificate`` and
``ssl_private_key`` attributes and implicit construction
of SSL adapter on Python 2 WSGI servers.
* Default SSL Adapter on Python 2 is the builtin SSL adapter,
matching Python 3 behavior.
* In proxy tool, defer to Host header for resolving the base if no base is
supplied.
- Fix file modes in archive
- Support forcing a platform tag using –plat-name on pure-Python wheels, as
well as nonstandard platform tags on non-pure wheels
- Add SOABI tags to platform-specific wheels built for Python 2.X
- Support reproducible wheel files, wheels that can be rebuilt and will hash to
the same values as previous builds
- Support for changes in keyring >= 8.0
- Use the file context manager when checking if dependency_links.txt is empty,
fixes problems building wheels under PyPy on Windows
- Don’t attempt to (recursively) create a build directory ending with ..
(invalid on all platforms, but code was only executed on Windows)
- Added the PyPA Code of Conduct
Major Updates
-------------
The project was renamed to pydocstyle and the new release will be 1.0.0!
New Features
------------
- Added support for Python 3.5.
- Classes nested inside classes are no longer considered private. Nested
classes are considered public if their names are not prepended with an
underscore and if their parent class is public, recursively.
- Added the D403 error code - "First word of the first line should be properly
capitalized". This new error is turned on by default.
- Added support for .pydocstylerc and as configuration file name.
Bug Fixes
---------
- Fixed an issue where a NameError was raised when parsing complex definitions
of __all__.
- Fixed a bug where D202 was falsely reported when a function with just a
docstring and no content was followed by a comment.
- Fixed wrong __all__ definition in main module.
- Fixed a bug where an AssertionError could occur when parsing __future__
imports.
- use predictable object resolution for monkeypatch
- allow for double nodeids in junitxml,
this was a regression failing plugins combinations like pytest-pep8 +
pytest-flakes
- Workaround for exception that occurs in pyreadline when using ``--pdb`` with
standard I/O capture enabled.
- Better error message in case the target of a ``monkeypatch`` call raises an
``ImportError``.
- monkeypatch calls (setattr, setenv, etc.) are now O(1).
- captured stdout and stderr are now properly displayed before entering pdb
when ``--pdb`` is used instead of being thrown away.
- pytest warnings emitted during ``pytest_terminal_summary`` are now properly
displayed.
- fixed internal UnicodeDecodeError when doctests contain unicode.
- Add captured stdout to jUnit XML report on setup error.
Unfortunately running coverage means our tests need more than a minute longer
to run.
We still run it in the following scenarios:
- Full 'tox' run
- On Travis CI on Linux
- On the buildbot on Archlinux
But not anymore in the following scenarios:
- When running 'tox -e py35' (or py34)
- On Travis CI on OS X
- On AppVeyor
- On the buildbot except on Archlinux
- allow for double nodeids in junitxml,
this was a regression failing plugins combinations like pytest-pep8 +
pytest-flakes
- Workaround for exception that occurs in pyreadline when using ``--pdb`` with
standard I/O capture enabled.
- Better error message in case the target of a ``monkeypatch`` call raises an
``ImportError``.
- monkeypatch calls (setattr, setenv, etc.) are now O(1).
- captured stdout and stderr are now properly displayed before entering pdb
when ``--pdb`` is used instead of being thrown away.
- pytest warnings emitted during ``pytest_terminal_summary`` are now properly
displayed.
- fixed internal UnicodeDecodeError when doctests contain unicode.
- Add captured stdout to jUnit XML report on setup error.