Release Release 2.5.0 · pythonnet/pythonnet
⚠️ This release will be the last one supporting Python 2 and non-.NET-Standard builds.
This version improves performance on benchmarks significantly compared to 2.3 and includes various additions and improvements to the library.
Added
- Automatic NuGet package generation in appveyor and local builds
- Function that sets
Py_NoSiteFlagto 1. - Support for Jetson Nano.
- Support for
__len__for .NET classes that implement ICollection PyExportattribute to hide .NET types from PythonPythonException.Formatmethod to format exceptions the same as
traceback.format_exceptionRuntime.Noneto be able to passNoneas parameter into Python from .NETPyObject.IsNone()to check if a Python object is None in .NET.- Support for Python 3.8
- Codecs as the designated way to handle automatic conversions between
.NET and Python types
Changed
- Added argument types information to "No method matches given arguments" message
- Moved wheel import in setup.py inside of a try/except to prevent pip collection failures
- Removes
PyLong_GetMaxandPyClass_Newwhen targetting Python3 - Improved performance of calls from Python to C#
- Added support for converting python iterators to C# arrays
- Changed usage of the obsolete function
GetDelegateForFunctionPointer(IntPtr, Type)to
GetDelegateForFunctionPointer<TDelegate>(IntPtr) - When calling C# from Python, enable passing argument of any type to a
parameter of C# typeobjectby wrapping it intoPyObjectinstance.
([#881][i881]) - Added support for kwarg parameters when calling .NET methods from Python
- Changed method for finding MSBuild using vswhere
- Reworked
Finalizer. Now objects drop into its queue upon finalization,
which is periodically drained when new objects are created. - Marked
Runtime.OperatingSystemNameandRuntime.MachineNameas
Obsolete, should never have beenpublicin the first place. They also
don't necessarily return a result that matches theplatformmodule's. - Unconditionally depend on
pycparserfor the interop module generation
Fixed
- Fixed runtime that fails loading when using pythonnet in an environment
together with Nuitka - Fixes bug where delegates get casts (dotnetcore)
- Determine size of interpreter longs at runtime
- Handling exceptions ocurred in ModuleObject's getattribute
- Fill
__classcell__correctly for Python subclasses of .NET types - Fixed issue with params methods that are not passed an array.
- Use UTF8 to encode strings passed to
PyRun_Stringon Python 3
Acknowledgements
These authors have contributed to this release: