The Kivy team and contributors to the PyJNIus project are happy to announce
the release of PyJNIus 1.3.0.
PyJNIus is a library allowing to use Java classes in CPython, by using the
Java Native Interface, and reflection, it works on desktop (Windows, OSX,
Linux) and Android. Java 8 to 12 are supported.
This release fixes a few important issues, and provides new features, detailed
below.
This release is the last minor version to support Python2, patch version might
be released if important issues are discovered shortly after the release, but
we believe the world should now largely have moved on from Python2, and there
is an opportunity to simplify the implementation by removing code handling it
specifically, and taking advantage of Python3 features more.
[Full Changelog](
https://github.com/kivy/pyjnius/compare/1.2.1...1.3.0)
**Implemented enhancements:**
- [\#483](
https://github.com/kivy/pyjnius/pull/483)/[\#489](https://github.com/kivy/pyjnius/pull/489) allow passing a `signature` argument to
constructors, to force selection of the desired one
- [\#497](
https://github.com/kivy/pyjnius/pull/497)/[\#506](https://github.com/kivy/pyjnius/pull/506)/[\#507](https://github.com/kivy/pyjnius/pull/507)
support for more "dunder" methods/protocols on compatible interfaces than just `__len__`, and allow users to provide their own.
- [\#500](
https://github.com/kivy/pyjnius/pull/500)[\#522](https://github.com/kivy/pyjnius/pull/522) allow ignoring private methods and fields in
autoclass (both default to False)
- [\#503](
https://github.com/kivy/pyjnius/pull/503) auto detect java_home on OSX, using `/usr/libexec/java_home` (if JAVA_HOME is not declared)
- [\#514](
https://github.com/kivy/pyjnius/pull/514) writing to static fields (and fix reading from them)
- [\#517](
https://github.com/kivy/pyjnius/pull/517) make signature exceptions more useful
- [\#502](
https://github.com/kivy/pyjnius/pull/502) provide a stacktrace for where JVM was started.
- [\#523](
https://github.com/kivy/pyjnius/pull/523) expose the class's class attribute
- [\#524](
https://github.com/kivy/pyjnius/pull/524) fix handling of Java chars > 256 in Python3
- [\#519](
https://github.com/kivy/pyjnius/pull/519) Always show the exception name
**Fixed bugs:**
- [\#481](
https://github.com/kivy/pyjnius/pull/481) wrong use of strip on JRE path
- [\#465](
https://github.com/kivy/pyjnius/pull/465) correct reflection to avoid missing any methods from parent classes or interfaces
- [\#508](
https://github.com/kivy/pyjnius/pull/508) don't had error details with a custom exception when java class is not found
- [\#510](
https://github.com/kivy/pyjnius/pull/510) add missing references to .pxi files in setup.py, speeding up recompilation
- [\#518](
https://github.com/kivy/pyjnius/pull/518) ensure autoclass prefers methods over properties
- [\#520](
https://github.com/kivy/pyjnius/pull/520) improved discovery of libjvm.so + provide a workaround if it doesn't work
**Documentation**
- [\#478](
https://github.com/kivy/pyjnius/pull/478) document automatic Thread detach feature
- [\#512](
https://github.com/kivy/pyjnius/pull/512) document the requirement to keep reference to object/functions passed to java, for as long as it
might use them
- [\#521](
https://github.com/kivy/pyjnius/pull/521) fix inheritance in example
Many thanks to the contributors who allowed this release to happen.
The release is available on
https://pypi.org/projects/pyjnius and on github at
https://github.com/kivy/pyjnius/releases/tag/1.3.0.