Chaquopy is now open-source

Posted on

I’m delighted to announce that, thanks to support from Anaconda, Chaquopy is now free and open-source. The SDK’s full source code is available on GitHub under the MIT license.

The first open-source version is 12.0.1, which was released today. Apart from removing the license restrictions, it’s identical to version 12.0.0.

If you’re using an older version of Chaquopy, see here for advice.

Chaquopy version 12.0.0

Posted on

Changes:

  • Android Gradle plugin version 7.2 is now supported (#613), and version 4.0 is no longer supported.
  • Update to Python version 3.8.13 (see its changelog for details).
  • Update CA bundle to certifi 2021.10.8.
  • Fix signal.valid_signals on 32-bit ABIs (#600).
  • Allow buildscript configuration to be in a subproject (#615).

The following packages have been added to the repository since the previous version:

  • zstandard

And the following packages have been updated:

  • cryptography

Chaquopy version 11.0.0

Posted on

Changes:

  • Android Gradle plugin version 7.1 is now supported, and version 3.6 is no longer supported.
  • Remove warning about untested Android Gradle plugin versions, as they are usually backward compatible.
  • Gradle pluginManagement and plugins syntax is now supported.
  • Java arrays now support the copy.copy function in Python.
  • Passing an unsupported Java object to copy.copycopy.deepcopy or pickle now fails with a clearer error message.

The following packages have been added to the repository since the previous version:

  • aiohttp
  • frozenlist
  • pyzbar
  • rawpy
  • spectrum

And the following packages have been updated:

  • numpy
  • pillow
  • pynacl
  • regex
  • tokenizers

Chaquopy version 10.0.1

Posted on

Changes:

  • Android Gradle plugin versions 4.2 and 7.0 are now supported, and versions 3.4 and 3.5 are no longer supported.
  • The version setting is no longer supported. Simply remove it to use the current version of Python.
  • Update to Python version 3.8.11 (see its changelog for details).
  • Update to pip version 19.2.3 (see its changelog for details).
  • Update CA bundle to certifi 2021.5.30.
  • Add a buffer attribute to stdout and stderr for bytes output (#464#516).
  • Java arrays now support the index and count methods in Python. In order to support code with hasattr checks, they also now implement the methods __contains____iter__ and __reversed__, rather than relying on the fallback to __getitem__ (#306).
  • Fix “truth value of an array with more than one element is ambiguous” error when passing a NumPy array to a method which takes a Java array (#526).
  • NumPy integer scalars, and anything else which implements the __index__ method, can now be used as a Java array index (#495).
  • Add workaround to help conda Python on Windows find its SSL libraries (#450).
  • Fix “invalid literal for int” error in pip_install when project path includes a symlink (#468).
  • Fix crash caused by empty files in the APK on Android 7 (Electron Cash #2136).
  • importlib.util.spec_from_file_location now works for paths loaded from the APK.

The following packages have been added to the repository since the previous version:

  • argon2-cffi
  • backports.zoneinfo
  • bitarray
  • google-crc32c
  • pycurl
  • ruamel.yaml.clib
  • sentencepiece
  • tflite-runtime
  • tokenizers
  • wordcloud

And the following packages have been updated:

  • cryptography
  • grpcio
  • lxml
  • multidict
  • opencv-python
  • pandas
  • scikit-learn
  • torch
  • torchvision

Chaquopy version 9.1.0

Posted on

Changes:

  • Fix error “‘HTMLParser’ object has no attribute ‘unescape’” on Python 3.9 (#416).
  • Fix error “must supply either home or prefix/exec-prefix – not both” on Homebrew for Mac (#405).
  • buildPython path can now contain spaces.
  • Java API is now annotated with @NotNull where appropriate.
  • Java arrays now support the copy method in Python.
  • Fix bug when using cast to call a functional interface which extends another functional interface.
  • Update CA bundle to certifi 2020.12.5.
  • json module performance improvements.
  • Java API performance improvements.

The following packages have been added to the repository since the previous version:

  • gensim

And the following packages have been updated:

  • scikit-learn (0.23.2)

Chaquopy version 9.0.0

Posted on

Changes:

  • Android Gradle plugin version 4.1 is now supported, and version 3.3 is no longer supported.
  • Runtime Python version is now 3.8.6.
  • Java objects implementing functional interfaces can now be called using () syntax.
  • Java arrays can now be accessed from Python using negative indices and slice syntax.
  • Fix conversion of non-contiguous NumPy arrays to Java arrays.
  • Remove inaccessible directories from os.get_exec_path (#346).
  • Make zipimport implement the new loader API. This affected the package dateparser.
  • If bdist_wheel fails for an unknown reason, fall back on setup.py install. This affected the packages acoustics and kiteconnect (#338).
  • Fix ClassNotFoundException when minifyEnabled is in use (#261).

The following packages have been added to the repository since the previous version:

  • shapely
  • tensorflow-gpu

Chaquopy version 8.0.1

Posted on

Changes:

  • Make missing multiprocessing primitives throw an exception on use rather than on import. This affected the packages joblib and librosa (#21).
  • Make ctypes.util.find_library search libraries installed with pip. This affected the package soundfile (#201).
  • Fix “invalid constraint” error affecting the packages openpyxl and webcolors.

The following packages have been added to the repository since the previous version:

  • xgboost

And the following packages have been updated:

  • grpcio (1.30.0)

Chaquopy version 8.0.0

Posted on

Changes:

  • Android Gradle plugin version 4.0 is now supported, and version 3.2 is no longer supported.
  • Runtime Python version is now 3.8.3.
  • Using Chaquopy in an Android library module (AAR) is now supported (#94).
  • Java primitive arrays now support the Python buffer protocol, allowing high-performance data transfer between the two languages.
  • Data files in top-level non-package directories are now extracted from the APK the first time the app is started, so they can be accessed using a path relative to __file__.

The following packages have been added to the repository since the previous version:

  • torchvision

Chaquopy version 7.0.3

Posted on

Changes:

  • Fix “This platform lacks a functioning sem_open implementation” error when using multiprocessing.dummy.Pool (aka multiprocessing.pool.ThreadPool). This affected many common uses of TensorFlow.
  • Work around dynamic linker bug on 64-bit ABIs before API level 23 (#228).
  • Fix out of memory error when running Gradle with a small heap size.
  • Fix incompatibility with external package importlib_metadata (#276).
  • Fix NoClassDefFoundError when using Python to access certain androidx classes, including AppCompatTextView.
  • Fix conversion of Java byte[] array to Python bytearray.
  • Improve startup speed by deferring pkg_resources initialization until the module is first imported.
  • Update CA bundle to certifi 2020.4.5.1.

The following packages have been updated since the previous version:

  • pillow (7.1.2)

Chaquopy version 7.0.2

Posted on

Changes:

  • Runtime Python version is now 3.8.1.
    • See compatibility notes for Python 3.7 and Python 3.8.
    • Most native packages have been updated to a more recent version. If you’ve used specific version numbers in a build.gradle or requirements.txt file, you may need to change them. See the repository index for a complete list.
    • All Python standard library modules are now supported except those in this list. In particular, support has been added for bz2importlib.metadataimportlib.resources and lzma.
  • Android Gradle plugin version 3.6 is now supported, and version 3.1 is no longer supported.
  • buildPython must now be at least Python 3.5.
  • Expose Java API using api configuration so it’s available to dynamic feature modules.
  • Update CA bundle to certifi 2019.9.11.
  • Fix “cannot create a consistent method resolution order” error when using androidx.
  • Fix a deadlock involving the Java API.
  • Improve local caching of packages which aren’t available as wheels.
  • Reduce some temporary filename lengths to avoid the Windows 260-character limit.
  • Improve startup speed.

The following packages have been added to the repository since the previous version:

  • llvmlite
  • multidict
  • numba
  • opencv-contrib-python
  • opencv-contrib-python-headless
  • opencv-python-headless
  • torch
  • yarl