* Drop Python 2.7
The tooling situation around Python 2 has deteriorate to such a degree that
upholding compatibility is not tenable anymore for a volunteer-run project.
Signed-off-by: Hynek Schlawack <hs@ox.cx>
* Add newsfragment
* Run Python 3.5 under coverage to make up for Python 2.7
* Wait for py35 in parallel
* Remove fullmatch kludge
* Remove Python 2-specific code
* Revert empty slot test
Also disable pyupgrade on that file.
Signed-off-by: Hynek Schlawack <hs@ox.cx>
* We DO run under 3.5
* Remove __qualname__ workarounds
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Update changelog.d/936.breaking.rst
Co-authored-by: Tin Tvrtković <tinchester@gmail.com>
* Compare methods using is
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tin Tvrtković <tinchester@gmail.com>
* Ease Hypothesis shrinking
This is a tiny performance improvement for shrinking.
Unconditionally drawing and conditionally *using* these boolean flags minimises the impact of mutating other parts of an input on the structure here, which in turn means more attempts will be valid.
* Refactor Hypothesis strategy
Using the composite decorator allows for a much clearer imperative description of how the class is constructed.
* Split cmp into eq and order
Fixes#170
* Fix tests on old pypy3 versions
Old as in: currently on AP.
* Fix issue number and clarify newsfragment
* Clarify behavior and interaction between cmp/eq/order
* This sounds better
* Address Julian's review comments
* Missed a cmp
* Test the behavior of Attribute.cmp
* Make test more idiomatic
* Explain assumptions
* Clarify comment
* Grammar
* One more cmp!
* Add weakref parameter to attr.s()
#325
* Add weakref to simple_classes() strategy
* Rename changelog file with actual PR (420.change.rst)
* Add test_weakref_does_not_add_a_field()
* Add docstrings to new weakref tests
* Add missing blank line
* Correct weakref handling of __weakref__ attributes or an inherrited slot
* Correct typos and terms
* Rename to weakref_slot
* Parametrize more tests against weakref_slot True/False to expose trouble
* Check if __weakref__ has been inherited via a __dict__
* Correct copy/pasted comment
* Change weakref_slot default to True
* Tidy and correct weakref -> weakref_slot