Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pin pyrsistent to latest version 0.20.0 #309

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

pyup-bot
Copy link
Collaborator

This PR pins pyrsistent to the latest release 0.20.0.

Changelog

0.20.0

* Fix 245, never introduce new nodes during discard.
* Fix 268, do not rely on well implemented __ne__ for keys in pmaps, instead do explicit inversion of equality
comparison when checking for inequality.
* Officially support Python 3.12.
* Officially drop support for Python 3.7.
* Fix 273, build more types of wheels. Thanks jams2 for this!
* Fix 282, add generic types to types. Thanks lukasK9999 for this!
* Fix 281, defaultdict can now be frozen. NB! This is a backwards incompatible fix since defaultdict was not
previously frozen.

0.19.3

* Fix 264, add wheels and official support for Python 3.11. Thanks hugovk for this!

0.19.2

* Fix 263, pmap regression in 0.19.1. Element access sometimes unreliable after insert.
Thanks mwchase for reporting this!

0.19.1

* Fix 159 (through PR 243). Pmap keys/values/items now behave more like the corresponding Python 3
methods on dicts. Previously they returned a materialized PVector holding the items, now they return
views instead. This is a slight backwards incompatibility compared to previous behaviour, hence stepping
version to 0.19. Thanks noahbenson for this!
* Fix 244, type for argument to PVector.delete missing. thanks dscrofts for this!
* Fix 249, rename perf test directory to avoid tripping up automatic discovery in more recent setuptools versions
* Fix 247, performance bug when setting elements in maps and adding elements to sets
* Fix 248, build pure Python wheels. This is used by some installers. Thanks andyreagan for this!
* Fix 254, 258, support manylinux_2014_aarch64 wheels. Thanks Aaron-Durant for this!

0.18.1

* Add universal wheels for MacOS, thanks ntamas for this!
* Add support for Python 3.10, thanks hugovk for this!
* Fix 236 compilation errors under Python 3.10.
* Drop official support for Python 3.6 since it's EOL since 2021-12-23.
* Fix 238, failing doc tests on Python 3.11, thanks musicinmybrain for this!

0.18.0

* Fix 209 Update freeze recurse into pyrsistent data structures and thaw to recurse into lists and dicts,
Thanks phil-arh for this!
NB! This is a backwards incompatible change! To keep the old behaviour pass `strict=False` to freeze and thaw.
* Fix 226, stop using deprecated exception.message. Thanks hexagonrecursion for this!
* Fix 211, add union operator to persistent maps. Thanks bowbahdoe for this!
* Fix 194, declare build dependencies through pyproject.toml. Thanks jaraco for this!
* Officially drop Python 3.5 support.
* Fix 223, release wheels for all major platforms. Thanks johnthagen for helping out with this!
* Fix 221, KeyError obscured by TypeError if key is a tuple. Thanks ganwell for this!
* Fix LICENSE file name spelling. Thanks ndowens and barentsen for this!
* Fix 216, add abstractmethod decorator for CheckedType and ABCMeta for _CheckedTypeMeta. Thanks ss18 for this!
* Fix 228, rename example classes in tests to avoid name clashes with pytest.

0.17.3

* Fix 208, release v0.17.3 with proper meta data requiring Python >= 3.5.

0.17.1

* Restrict package to Python >= 3.5 to not break unpinned Python 2 dependencies. Thanks vphilippon
for this!

0.17.0 (yanked for Python 2 compatibility), 2020-09-08
* Remove Python 2 support code. This includes dropping some compatibility code and the dependency on
six. Thanks djailla for this.
* Fix 200, python 3 exception chaining. This is a minor backwards incompatibility, hence stepping
to 0.17.0. Thanks cool-RR for this!

0.16.1

* Add "python_requires >= 2.7" to setup.py in preparation for Python 2.7 incompatible updates
in 0.17. This is the last version of pyrsistent that can be used with Python 2.7.

0.17.2 (yanked awaiting proper fix for Python 3 req), 2020-09-09
* Same as 0.17.1 released with more recent version of setuptools to get proper meta data for in place.

0.16.0

* No major updates but Python 2 support no longer guaranteed.
* Fix 192, 'ignore_extra' for 'pvector_field'. Thanks ss18 for this!
* Fix 191, include LICENCE in distribution. Thanks johnthagen for this!
* Fix 190, minor MyPy errors. Thanks Qhesz for this!

0.15.7

* NOTE! This is the last version of Pyrsistent that officially supports Python 2.X!
* Fix 186, type errors with more recent versions of MyPy. Thanks qhesz for this!
* Build and test on ARM during CI. Thanks ossdev07 for this!
* Set absolute imports for python2 compatibility. Thanks michalvi for this!

0.15.6

* Fix 182 moduleinit name clash.

0.15.5

* Fix 179 Fixed 'ignore_extra' factory parameter for pvector. Thanks ss18 for this!

0.15.4

* Fix 174, fix a GC traversal bug in pvector evolver C extension. Thanks till-varoquaux for finding and fixing this!
* Fix 175, pytest 5 compatibility, this is a quick fix, some more work is needed to get coverage working etc.

0.15.3

* Fix 172, catch all exceptions during extension build to reduce chance of corner cases that prevents installation.
* Fix 171, in PVector equality comparison don's assume that other object has a length, check before calling len.
* Fix 168, write warning about failing build of C extension directly to stderr to avoid that pip silences it.
* Fix 155, update PMapEvolver type stub to better reflect implementation.

0.15.2

* Fix 166, Propagate 'ignore_extra' param in hierarchy. Thanks ss18 for this!
* Fix 167, thaw typing. Thanks nattofriends for this!
* Fix 154, not possible to insert empty pmap as leaf node with transform.

0.15.1

* Fix 163 installation broken on Python 2 because of fix of 161, thanks vphilippon for this! Sorry for the
inconvenience.

0.15.0

* Python 3.4 is no longer officially supported since it is EOL since 2019-03-18.
* Fix 157, major improvements to type hints. Thanks je-l for working on this and nattofriend for reviewing the PR!
* Fix 161, installation fails on some Windows platforms because fallback to Python pvector does not work.
Thanks MaxTaggart for fixing and verifying this!

0.14.11

* Fix 152 Don't use __builtin_popcount, this hopefully fixes 147 Error in pvectorc.cp37-win_amd64.pyd file, as well.
Thanks benrg for this!
* Fix 151 Fix compatibility for hypothesis 4. Thanks felixonmars for this!

0.14.10

* Fix 148, only require pytest-runner if running tests. Thanks ccorbacho for this!

0.14.9

* Fix 144, Compile pvectormodule.c on windows. Thanks ganwell for this!

0.14.8

* Fix 142, Improve type stubs. Thanks arxanas for this!

0.14.7

* Fix 102, add PEP 561 type annotation stubs for most pyrsistent types. Thanks nattofriends for this!

0.14.6

* Fix 135, Type classes for Python 3 type annotations of pyrsistent types. Thanks nattofriends for this!
* Fix 128, Allow PClass and PRecord to ignore input parameters to constructor that are not part of the spec
instead of blowing up with a type error. Thanks agberk for this!

0.14.5

* Fix 137, deprecation warnings in Python 3.7. Thanks thombashi for this!
* Fix 129, building via setuptools and setup.py. Thanks galuszkak for this!

0.14.4

* Fix 133, minor Python 3.7 compatibility issue. Pyrsistent is now officially Python 3.7 compliant!

0.14.3

* Fix 123 regression where type names break sequence fields. Thanks doozr for this!
* Fix 124 using the class name to make AttributeError on __getattr__ more informative for PRecords.
Thanks neilvyas for this!
* Fix 125 how fields handle type arguments. Thanks neilvyas for this!

0.14.2

* Fix 121, regression in PClass.set() introduced in 0.14.1.

0.14.1

* Equality check performance improvements for pvectors and pmaps. Thanks dtomas for this!
* Avoid calling factories multiple times for fields that do not change, see PR 120 for for
details. Thanks teepark for this!

0.14.0

* Fix 117, pmap now accepts iterators as input to constructor. Thanks Julian for this!
* Drop support for Python 2.6. Nothing has been done in this release that will explicitly
break pyrsistent for 2.6 but it will not be considered moving forward.  Dropping 2.6
support is the reason for stepping the second decimal instead of the third.

0.13.0

* Fix 113, Skip field factories when loading pickled objects. There is a
minor backwards incompatibilty in the behaviour because of this. Thanks
teepark for fi this!
* Fix 116, negative indexing for pdeques. Thanks Julian for this!

0.12.3

* Fix 83, make it possible to use Python 3 enums as field type without having to wrap it in
a list or tuple. Thanks douglas-treadwell for this!

0.12.2

* Fix 108, now possible to use the values in predicates to transform. Thanks exarkus for this!
* Fix 107, support multiple level of __invariant__ inheritance. Thanks exarkus for this!

0.12.1

* Fix 97, initialize CheckedPVector from iterator-
* Fix 97, cache hash value on PMap. Thanks sarum90 for this!

0.12.0

* Fix 87, add function get_in() for access to elements in deeply nested structures.
* Fix 91, add method update() to pset and pbag.
* Fix 92, incorrect discard of elements in transform on pvector
* This is a release candidate for 1.0 as I now consider pyrsistent fairly stable.

0.11.13

* Fix 84, pvector segfault in CPython 3 when repr of contained object raises Exception.
* Update README to cover for issue described in 83.

0.11.12

* Minor modifications of tests to allow testing as requested in 79 and 80.
* Also run CI tests under python 3.5

0.11.11

* 78, include tests in pypi dist.

0.11.10

despite only stepping the patch version number. See below.

* Implement 74, attribute access on PClass evolver
* Implement 75, lazily evaluated invariant messages by providing a
callable with no arguments.
* Initial values on fields can now be evaluated on object creation
by providing a callable with no arguments.

NOTE! If you previously had callables as initial values this change means that those
      will be called upon object creation which may not be what you want. As
      a temporary workaround a callable returning a callable can be used. This
      feature and the concept of initial values will likely change slightly in the future.
      See 77 and and 76 for more information.

0.11.9

* Added PVector.remove(), thanks radix for initiating this!

0.11.8

* Fix 66, UnicodeDecodeError when doing pip install in environments with ascii encoding as default.
Thanks foolswood!
* Implement support for multiple types in pmap_field(), pvector_field() and pset_field(). Thanks itamarst!

0.11.7

* Fix 52, occasional SEGFAULTs due to misplaced call to PyObject_GC_Track. Thanks jkbjh for this!
* Fix 42, complete support for delete. Now also on the C-implementation of the PVectorEvolver.
Thanks itamarst for contributing a whole bunch of Hypothesis test cases covering the evolver operations!

0.11.6

* Add +, -, & and | operations to PBag. Thanks Futrell for this!

0.11.5

* Fix bug introduced in 0.11.4 that prevented multi level inheritance from PClass.
* Make PClassMeta public for friendlier subclassing

0.11.4

* Fix 59, make it possible to create weakrefs to all collection types.
Thanks itamarst for reporting it.
* Fix 58, add __str__ to InvariantException. Thanks tomprince for reporting it.

0.11.3

* Fix 57, support pickling of PClasses and PRecords using pmap_field, pvector_field, and pset_field.
 Thanks radix for reporting this and submitting a fix for it!

0.11.2

* Fix bug causing potential element loss when reallocating PMap. Thanks to jml for finding
 this and submitting a PR with a fix!
* Removed python 3.2 test build from Travis. There is nothing breaking 3.2 compatibility in this
 release but there will be no effort moving forward to keep the 3.2 compatibility.

0.11.1

* Fix 51, PClass.set() broken when used with string+value argument.
* 50, make it possible to specify more than one assertion in an invariant
* 48, make it possible to make recursive type references by using a string
 as type specification.

0.11.0

* 42, delete() function added to PVector to allow deletion of elements by index
 and range. Will perform a full copy of the vector, no structural sharing.
 Thanks radix for helping out with this one!
* Fix 39, explicitly disallow ordering for PMap and PBag, Python 3 style
* Fix 37, PMap.values()/keys()/items() now returns PVectors instead of lists

0.10.3

* Fix 40, make it possible to disable the C extension by setting the
 PYRSISTENT_NO_C_EXTENSION environment variable.

0.10.2

* Fix 38, construction from serialized object for pvector/pset/pmap fields.

0.10.1

* Fix broken README.rst

0.9.4

* Fix 34, PVector now compares against built in list type

0.9.3

* Rename pclass back to immutable and deprecate the usage of the pclass function. PClass will be used by
 a new, different type in upcoming releases.
* Documentation strings for the exceptions introduced in 0.9.2.

0.9.2

* More informative type errors from checked types, issue 30
* Support multiple optional types, issue 28

0.9.1

* Multi level serialization for checked types

0.9.0

* Checked types, checked versions of PVector, PMap, PSet that support type and invariant specification.
 Currently lacking proper documentation but I'm working on it.
* set_in() on PVector and PMap are now deprecated and will be removed in the next release.
 Use transform() instead. set_in() has been updated to use transform() for this release
 this means that some corner error cases behave slightly different than before.
* Refactoring of the PVector to unify the type. Should not have any user impact as long as
 only the public interface of pyrsistent has been used. PVector is now an abstract base class
 with which the different implementations are registered.
* Evolvers have been updated to return themselves for evolving operations to allow function chaining.
* Richer exception messages for KeyErrors and IndexErrors specifying the key/index that caused the failure.
 Thanks radix for this.
* Missing attribute on PMaps when accessing with dot-notation now raises an AttributeError instead of a
 KeyError. Issue 21.
* New function decorator mutant that freezes all input arguments to a function and the return value.
* Add __version__ to pyrsistent.py. Issue 23.
* Fix pickling for pset. Issue 24.

0.8.0

* New type PRecord. Subtype of PMap that allows explicit, declarative field specification. Thanks boxed
 for inspiration!
* Efficient transformations of arbitrary complexity on PMap and PVector. Thanks boxed for inspiration!
* Breaking change to the evolver interface. What used to be .pvector(), .pmap() and .pset()
 on the different evolvers has now been unified so that all evolvers have one method .persistent()
 to produce the persistent counterpart. Sorry for any inconvenience.
* Removed the tests directory from the package.
* PMap and PSet now contains a copy-function to closer mimic the interface of the dict and set. These
 functions will simply return a reference to self.
* Removed deprecated alias 'immutable' from pclass.

0.7.1

* Fixes 14 where a file executed (unexpectedly) during installation was not python 3 compatible.

v0.7.0, 2015-01-04, No 1.0, instead a bunch of new stuff and one API breaking change to PMap.remove().
* Evolvers for pvector, pmap and pset to allow simple and efficient updates of multiple elements
 in the collection. See the documentation for a closer description.
* New method mset on pvector to update multiple values in one operation
* Remove deprecated methods merge and merge_with on PMap
* Change behavior of PMap.remove, it will now raise a KeyError if the element is not present.
 New method PMap.discard will instead return the original pmap if the element is not present.
 This aligns the PMap with how things are done in the PSet and is closer to the behavior of the
 built in counterparts.

0.6.3

* Python 2.6 support, thanks wrmsr!
* PMap.merge/merge_with renamed to update/update_with. merge/merge_with remains but will be
 removed for 1.0.
* This is a release candidate for 1.0! Please be aware that PMap.merge/merge_with and immutable()
 will be removed for 1.0.

0.6.2

* Fix typo causing the pure python vector to be used even if the C implementation was
 available. Thanks zerc for finding it!

0.6.1

* Renamed 'immutable' to 'pclass' for consistency but left immutable for compatibility.

0.6.0

* New data structure, persistent linked list
* New data structure, persistent double ended queue

0.5.0

* New data structure, persistent bag / multiset
* New functions freeze and thaw to recursively convert between python
 built in data types and corresponding pyrsistent data types.
* All data structures can now be pickled
* New function merge_in on persistent map which allows a user
 supplied function to implement the merge strategy.

0.4.0

* Full Python 3 support.
* Immutable object implemented.
* Bug fixes in PVector.__repr__() and PMap.__hash__() and index check of PVector.
* Repr changed to be fully cut and paste compatible
* Changed assoc() -> set(), assoc_in() -> set_in(), massoc() -> mset().
 Sorry for the API breaking change but I think those names are more pythonic.
* Improved documentation.

0.3.1

* assoc() on PSet renamed back to add()

0.3.0

* Full Sequence protocol support for PVector
* Full Mapping protocol support for PMap
* Full Set protocol support for PSet
* assoc_in() support for both PMap and PVector
* merge() support for PMap
* Performance improvements to the PVector C extension speed up allocation

0.2.1

* Supply the tests with the distribution

0.2.0

* New C extension with an optimized version of the persistent vector
* Updated API slightly

0.1.0

* Initial release.


TODO (in no particular order)
-----------------------------
- Versioned data structure where the different versions can be accessed by index?
- Ordered sets and maps
- A good performance measurement suite
Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant