@@ -13,6 +13,7 @@ This document follows the conventions laid out in [Keep a CHANGELOG][].
1313
1414### Fixed
1515
16+ - Fixed RecursionError for reverse operators on C# operable types from python. See #2240
1617
1718## [ 3.0.3] ( https://github.com/pythonnet/pythonnet/releases/tag/v3.0.3 ) - 2023-10-11
1819
@@ -50,7 +51,6 @@ This document follows the conventions laid out in [Keep a CHANGELOG][].
5051- Fixed ` PyInt ` conversion to ` BigInteger ` and ` System.String ` produced incorrect result for values between 128 and 255.
5152- Fixed implementing a generic interface with a Python class
5253
53-
5454## [ 3.0.0] ( https://github.com/pythonnet/pythonnet/releases/tag/v3.0.0 ) - 2022-09-29
5555
5656### Added
@@ -61,61 +61,63 @@ This document follows the conventions laid out in [Keep a CHANGELOG][].
6161- Ability to implement delegates with ` ref ` and ` out ` parameters in Python, by returning the modified parameter values in a tuple. ([ #1355 ] [ i1355 ] )
6262- Ability to override .NET methods that have ` out ` or ` ref ` in Python by returning the modified parameter values in a tuple. ([ #1481 ] [ i1481 ] )
6363- ` PyType ` - a wrapper for Python type objects, that also permits creating new heap types from ` TypeSpec `
64- - Improved exception handling:
65- * exceptions can now be converted with codecs
66- * ` InnerException ` and ` __cause__ ` are propagated properly
64+ - Improved exception handling:
65+
66+ * exceptions can now be converted with codecs
67+ * ` InnerException ` and ` __cause__ ` are propagated properly
68+
6769- ` __name__ ` and ` __signature__ ` to reflected .NET methods
6870- .NET collection types now implement standard Python collection interfaces from ` collections.abc ` .
69- See [ Mixins/collections.py] ( src/runtime/Mixins/collections.py ) .
71+ See [ Mixins/collections.py] ( src/runtime/Mixins/collections.py ) .
7072- you can cast objects to generic .NET interfaces without specifying generic arguments as long as there is no ambiguity.
7173- .NET arrays implement Python buffer protocol
7274- Python integer interoperability with ` System.Numerics.BigInteger `
7375- Python.NET will correctly resolve .NET methods, that accept ` PyList ` , ` PyInt ` ,
74- and other ` PyObject ` derived types when called from Python.
76+ and other ` PyObject ` derived types when called from Python.
7577- .NET classes, that have ` __call__ ` method are callable from Python
7678- ` PyIterable ` type, that wraps any iterable object in Python
7779- ` PythonEngine ` properties for supported Python versions: ` MinSupportedVersion ` , ` MaxSupportedVersion ` , and ` IsSupportedVersion `
7880- The runtime that is loaded on ` import clr ` can now be configured via environment variables
7981
80-
8182### Changed
83+
8284- Drop support for Python 2, 3.4, 3.5, and 3.6
8385- ` wchar_t ` size aka ` Runtime.UCS ` is now determined at runtime
8486- ` clr.AddReference ` may now throw errors besides ` FileNotFoundException ` , that provide more
85- details about the cause of the failure
87+ details about the cause of the failure
8688- ` clr.AddReference ` no longer adds ".dll" implicitly
8789- ` PyIter(PyObject) ` constructor replaced with static ` PyIter.GetIter(PyObject) ` method
8890- Python runtime can no longer be shut down if the Python error indicator is set, as it would have unpredictable behavior
8991- BREAKING: Return values from .NET methods that return an interface are now automatically
90- wrapped in that interface. This is a breaking change for users that rely on being
91- able to access members that are part of the implementation class, but not the
92- interface. Use the new ` __implementation__ ` or ` __raw_implementation__ ` properties to
93- if you need to "downcast" to the implementation class.
92+ wrapped in that interface. This is a breaking change for users that rely on being
93+ able to access members that are part of the implementation class, but not the
94+ interface. Use the new ` __implementation__ ` or ` __raw_implementation__ ` properties to
95+ if you need to "downcast" to the implementation class.
9496- BREAKING: ` == ` and ` != ` operators on ` PyObject ` instances now use Python comparison
95- (previously was equivalent to ` object.ReferenceEquals(,) ` )
97+ (previously was equivalent to ` object.ReferenceEquals(,) ` )
9698- BREAKING: Parameters marked with ` ParameterAttributes.Out ` are no longer returned in addition
97- to the regular method return value (unless they are passed with ` ref ` or ` out ` keyword).
98- - BREAKING: Drop support for the long-deprecated CLR.* prefix.
99+ to the regular method return value (unless they are passed with ` ref ` or ` out ` keyword).
100+ - BREAKING: Drop support for the long-deprecated CLR.\ * prefix.
99101- ` PyObject ` now implements ` IEnumerable<PyObject> ` in addition to ` IEnumerable `
100102- floating point values passed from Python are no longer silently truncated
101- when .NET expects an integer [ #1342 ] [ i1342 ]
103+ when .NET expects an integer [ #1342 ] [ i1342 ]
102104- More specific error messages for method argument mismatch
103105- members of ` PyObject ` inherited from ` System.Object and ` DynamicObject` now autoacquire GIL
104106- BREAKING: when inheriting from .NET types in Python if you override ` __init__ ` you
105- must explicitly call base constructor using ` super().__init__(.....) ` . Not doing so will lead
106- to undefined behavior.
107+ must explicitly call base constructor using ` super().__init__(.....) ` . Not doing so will lead
108+ to undefined behavior.
107109- BREAKING: most ` PyScope ` methods will never return ` null ` . Instead, ` PyObject ` ` None ` will be returned.
108110- BREAKING: ` PyScope ` was renamed to ` PyModule `
109111- BREAKING: Methods with ` ref ` or ` out ` parameters and void return type return a tuple of only the ` ref ` and ` out ` parameters.
110112- BREAKING: to call Python from .NET ` Runtime.PythonDLL ` property must be set to Python DLL name
111- or the DLL must be loaded in advance. This must be done before calling any other Python.NET functions.
113+ or the DLL must be loaded in advance. This must be done before calling any other Python.NET functions.
112114- BREAKING: ` PyObject.Length() ` now raises a ` PythonException ` when object does not support a concept of length.
113115- BREAKING: disabled implicit conversion from C# enums to Python ` int ` and back.
114- One must now either use enum members (e.g. ` MyEnum.Option ` ), or use enum constructor
115- (e.g. ` MyEnum(42) ` or ` MyEnum(42, True) ` when ` MyEnum ` does not have a member with value 42).
116+ One must now either use enum members (e.g. ` MyEnum.Option ` ), or use enum constructor
117+ (e.g. ` MyEnum(42) ` or ` MyEnum(42, True) ` when ` MyEnum ` does not have a member with value 42).
116118- BREAKING: disabled implicit conversion from Python objects implementing sequence protocol to
117- .NET arrays when the target .NET type is ` System.Object ` . The conversion is still attempted when the
118- target type is a ` System.Array ` .
119+ .NET arrays when the target .NET type is ` System.Object ` . The conversion is still attempted when the
120+ target type is a ` System.Array ` .
119121- Sign Runtime DLL with a strong name
120122- Implement loading through ` clr_loader ` instead of the included ` ClrModule ` , enables
121123 support for .NET Core
@@ -125,23 +127,23 @@ target type is a `System.Array`.
125127- Replaced the old ` __import__ ` hook hack with a PEP302-style Meta Path Loader
126128- BREAKING: Names of .NET types (e.g. ` str(__class__) ` ) changed to better support generic types
127129- BREAKING: overload resolution will no longer prefer basic types. Instead, first matching overload will
128- be chosen.
130+ be chosen.
129131- BREAKING: acquiring GIL using ` Py.GIL ` no longer forces ` PythonEngine ` to initialize
130132- BREAKING: ` Exec ` and ` Eval ` from ` PythonEngine ` no longer accept raw pointers.
131133- BREAKING: .NET collections and arrays are no longer automatically converted to
132- Python collections. Instead, they implement standard Python
133- collection interfaces from ` collections.abc ` .
134- See [ Mixins/collections.py] ( src/runtime/Mixins/collections.py ) .
134+ Python collections. Instead, they implement standard Python
135+ collection interfaces from ` collections.abc ` .
136+ See [ Mixins/collections.py] ( src/runtime/Mixins/collections.py ) .
135137- BREAKING: When trying to convert Python ` int ` to ` System.Object ` , result will
136- be of type ` PyInt ` instead of ` System.Int32 ` due to possible loss of information.
137- Python ` float ` will continue to be converted to ` System.Double ` .
138+ be of type ` PyInt ` instead of ` System.Int32 ` due to possible loss of information.
139+ Python ` float ` will continue to be converted to ` System.Double ` .
138140- BREAKING: Python.NET will no longer implicitly convert types like ` numpy.float64 ` , that implement ` __float__ ` to
139- ` System.Single ` and ` System.Double ` . An explicit conversion is required on Python or .NET side.
141+ ` System.Single ` and ` System.Double ` . An explicit conversion is required on Python or .NET side.
140142- BREAKING: ` PyObject.GetHashCode ` can fail.
141143- BREAKING: Python.NET will no longer implicitly convert any Python object to ` System.Boolean ` .
142144- BREAKING: ` PyObject.GetAttr(name, default) ` now only ignores ` AttributeError ` (previously ignored all exceptions).
143145- BREAKING: ` PyObject ` no longer implements ` IEnumerable<PyObject> ` .
144- Instead, ` PyIterable ` does that.
146+ Instead, ` PyIterable ` does that.
145147- BREAKING: ` IPyObjectDecoder.CanDecode ` ` objectType ` parameter type changed from ` PyObject ` to ` PyType `
146148
147149### Fixed
@@ -173,18 +175,19 @@ Instead, `PyIterable` does that.
173175### Removed
174176
175177- ` ShutdownMode ` has been removed. The only shutdown mode supported now is an equivalent of ` ShutdownMode.Reload ` .
176- There is no need to specify it.
178+ There is no need to specify it.
177179- implicit assembly loading (you have to explicitly ` clr.AddReference ` before doing import)
178180- messages in ` PythonException ` no longer start with exception type
179181- ` PyScopeManager ` , ` PyScopeException ` , ` PyScope ` (use ` PyModule ` instead)
180182- support for .NET Framework 4.0-4.6; Mono before 5.4. Python.NET now requires .NET Standard 2.0
181- (see [ the matrix] ( https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support ) )
183+ (see [ the matrix] ( https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support ) )
182184
183185## [ 2.5.2] ( https://github.com/pythonnet/pythonnet/releases/tag/v2.5.2 ) - 2021-02-05
184186
185187Bugfix release.
186188
187189### Fixed
190+
188191- Fix ` object[] ` parameters taking precedence when should not in overload resolution
189192- Empty parameter names (as can be generated from F#) do not cause crashes
190193
@@ -194,8 +197,8 @@ Bugfix release.
194197
195198### Fixed
196199
197- - Fix incorrect dereference of wrapper object in ` tp_repr ` , which may result in a program crash
198- - Fix incorrect dereference in params array handling
200+ - Fix incorrect dereference of wrapper object in ` tp_repr ` , which may result in a program crash
201+ - Fix incorrect dereference in params array handling
199202
200203## [ 2.5.0] ( https://github.com/pythonnet/pythonnet/releases/tag/v2.5.0 ) - 2020-06-14
201204
@@ -302,7 +305,6 @@ This version improves performance on benchmarks significantly compared to 2.3.
302305- Fix spurious assembly loading exceptions from private types ([ #703 ] [ i703 ] )
303306- Fix inheritance of non-abstract base methods ([ #755 ] [ i755 ] )
304307
305-
306308## [ 2.3.0] [ ] - 2017-03-11
307309
308310### Added
@@ -839,25 +841,15 @@ This version improves performance on benchmarks significantly compared to 2.3.
839841- Initial (mostly) working experimental release.
840842
841843[ keep a changelog ] : http://keepachangelog.com/
842-
843844[ semantic versioning ] : http://semver.org/
844-
845845[ unreleased ] : ../../compare/v3.0.1...HEAD
846-
847846[ 2.3.0 ] : ../../compare/v2.2.2...v2.3.0
848-
849847[ 2.2.2 ] : ../../compare/v2.2.1...v2.2.2
850-
851848[ 2.2.1 ] : ../../compare/v2.2.0-dev1...v2.2.1
852-
853849[ 2.2.0-dev1 ] : ../../compare/v2.1.0...v2.2.0-dev1
854-
855850[ 2.1.0 ] : ../../compare/v2.0.0...v2.1.0
856-
857851[ 2.0.0 ] : ../../compare/1.0...v2.0.0
858-
859852[ 1.0.0 ] : https://github.com/pythonnet/pythonnet/releases/tag/1.0
860-
861853[ i714 ] : https://github.com/pythonnet/pythonnet/issues/714
862854[ i608 ] : https://github.com/pythonnet/pythonnet/issues/608
863855[ i443 ] : https://github.com/pythonnet/pythonnet/issues/443
0 commit comments