jpy


Namejpy JSON
Version 0.15.0 PyPI version JSON
download
home_pagehttps://github.com/jpy-consortium/jpy
SummaryBi-directional Python-Java bridge
upload_time2024-01-09 22:18:45
maintainerBrockmann Consult GmbH
docs_urlNone
authorNorman Fomferra (Brockmann Consult GmbH) and contributors
requires_python>=3.6
licenseApache 2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![Build Status](https://github.com/jpy-consortium/jpy/actions/workflows/build.yml/badge.svg?branch=master)


jpy - a Python-Java Bridge
==========================

jpy is a **bi-directional** Python-Java bridge which you can use to embed Java
code in Python programs or the other way round. It has been designed
particularly with regard to maximum data transfer speed between the two
languages.  It comes with a number of outstanding features:

* Fully translates Java class hierarchies to Python
* Transparently handles Java method overloading
* Support of Java multi-threading
* Fast and memory-efficient support of primitive Java array parameters via
  [Python buffers](http://docs.python.org/3.3/c-api/buffer.html)
  (e.g. [Numpy arrays](http://docs.scipy.org/doc/numpy/reference/arrays.html))
* Support of Java methods that modify primitive Java array parameters (mutable
  parameters)
* Java arrays translate into Python sequence objects
* Java API for accessing Python objects (`jpy.jar`)

jpy has been tested with Python 3.4–3.8 and OpenJDK 8 on 64-bit Ubuntu Linux,
Windows 10, and macOS.

The initial development of jpy was driven by the need to write Python
extensions to an established scientific imaging application programmed in
Java, namely the [SNAP](http://step.esa.int/) toolbox, the SeNtinel
Application Platform project, funded by the [European Space
Agency](http://www.esa.int/ESA) (ESA). (jpy is bundled with the SNAP
distribution.)

Writing such Python plug-ins for a Java application usually requires a
bi-directional communication between Python and Java since the Python
extension code must be able to call back into the Java APIs.

For more information please have a look into jpy's

* [documentation](http://jpy.readthedocs.org/en/latest/)
* [source repository](https://github.com/jpy-consortium/jpy)
* [issue tracker](https://github.com/jpy-consortium/jpy/issues?state=open)

How to build wheels for Linux and Mac
-------------------------------------

Install a JDK 8, preferably the Oracle distribution. Set `JDK_HOME` or
`JPY_JDK_HOME` to point to your JDK installation and run the build script:

    $ export JDK_HOME=<your-jdk-dir>
    $ export JAVA_HOME=$JDK_HOME
    $ pip install setuptools wheel
    $ python setup.py build maven bdist_wheel

On success, the wheel is found in the `dist` directory.

To deploy the `jpy.jar` (if you don't know why you need this step, this is not
for you)::

    $ mvn clean deploy -DskipTests=true

How to build a wheel for Windows
--------------------------------

Set `JDK_HOME` or `JPY_JDK_HOME` to point to your JDK installation. You'll
need Windows SDK 7.1 or Visual Studio C++ to build the sources. With Windows
SDK 7.1::

    > SET VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\
    > SET DISTUTILS_USE_SDK=1
    > C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\setenv /x64 /release
    > SET JDK_HOME=<your-jdk-dir>
    > pip install setuptools wheel
    > python setup.py build maven bdist_wheel
    
With Visual Studio 14 and higher it is much easier::

    > SET VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\
    > SET JDK_HOME=<your-jdk-dir>
    > pip install setuptools wheel
    > python setup.py build maven bdist_wheel

On success, the wheel can be found in the `dist` directory.

How to install from sources
---------------------------

TBD

Releasing jpy
-------------

The target reader of this section is a jpy developer wishing to release a new
jpy version.  Note: You need to have Sphinx installed to update the
documentation.

1. Make sure all Java *and* Python units tests run green
2. Remove the `-SNAPSHOT` qualifier from versions names in both the Maven
   `pom.xml` and `setup.py` files, and update the version numbers and copyright
   years in `jpyutil.py` and `doc/conf.py`.
3. Generate Java API doc by running `mvn javadoc:javadoc` which will update
   directory `doc/_static`
4. Update documentation, `cd doc` and run `make html` 
5. http://peterdowns.com/posts/first-time-with-pypi.html

Automated builds
----------------

As of 2020-08-27, [Python wheel](https://pythonwheels.com/) packages for jpy
are automatically built on
[AppVeyor](https://ci.appveyor.com/project/bcdev/jpy), but at present they are
uploaded only to a private FTP server and not publicly released. Wheels are
built for Python versions 3.4, 3.5, 3.6, 3.7, and 3.8 on Linux, Windows, and
macOS (≥10.9). Only 64-bit wheels are built.

The repository also contains an outdated configuration for [automated Travis
builds](https://travis-ci.org/github/bcdev/jpy), but this configuration is
currently unmaintained and broken.

Code Of Conduct
---------------

This project has adopted the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/0/code_of_conduct/). 
For more information see the [Code of Conduct](CODE_OF_CONDUCT.md) or contact [opencode@deephaven.io](mailto:opencode@deephaven.io)
with any additional questions or comments.

Contributing
------------

For instructions on contributing, see [CONTRIBUTING.md](CONTRIBUTING.md).


Notes
-----

Some of the details on this README are out of date. Efforts to improve them will be made in the future.


# jpy Changelog

## Version 0.15.0
* [#112](https://github.com/jpy-consortium/jpy/pull/112) Add jpy.byte_buffer() function
* [#119](https://github.com/jpy-consortium/jpy/pull/119) Fix Mac OSX + OpenJDK builds where `JAVA_HOME` contains `libexec` but not `lib`
* [#121](https://github.com/jpy-consortium/jpy/pull/121) Python 3.12 build
* [#109](https://github.com/jpy-consortium/jpy/pull/109) Add aarch64 Linux wheels to build / release workflow
* [#113](https://github.com/jpy-consortium/jpy/pull/113) Update build.yml actions

## Version 0.14.0
* [#99](https://github.com/jpy-consortium/jpy/pull/99) Check for exception in getInt/Long/DoubleValue()
* [#104](https://github.com/jpy-consortium/jpy/pull/104) PyDictWrapper.values() incorrectly close the underlying PyObject while it is still referenced

## Version 0.13.0
* [#96](https://github.com/jpy-consortium/jpy/pull/96) Python 3.11 compatibility

## Version 0.12.0
* [#88](https://github.com/jpy-consortium/jpy/pull/88) Use valueOf() to box primitive values instead of creating new objects every time
* [#89](https://github.com/jpy-consortium/jpy/pull/89) Add Java process lookup for 'java.home' in find_jvm_dll_file()
* [#85](https://github.com/jpy-consortium/jpy/pull/85) Support creation of zero-sized primitive Java arrays

## Version 0.11.1
* [#79](https://github.com/jpy-consortium/jpy/issues/79) Produce usable / distributable macosx wheels

## Version 0.11.0
* Publish artifacts to [PyPi](https://pypi.org/project/jpy/). Source tarball and binary wheels for Python 3.6 - 3.10 for Linux, Mac, and Windows (x86_64).
* Publish release to Maven Central with group id `org.jpyconsortium` and artifact id `jpy`. Java-8 compatible jars.
* Many more changes.

## Version 0.10

* Add the ability to pass properties and options to write_config_files. These values get passed 
  to the jvm when it is initialized.
  [#180](https://github.com/bcdev/jpy/pull/180#issue-513362903) Contribution by davidlehrian.
* Make jpy work with Anaconda by setting environment variable 
  `PYTHONHOME` from Java 
  [#143](https://github.com/bcdev/jpy/issues/143). Contribution by Dr-Irv.  
* Fixed: Constants are not properly passed from Java to Python when using interfaces 
  [#140](https://github.com/bcdev/jpy/issues/140). Contribution by Dr-Irv.
* Fixed: Cannot iterate through a dict in Python 3.x 
  [#136](https://github.com/bcdev/jpy/issues/136). Contribution by Dr-Irv.
* Automatically build 64-bit Python wheels for all Python versions from 3.4 to
  3.8 on Linux, Windows, and Mac (fixes
  [#174](https://github.com/bcdev/jpy/issues/174)). 

## Version 0.9

This version includes a number of contributions from supportive GitHub users. Thanks to all of you!

### Fixes

* Corrected Java reference count of complex PyObject passed back and forth to methods (issue #120). Fix by sbarnoud.
* Fixed problem where default methods on Java 8 Interfaces were not found (issue #102). Fix by Charles P. Wright.
* Fixed error caused by missing `sys.argv` in Python when called from Java (issue #81). Fix by Dave Voutila.
* Fixed problem where calling jpy.get_type() too many times causes a memory access error (issue #74). Fix by Dave Voutila.
* Fixed a corruption when retrieving long values (#72). Fix by chipkent.
* Fixed fatal error when stopping python session (issue #70, #77). Fix by Dave Voutila.
* Explicit null checks for avoiding JVM crash (issue #126). Fix by Geomatys.

### Improvements

* Can now use pip to install Python `jpy` package directly from GitHub (#83).
  This works for Linux and OS X where C compilers are available by default
  and should work on Windows with Visual Studio 15 installed.
  Contribution by Dave Voutila.
* Java `PyObject` is now serializable. Contribution by Mario Briggs.
* Improved Varargs method matching.  You may pass in either an array (as in the
  past) or individual Python arguments, the match for a varargs method call is
  the minimum match for each of the arguments. Zero length arrays (i.e. no
  arguments) are also permitted with a match value of 10.
* `jpy.type_translations` dictionary for callbacks when instantiating Python objects.
* `jpy.VerboseExceptions` enables full Java stack traces.
* More Python exceptions are translated to the corresponding Java type.
* Globals and locals are converted when executing code with PyLib, to allow variables to be
  used across statement invocation; and interrogated from Java.
* PyObject wrappers for dictionary, list, and introspection functions to tell
  you whether or not you can convert the object.
* Support for isAssignable checks when dealing with Python Strings and primitives, to allow
  matches for argument types such as `java.lang.Comparable` or `java.lang.Number`.

## Version 0.8

### Fixes

* Java interface types don't include methods of extended interfaces (issue #64)
* Loading of jpy DLL fails for user-specific Python installations on Windows (issue #58)
* Java interface types didn't expose java.lang.Object methods (issue #57)
* Java 1-arg static method was confused with a zero-arg non-static method (issue #54)
* Python interpreter crash occurred when executing del statement on Java arrays (issue #52)
* Python extensions loaded from Java couldn't see Python symbols (Linux) (issue #38)

### Improvements

* It is now possible to use jpy Java API to work with multiple Python installations (issue #35).
  A tool called 'jpyutil.py' can be used to write configuration files that determine the required shared libraries
  for a given Python versions.
  A new Java system property 'jpy.config' is used to point to a desired configuration file.
* Simplified jpy installation (issue #15):
  - removed need to add JVM path to PATH (Windows) / LD_LIBRARY_PATH (Unix) environment variable
  - removed need to compile Java module using Maven
  - removed need to specify JDK_HOME environment variable, if JAVA_HOME already points to a JDK
 * Added 'jclass' attribute to Python type that wraps a Java class (issue #63) .
 * Java API extensions
  - new `jpy.org.PyObject.executeCode()` methods
  - new `jpy.org.PyModule.getBuiltins()` method
  - new `jpy.org.PyModule.getMain()` method
  - new `jpy.org.PyModule.extendSysPath()` method
* Java API configuration changes:
  - System property `jpy.jpyLib`:
  - System property `jpy.jdlLib`:
  - System property `jpy.pythonLib`:
  - System property `jpy.config`:
  - Loaded from
    - File `./jpyconfig.properties`
    - Resource `/jpyconfig.properties`
    - File `${jpy.config}`
* Python API configuration changes:
  - Loaded from
    - File `./jpyconfig.py`
    - Resource `${jpy-module}/jpyconfig.py`
  - Attribute java_home
  - Attribute jvm_dll
* Python API extensions
  - new `jpyutil` module
    - `jpyutil.init_jvm(...)`
    - `jpyutil.preload_jvm_lib(...)`
  - new `jpyutil` tool
    - usage: `jpyutil.py [-h] [--out OUT] [--java_home JAVA_HOME] [--jvm_dll JVM_DLL]`
* Added basic support for Java Scripting Engine API (issue #53)

### Other changes

* Switched to Apache 2.0 license from version 0.8 and later (issue #60)

## Version 0.7.5

* Fixed bad pointer in C-code which caused unpredictable crashes (issue #43)

## Version 0.7.4

* Fixed a problem where jpy crashes with unicode arguments (issue #42)
* Fixed segmentation fault occurring occasionally during installation of jpy (issue #40)
* Improved Java exception messages on Python errors (issue #39)

## Version 0.7.3

* Fixed problem where a Java primitive array argument has occasionally not been initialised by a
  related Python buffer argument (issue #37)

## Version 0.7.2

* Added backward compatibility with Python 2.7 (issue #34).
* Added Java parameter annotation 'output' (issue #36).
  This is used to optimise passing Python buffer arguments where Java primitive arrays are expected.
* Removed debugging prints of the form "JNI_OnLoad: ..."
* Corrected documentation of jpy.array(type, init) function, which was said to be jpy.array(type, length)
* Removed console dumps that occurred when calling from Java proxies into Python
* Updated Java API documentation and added it to Sphinx doc folder (doc/_static/java-apidoc)
* Added new diagnostic F_ERR flag to Java class PyLib.Diag
* Java class PyLib is no longer instantiable

## Version 0.7.1

* Updated README and added MANIFEST.in after recognising that the jpy-0.7.zip distribution misses most of the
  required source files and learning what to do on this case.

## Version 0.7

* Initial version.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jpy-consortium/jpy",
    "name": "jpy",
    "maintainer": "Brockmann Consult GmbH",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "norman.fomferra@brockmann-consult.de",
    "keywords": "",
    "author": "Norman Fomferra (Brockmann Consult GmbH) and contributors",
    "author_email": "norman.fomferra@brockmann-consult.de",
    "download_url": "https://files.pythonhosted.org/packages/65/c5/56ce98f0801747ebf69999940db845782704a451fef32a4be14c1b2070ea/jpy-0.15.0.tar.gz",
    "platform": "Windows",
    "description": "![Build Status](https://github.com/jpy-consortium/jpy/actions/workflows/build.yml/badge.svg?branch=master)\n\n\njpy - a Python-Java Bridge\n==========================\n\njpy is a **bi-directional** Python-Java bridge which you can use to embed Java\ncode in Python programs or the other way round. It has been designed\nparticularly with regard to maximum data transfer speed between the two\nlanguages.  It comes with a number of outstanding features:\n\n* Fully translates Java class hierarchies to Python\n* Transparently handles Java method overloading\n* Support of Java multi-threading\n* Fast and memory-efficient support of primitive Java array parameters via\n  [Python buffers](http://docs.python.org/3.3/c-api/buffer.html)\n  (e.g. [Numpy arrays](http://docs.scipy.org/doc/numpy/reference/arrays.html))\n* Support of Java methods that modify primitive Java array parameters (mutable\n  parameters)\n* Java arrays translate into Python sequence objects\n* Java API for accessing Python objects (`jpy.jar`)\n\njpy has been tested with Python 3.4\u20133.8 and OpenJDK 8 on 64-bit Ubuntu Linux,\nWindows 10, and macOS.\n\nThe initial development of jpy was driven by the need to write Python\nextensions to an established scientific imaging application programmed in\nJava, namely the [SNAP](http://step.esa.int/) toolbox, the SeNtinel\nApplication Platform project, funded by the [European Space\nAgency](http://www.esa.int/ESA) (ESA). (jpy is bundled with the SNAP\ndistribution.)\n\nWriting such Python plug-ins for a Java application usually requires a\nbi-directional communication between Python and Java since the Python\nextension code must be able to call back into the Java APIs.\n\nFor more information please have a look into jpy's\n\n* [documentation](http://jpy.readthedocs.org/en/latest/)\n* [source repository](https://github.com/jpy-consortium/jpy)\n* [issue tracker](https://github.com/jpy-consortium/jpy/issues?state=open)\n\nHow to build wheels for Linux and Mac\n-------------------------------------\n\nInstall a JDK 8, preferably the Oracle distribution. Set `JDK_HOME` or\n`JPY_JDK_HOME` to point to your JDK installation and run the build script:\n\n    $ export JDK_HOME=<your-jdk-dir>\n    $ export JAVA_HOME=$JDK_HOME\n    $ pip install setuptools wheel\n    $ python setup.py build maven bdist_wheel\n\nOn success, the wheel is found in the `dist` directory.\n\nTo deploy the `jpy.jar` (if you don't know why you need this step, this is not\nfor you)::\n\n    $ mvn clean deploy -DskipTests=true\n\nHow to build a wheel for Windows\n--------------------------------\n\nSet `JDK_HOME` or `JPY_JDK_HOME` to point to your JDK installation. You'll\nneed Windows SDK 7.1 or Visual Studio C++ to build the sources. With Windows\nSDK 7.1::\n\n    > SET VS90COMNTOOLS=C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\Tools\\\n    > SET DISTUTILS_USE_SDK=1\n    > C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\bin\\setenv /x64 /release\n    > SET JDK_HOME=<your-jdk-dir>\n    > pip install setuptools wheel\n    > python setup.py build maven bdist_wheel\n    \nWith Visual Studio 14 and higher it is much easier::\n\n    > SET VS100COMNTOOLS=C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\\n    > SET JDK_HOME=<your-jdk-dir>\n    > pip install setuptools wheel\n    > python setup.py build maven bdist_wheel\n\nOn success, the wheel can be found in the `dist` directory.\n\nHow to install from sources\n---------------------------\n\nTBD\n\nReleasing jpy\n-------------\n\nThe target reader of this section is a jpy developer wishing to release a new\njpy version.  Note: You need to have Sphinx installed to update the\ndocumentation.\n\n1. Make sure all Java *and* Python units tests run green\n2. Remove the `-SNAPSHOT` qualifier from versions names in both the Maven\n   `pom.xml` and `setup.py` files, and update the version numbers and copyright\n   years in `jpyutil.py` and `doc/conf.py`.\n3. Generate Java API doc by running `mvn javadoc:javadoc` which will update\n   directory `doc/_static`\n4. Update documentation, `cd doc` and run `make html` \n5. http://peterdowns.com/posts/first-time-with-pypi.html\n\nAutomated builds\n----------------\n\nAs of 2020-08-27, [Python wheel](https://pythonwheels.com/) packages for jpy\nare automatically built on\n[AppVeyor](https://ci.appveyor.com/project/bcdev/jpy), but at present they are\nuploaded only to a private FTP server and not publicly released. Wheels are\nbuilt for Python versions 3.4, 3.5, 3.6, 3.7, and 3.8 on Linux, Windows, and\nmacOS (\u226510.9). Only 64-bit wheels are built.\n\nThe repository also contains an outdated configuration for [automated Travis\nbuilds](https://travis-ci.org/github/bcdev/jpy), but this configuration is\ncurrently unmaintained and broken.\n\nCode Of Conduct\n---------------\n\nThis project has adopted the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/0/code_of_conduct/). \nFor more information see the [Code of Conduct](CODE_OF_CONDUCT.md) or contact [opencode@deephaven.io](mailto:opencode@deephaven.io)\nwith any additional questions or comments.\n\nContributing\n------------\n\nFor instructions on contributing, see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n\nNotes\n-----\n\nSome of the details on this README are out of date. Efforts to improve them will be made in the future.\n\n\n# jpy Changelog\n\n## Version 0.15.0\n* [#112](https://github.com/jpy-consortium/jpy/pull/112) Add jpy.byte_buffer() function\n* [#119](https://github.com/jpy-consortium/jpy/pull/119) Fix Mac OSX + OpenJDK builds where `JAVA_HOME` contains `libexec` but not `lib`\n* [#121](https://github.com/jpy-consortium/jpy/pull/121) Python 3.12 build\n* [#109](https://github.com/jpy-consortium/jpy/pull/109) Add aarch64 Linux wheels to build / release workflow\n* [#113](https://github.com/jpy-consortium/jpy/pull/113) Update build.yml actions\n\n## Version 0.14.0\n* [#99](https://github.com/jpy-consortium/jpy/pull/99) Check for exception in getInt/Long/DoubleValue()\n* [#104](https://github.com/jpy-consortium/jpy/pull/104) PyDictWrapper.values() incorrectly close the underlying PyObject while it is still referenced\n\n## Version 0.13.0\n* [#96](https://github.com/jpy-consortium/jpy/pull/96) Python 3.11 compatibility\n\n## Version 0.12.0\n* [#88](https://github.com/jpy-consortium/jpy/pull/88) Use valueOf() to box primitive values instead of creating new objects every time\n* [#89](https://github.com/jpy-consortium/jpy/pull/89) Add Java process lookup for 'java.home' in find_jvm_dll_file()\n* [#85](https://github.com/jpy-consortium/jpy/pull/85) Support creation of zero-sized primitive Java arrays\n\n## Version 0.11.1\n* [#79](https://github.com/jpy-consortium/jpy/issues/79) Produce usable / distributable macosx wheels\n\n## Version 0.11.0\n* Publish artifacts to [PyPi](https://pypi.org/project/jpy/). Source tarball and binary wheels for Python 3.6 - 3.10 for Linux, Mac, and Windows (x86_64).\n* Publish release to Maven Central with group id `org.jpyconsortium` and artifact id `jpy`. Java-8 compatible jars.\n* Many more changes.\n\n## Version 0.10\n\n* Add the ability to pass properties and options to write_config_files. These values get passed \n  to the jvm when it is initialized.\n  [#180](https://github.com/bcdev/jpy/pull/180#issue-513362903) Contribution by davidlehrian.\n* Make jpy work with Anaconda by setting environment variable \n  `PYTHONHOME` from Java \n  [#143](https://github.com/bcdev/jpy/issues/143). Contribution by Dr-Irv.  \n* Fixed: Constants are not properly passed from Java to Python when using interfaces \n  [#140](https://github.com/bcdev/jpy/issues/140). Contribution by Dr-Irv.\n* Fixed: Cannot iterate through a dict in Python 3.x \n  [#136](https://github.com/bcdev/jpy/issues/136). Contribution by Dr-Irv.\n* Automatically build 64-bit Python wheels for all Python versions from 3.4 to\n  3.8 on Linux, Windows, and Mac (fixes\n  [#174](https://github.com/bcdev/jpy/issues/174)). \n\n## Version 0.9\n\nThis version includes a number of contributions from supportive GitHub users. Thanks to all of you!\n\n### Fixes\n\n* Corrected Java reference count of complex PyObject passed back and forth to methods (issue #120). Fix by sbarnoud.\n* Fixed problem where default methods on Java 8 Interfaces were not found (issue #102). Fix by Charles P. Wright.\n* Fixed error caused by missing `sys.argv` in Python when called from Java (issue #81). Fix by Dave Voutila.\n* Fixed problem where calling jpy.get_type() too many times causes a memory access error (issue #74). Fix by Dave Voutila.\n* Fixed a corruption when retrieving long values (#72). Fix by chipkent.\n* Fixed fatal error when stopping python session (issue #70, #77). Fix by Dave Voutila.\n* Explicit null checks for avoiding JVM crash (issue #126). Fix by Geomatys.\n\n### Improvements\n\n* Can now use pip to install Python `jpy` package directly from GitHub (#83).\n  This works for Linux and OS X where C compilers are available by default\n  and should work on Windows with Visual Studio 15 installed.\n  Contribution by Dave Voutila.\n* Java `PyObject` is now serializable. Contribution by Mario Briggs.\n* Improved Varargs method matching.  You may pass in either an array (as in the\n  past) or individual Python arguments, the match for a varargs method call is\n  the minimum match for each of the arguments. Zero length arrays (i.e. no\n  arguments) are also permitted with a match value of 10.\n* `jpy.type_translations` dictionary for callbacks when instantiating Python objects.\n* `jpy.VerboseExceptions` enables full Java stack traces.\n* More Python exceptions are translated to the corresponding Java type.\n* Globals and locals are converted when executing code with PyLib, to allow variables to be\n  used across statement invocation; and interrogated from Java.\n* PyObject wrappers for dictionary, list, and introspection functions to tell\n  you whether or not you can convert the object.\n* Support for isAssignable checks when dealing with Python Strings and primitives, to allow\n  matches for argument types such as `java.lang.Comparable` or `java.lang.Number`.\n\n## Version 0.8\n\n### Fixes\n\n* Java interface types don't include methods of extended interfaces (issue #64)\n* Loading of jpy DLL fails for user-specific Python installations on Windows (issue #58)\n* Java interface types didn't expose java.lang.Object methods (issue #57)\n* Java 1-arg static method was confused with a zero-arg non-static method (issue #54)\n* Python interpreter crash occurred when executing del statement on Java arrays (issue #52)\n* Python extensions loaded from Java couldn't see Python symbols (Linux) (issue #38)\n\n### Improvements\n\n* It is now possible to use jpy Java API to work with multiple Python installations (issue #35).\n  A tool called 'jpyutil.py' can be used to write configuration files that determine the required shared libraries\n  for a given Python versions.\n  A new Java system property 'jpy.config' is used to point to a desired configuration file.\n* Simplified jpy installation (issue #15):\n  - removed need to add JVM path to PATH (Windows) / LD_LIBRARY_PATH (Unix) environment variable\n  - removed need to compile Java module using Maven\n  - removed need to specify JDK_HOME environment variable, if JAVA_HOME already points to a JDK\n * Added 'jclass' attribute to Python type that wraps a Java class (issue #63) .\n * Java API extensions\n  - new `jpy.org.PyObject.executeCode()` methods\n  - new `jpy.org.PyModule.getBuiltins()` method\n  - new `jpy.org.PyModule.getMain()` method\n  - new `jpy.org.PyModule.extendSysPath()` method\n* Java API configuration changes:\n  - System property `jpy.jpyLib`:\n  - System property `jpy.jdlLib`:\n  - System property `jpy.pythonLib`:\n  - System property `jpy.config`:\n  - Loaded from\n    - File `./jpyconfig.properties`\n    - Resource `/jpyconfig.properties`\n    - File `${jpy.config}`\n* Python API configuration changes:\n  - Loaded from\n    - File `./jpyconfig.py`\n    - Resource `${jpy-module}/jpyconfig.py`\n  - Attribute java_home\n  - Attribute jvm_dll\n* Python API extensions\n  - new `jpyutil` module\n    - `jpyutil.init_jvm(...)`\n    - `jpyutil.preload_jvm_lib(...)`\n  - new `jpyutil` tool\n    - usage: `jpyutil.py [-h] [--out OUT] [--java_home JAVA_HOME] [--jvm_dll JVM_DLL]`\n* Added basic support for Java Scripting Engine API (issue #53)\n\n### Other changes\n\n* Switched to Apache 2.0 license from version 0.8 and later (issue #60)\n\n## Version 0.7.5\n\n* Fixed bad pointer in C-code which caused unpredictable crashes (issue #43)\n\n## Version 0.7.4\n\n* Fixed a problem where jpy crashes with unicode arguments (issue #42)\n* Fixed segmentation fault occurring occasionally during installation of jpy (issue #40)\n* Improved Java exception messages on Python errors (issue #39)\n\n## Version 0.7.3\n\n* Fixed problem where a Java primitive array argument has occasionally not been initialised by a\n  related Python buffer argument (issue #37)\n\n## Version 0.7.2\n\n* Added backward compatibility with Python 2.7 (issue #34).\n* Added Java parameter annotation 'output' (issue #36).\n  This is used to optimise passing Python buffer arguments where Java primitive arrays are expected.\n* Removed debugging prints of the form \"JNI_OnLoad: ...\"\n* Corrected documentation of jpy.array(type, init) function, which was said to be jpy.array(type, length)\n* Removed console dumps that occurred when calling from Java proxies into Python\n* Updated Java API documentation and added it to Sphinx doc folder (doc/_static/java-apidoc)\n* Added new diagnostic F_ERR flag to Java class PyLib.Diag\n* Java class PyLib is no longer instantiable\n\n## Version 0.7.1\n\n* Updated README and added MANIFEST.in after recognising that the jpy-0.7.zip distribution misses most of the\n  required source files and learning what to do on this case.\n\n## Version 0.7\n\n* Initial version.\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Bi-directional Python-Java bridge",
    "version": "0.15.0",
    "project_urls": {
        "Download": "https://pypi.python.org/pypi/jpy/0.15.0",
        "Homepage": "https://github.com/jpy-consortium/jpy"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "22fb74bcdf2e56619e31db0fb0689671119e32956226605a13d8404f7f5be11f",
                "md5": "3751e43b7ca00b2d019418cbb13826d6",
                "sha256": "6b2acd07e585cfd5518f6dae82a7daea1885af95e581e6f9302b186d82b585f9"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp310-cp310-macosx_11_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3751e43b7ca00b2d019418cbb13826d6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 81725,
            "upload_time": "2024-01-09T22:17:58",
            "upload_time_iso_8601": "2024-01-09T22:17:58.004321Z",
            "url": "https://files.pythonhosted.org/packages/22/fb/74bcdf2e56619e31db0fb0689671119e32956226605a13d8404f7f5be11f/jpy-0.15.0-cp310-cp310-macosx_11_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "600d45c5a0ce60e56d905ce34deacdedceafe353bda6a218ce78fc88e2aa9b5d",
                "md5": "1736b4ca2defdc55b9f304c7129fee5b",
                "sha256": "0a7ddb1e8978d4f52917e6975ec151f679830cf2b78f793959def80da6f4454b"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "1736b4ca2defdc55b9f304c7129fee5b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 300088,
            "upload_time": "2024-01-09T22:17:59",
            "upload_time_iso_8601": "2024-01-09T22:17:59.993260Z",
            "url": "https://files.pythonhosted.org/packages/60/0d/45c5a0ce60e56d905ce34deacdedceafe353bda6a218ce78fc88e2aa9b5d/jpy-0.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b22aff3ade183838aa77e0fe454ed6fbeb15ca1e7104280066ca78c3b3c2f483",
                "md5": "283c171b9516258759c614edf7bfc979",
                "sha256": "710bb8e84e869ec15d9f417fec70f05aaa689e2ce3a484dcfeabf7c248fb6108"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "283c171b9516258759c614edf7bfc979",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 346933,
            "upload_time": "2024-01-09T22:18:01",
            "upload_time_iso_8601": "2024-01-09T22:18:01.511663Z",
            "url": "https://files.pythonhosted.org/packages/b2/2a/ff3ade183838aa77e0fe454ed6fbeb15ca1e7104280066ca78c3b3c2f483/jpy-0.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7ac74580ad645e957c42fee70795a73d4d2ca7cfbfe828d08ddd6f96904c3178",
                "md5": "52e1132f7bcce38b5b0794f728610f3b",
                "sha256": "68ab82a81597be25ae0e6d7be10406e037545d94948441924321b7c735fe3717"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "52e1132f7bcce38b5b0794f728610f3b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 73302,
            "upload_time": "2024-01-09T22:18:02",
            "upload_time_iso_8601": "2024-01-09T22:18:02.832860Z",
            "url": "https://files.pythonhosted.org/packages/7a/c7/4580ad645e957c42fee70795a73d4d2ca7cfbfe828d08ddd6f96904c3178/jpy-0.15.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f55192b93c03b37bcec18126aa8cf519d0e48a9cb96614b310cee85c52835242",
                "md5": "60ac43c3d28998ae1b69d4fb5325f802",
                "sha256": "5a587bdd046a9bd72e6ef9e79602c8419bcef511ad512b924b7176f637e6dbaf"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp311-cp311-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "60ac43c3d28998ae1b69d4fb5325f802",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 144679,
            "upload_time": "2024-01-09T22:18:04",
            "upload_time_iso_8601": "2024-01-09T22:18:04.545103Z",
            "url": "https://files.pythonhosted.org/packages/f5/51/92b93c03b37bcec18126aa8cf519d0e48a9cb96614b310cee85c52835242/jpy-0.15.0-cp311-cp311-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "968cf2a3d83438742b5867d718b62af07732d19d63439f217bc3af537bb13b7d",
                "md5": "50c47fbd22843f30df97d057a980f6c0",
                "sha256": "d88315af7eb5d9ebcb057435f30b1a93b6fd9bfcf612e72ce6b8b7323f13ca79"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "50c47fbd22843f30df97d057a980f6c0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 305526,
            "upload_time": "2024-01-09T22:18:06",
            "upload_time_iso_8601": "2024-01-09T22:18:06.093910Z",
            "url": "https://files.pythonhosted.org/packages/96/8c/f2a3d83438742b5867d718b62af07732d19d63439f217bc3af537bb13b7d/jpy-0.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "88c305f75e242555266d6eb97e406171c4a9f35544c4557920a496f2e362ee77",
                "md5": "79dd806d265969af046f35deb0e3a401",
                "sha256": "665e203d1930971ebad9142f2bec52434b9a24d86cea507aedfcb3ccded90bc1"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "79dd806d265969af046f35deb0e3a401",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 348300,
            "upload_time": "2024-01-09T22:18:07",
            "upload_time_iso_8601": "2024-01-09T22:18:07.423522Z",
            "url": "https://files.pythonhosted.org/packages/88/c3/05f75e242555266d6eb97e406171c4a9f35544c4557920a496f2e362ee77/jpy-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "53a43f1917962f27cc1ae459939c72a48c6581f1e3ec157141ee501954a7a4d3",
                "md5": "f583fa40caad8527fd6b25966b029dab",
                "sha256": "aba6f21f3e78114a537a3acb91238645daed45da7b5e1f30bfd597802df798a4"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f583fa40caad8527fd6b25966b029dab",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 73277,
            "upload_time": "2024-01-09T22:18:08",
            "upload_time_iso_8601": "2024-01-09T22:18:08.754255Z",
            "url": "https://files.pythonhosted.org/packages/53/a4/3f1917962f27cc1ae459939c72a48c6581f1e3ec157141ee501954a7a4d3/jpy-0.15.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6c8d7729cce6f962970c958d02f33913657b2efcc68cd15a6d61476e4b39d12b",
                "md5": "0a89c3c627382e9b4b44b9e80b57cc6b",
                "sha256": "019f7a566da75c047f3e4c89fc6eb30b918567c127599fe77cc108b95c4d3a6b"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp312-cp312-macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "0a89c3c627382e9b4b44b9e80b57cc6b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 145368,
            "upload_time": "2024-01-09T22:18:10",
            "upload_time_iso_8601": "2024-01-09T22:18:10.305705Z",
            "url": "https://files.pythonhosted.org/packages/6c/8d/7729cce6f962970c958d02f33913657b2efcc68cd15a6d61476e4b39d12b/jpy-0.15.0-cp312-cp312-macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "77dc2dd547ebfe366a2e88dec177fc1fb197931807af9f035aae3d2b079ee697",
                "md5": "8361bdcd4e42115a81cc528f22c37295",
                "sha256": "8f7dd2ff6bbe9d321b3e720aca73391d5b86e52494d52f863dc67a6062dc0c04"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "8361bdcd4e42115a81cc528f22c37295",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 308972,
            "upload_time": "2024-01-09T22:18:12",
            "upload_time_iso_8601": "2024-01-09T22:18:12.315973Z",
            "url": "https://files.pythonhosted.org/packages/77/dc/2dd547ebfe366a2e88dec177fc1fb197931807af9f035aae3d2b079ee697/jpy-0.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "43d792002c2c77b3bfb0bf80b8db1899d9e7a7cf31035fd11c0b45f71bd8346e",
                "md5": "55c39e578fffcc66f8626b37ad2722fe",
                "sha256": "a1b2802fafb8fd118ad1e50eb11ebcd21401a752f210fb15543297daabfe320f"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "55c39e578fffcc66f8626b37ad2722fe",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 350420,
            "upload_time": "2024-01-09T22:18:14",
            "upload_time_iso_8601": "2024-01-09T22:18:14.079778Z",
            "url": "https://files.pythonhosted.org/packages/43/d7/92002c2c77b3bfb0bf80b8db1899d9e7a7cf31035fd11c0b45f71bd8346e/jpy-0.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "35aa0bfcb95496f7f602cd9fa949f4b5ea781c0e69e6eabf57b4811ef1ae938f",
                "md5": "8de1db6d5ea971787a8bad0621a18d5c",
                "sha256": "303a4ef38cd20499931d7d66237b378a13244763a8e6d4801b2faffd38509017"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8de1db6d5ea971787a8bad0621a18d5c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 73527,
            "upload_time": "2024-01-09T22:18:16",
            "upload_time_iso_8601": "2024-01-09T22:18:16.230593Z",
            "url": "https://files.pythonhosted.org/packages/35/aa/0bfcb95496f7f602cd9fa949f4b5ea781c0e69e6eabf57b4811ef1ae938f/jpy-0.15.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa3315dd5053c9cf45178fa596efded60f27e3453849ca054abdbe9f03c81445",
                "md5": "d389f1ef98dd20ef9239c783764eb702",
                "sha256": "e686142a943325513a62197c09eb2bb9154009e349c9e0f55ad6b509432f1917"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp36-cp36m-macosx_10_14_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d389f1ef98dd20ef9239c783764eb702",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 124045,
            "upload_time": "2024-01-09T22:18:18",
            "upload_time_iso_8601": "2024-01-09T22:18:18.051648Z",
            "url": "https://files.pythonhosted.org/packages/aa/33/15dd5053c9cf45178fa596efded60f27e3453849ca054abdbe9f03c81445/jpy-0.15.0-cp36-cp36m-macosx_10_14_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15afdbca9bfb79e18435be87acd3703fca2cc63c0241fc3932933d4afaf9846f",
                "md5": "3f3826c8aca15ae2bc03a7aaad74b59c",
                "sha256": "f09c8fb9b4b9024e934e3279cbb9fa5e3cacac1a626bc98045d02339b4ece6c2"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3f3826c8aca15ae2bc03a7aaad74b59c",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 334291,
            "upload_time": "2024-01-09T22:18:19",
            "upload_time_iso_8601": "2024-01-09T22:18:19.890709Z",
            "url": "https://files.pythonhosted.org/packages/15/af/dbca9bfb79e18435be87acd3703fca2cc63c0241fc3932933d4afaf9846f/jpy-0.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "98ec7b489fd86dde981b47dcc0becf8d0eedd6c05bfd57e180344a331007c69e",
                "md5": "49c64f300558348fbc66c3de992710d6",
                "sha256": "a84a4187f24c0e3b7fd3e69dcedbb7a505f9ca7480180ef5dcd69322cc3cf8bd"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "49c64f300558348fbc66c3de992710d6",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 375913,
            "upload_time": "2024-01-09T22:18:21",
            "upload_time_iso_8601": "2024-01-09T22:18:21.393100Z",
            "url": "https://files.pythonhosted.org/packages/98/ec/7b489fd86dde981b47dcc0becf8d0eedd6c05bfd57e180344a331007c69e/jpy-0.15.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f325d94e151ac2db3310e0d4e18dde687561336a911b27ebb21e7d63af9af94d",
                "md5": "2b402e22822645fec7f5e05d28dbc2e4",
                "sha256": "80e7e29587f5e4ce7872fba48299e46b2f77f05ee4748977e6de20c7b3388e2d"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp36-cp36m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "2b402e22822645fec7f5e05d28dbc2e4",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 121785,
            "upload_time": "2024-01-09T22:18:22",
            "upload_time_iso_8601": "2024-01-09T22:18:22.620820Z",
            "url": "https://files.pythonhosted.org/packages/f3/25/d94e151ac2db3310e0d4e18dde687561336a911b27ebb21e7d63af9af94d/jpy-0.15.0-cp36-cp36m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1226a3c6d482b6bead089ecfef39e4bd6729377c7bb1f88101ab635e91288704",
                "md5": "694e076ca323d6bc5908906ad8be7f34",
                "sha256": "fdec2fa8b1075b7d3ccd1e306eab48237b4fa50ec97e4ccd4bd0db2421480852"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp37-cp37m-macosx_11_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "694e076ca323d6bc5908906ad8be7f34",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 124543,
            "upload_time": "2024-01-09T22:18:24",
            "upload_time_iso_8601": "2024-01-09T22:18:24.305822Z",
            "url": "https://files.pythonhosted.org/packages/12/26/a3c6d482b6bead089ecfef39e4bd6729377c7bb1f88101ab635e91288704/jpy-0.15.0-cp37-cp37m-macosx_11_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2dc3556c727fadbeaa8d1eb7bab1d02672f3af6933320b8839055202005b3440",
                "md5": "bf1f4dc450255e3a30e1e40db1b4e608",
                "sha256": "c268f867d543e0963cdf2557ca3a076388fa2a12156bc62c0e24f286bc2d251e"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "bf1f4dc450255e3a30e1e40db1b4e608",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 292745,
            "upload_time": "2024-01-09T22:18:25",
            "upload_time_iso_8601": "2024-01-09T22:18:25.421903Z",
            "url": "https://files.pythonhosted.org/packages/2d/c3/556c727fadbeaa8d1eb7bab1d02672f3af6933320b8839055202005b3440/jpy-0.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3ccb667e43aada628ba05024639d844eeb503c5d27c0368c7126d934aafc6ecd",
                "md5": "9cf5a0c429519df94ca115df8065fae8",
                "sha256": "daba07c811e6471dba49ba7dfc6b70621ffe0a3b044fbfc5359ed24beee611c2"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9cf5a0c429519df94ca115df8065fae8",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 382755,
            "upload_time": "2024-01-09T22:18:26",
            "upload_time_iso_8601": "2024-01-09T22:18:26.715062Z",
            "url": "https://files.pythonhosted.org/packages/3c/cb/667e43aada628ba05024639d844eeb503c5d27c0368c7126d934aafc6ecd/jpy-0.15.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "42987c6abbad4251d3008eccf698eb39d40479333aaad3de6cfbaae909d6135a",
                "md5": "2335d8f56abd6c0f3c4e16b7c6a09bd4",
                "sha256": "3d167d34a496843647cd4521e2dfcafd0c29702958fccd840e92952182bbef5d"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "2335d8f56abd6c0f3c4e16b7c6a09bd4",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 121851,
            "upload_time": "2024-01-09T22:18:28",
            "upload_time_iso_8601": "2024-01-09T22:18:28.741767Z",
            "url": "https://files.pythonhosted.org/packages/42/98/7c6abbad4251d3008eccf698eb39d40479333aaad3de6cfbaae909d6135a/jpy-0.15.0-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b11352c59647947cff57c8f0897aab21c770f691595547275244201d49d4713f",
                "md5": "9fe50c1cd5a4128a3bf501674d99eb32",
                "sha256": "f769c03cd2cbd2ef408275633d33abda9ca26b97fd1442790b505d1971ce06bb"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp38-cp38-macosx_11_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9fe50c1cd5a4128a3bf501674d99eb32",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 124834,
            "upload_time": "2024-01-09T22:18:30",
            "upload_time_iso_8601": "2024-01-09T22:18:30.047575Z",
            "url": "https://files.pythonhosted.org/packages/b1/13/52c59647947cff57c8f0897aab21c770f691595547275244201d49d4713f/jpy-0.15.0-cp38-cp38-macosx_11_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "961b5c0da098bdd6c16cbfe155742f87e1ccbf17164200ac5d9b4124fede533e",
                "md5": "68095aa0223d3a3a3ea5ac8624bc07b8",
                "sha256": "9254f61795f25c3c322018d69578284a3b860fa6daf46dca26e0d8975d82ac8e"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "68095aa0223d3a3a3ea5ac8624bc07b8",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 296851,
            "upload_time": "2024-01-09T22:18:31",
            "upload_time_iso_8601": "2024-01-09T22:18:31.978105Z",
            "url": "https://files.pythonhosted.org/packages/96/1b/5c0da098bdd6c16cbfe155742f87e1ccbf17164200ac5d9b4124fede533e/jpy-0.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5bb56c2bedcef32aa07b6e66be596cea10cc5586c3e39d5325f38918d43fa213",
                "md5": "5396fd8baf9e4fb12ce4e2c3837251e3",
                "sha256": "5ea7f018d0a39f46a44391cfd917b6a7a45a57d5660ba5ed22aa5962923cec41"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5396fd8baf9e4fb12ce4e2c3837251e3",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 384951,
            "upload_time": "2024-01-09T22:18:34",
            "upload_time_iso_8601": "2024-01-09T22:18:34.138465Z",
            "url": "https://files.pythonhosted.org/packages/5b/b5/6c2bedcef32aa07b6e66be596cea10cc5586c3e39d5325f38918d43fa213/jpy-0.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fd15cee82acc76c0764ff5f50878b66e5100b0cc1c31d4550ef3ff75abe1b99b",
                "md5": "7ee976c4ab20db67bea55d71d8b07c32",
                "sha256": "ebf9018b249f3cb9d1a7dc2e30a1656dafe6a1d5922bf912e23b9b02d5fa5bdb"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "7ee976c4ab20db67bea55d71d8b07c32",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 122205,
            "upload_time": "2024-01-09T22:18:38",
            "upload_time_iso_8601": "2024-01-09T22:18:38.307543Z",
            "url": "https://files.pythonhosted.org/packages/fd/15/cee82acc76c0764ff5f50878b66e5100b0cc1c31d4550ef3ff75abe1b99b/jpy-0.15.0-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "876232bd6a55b5724bb249939cf352cdca3d6f1c8026de0515af7a0b9665f839",
                "md5": "7884491f489ffb65b878bf9c642252a1",
                "sha256": "13e3f193e0f6a884a5ed4d79db2806e067963a9d1d1974cae360a8be76a41ab7"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp39-cp39-macosx_11_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7884491f489ffb65b878bf9c642252a1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 124896,
            "upload_time": "2024-01-09T22:18:40",
            "upload_time_iso_8601": "2024-01-09T22:18:40.662086Z",
            "url": "https://files.pythonhosted.org/packages/87/62/32bd6a55b5724bb249939cf352cdca3d6f1c8026de0515af7a0b9665f839/jpy-0.15.0-cp39-cp39-macosx_11_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "16eb33f16a242abfecd945dcfedf791c3edd53aa7c4a4aa0d3c5d527ce56199f",
                "md5": "7191579ee1755fc9c81443e9b0426a01",
                "sha256": "92aaafb51a8e323f4be846911458056b8617b610524f9e4adb8ad31fa937ea07"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7191579ee1755fc9c81443e9b0426a01",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 297797,
            "upload_time": "2024-01-09T22:18:41",
            "upload_time_iso_8601": "2024-01-09T22:18:41.904397Z",
            "url": "https://files.pythonhosted.org/packages/16/eb/33f16a242abfecd945dcfedf791c3edd53aa7c4a4aa0d3c5d527ce56199f/jpy-0.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "39a908d9283a56c267760462f31ca370b5a38e417743266f87ad1a8081d3dad2",
                "md5": "2a288baf67dd2a2715265ef117024a83",
                "sha256": "25bd0695220849a64ce14255b84ed24267532c1de0cb4e279c191ca1c90a0ac1"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2a288baf67dd2a2715265ef117024a83",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 387861,
            "upload_time": "2024-01-09T22:18:43",
            "upload_time_iso_8601": "2024-01-09T22:18:43.148110Z",
            "url": "https://files.pythonhosted.org/packages/39/a9/08d9283a56c267760462f31ca370b5a38e417743266f87ad1a8081d3dad2/jpy-0.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ab2bde6b062a75a6ee7bca532ad53ed44ac1e1b055c4d6ffbb336864c4e4b3da",
                "md5": "e7115054a211d44a10470378a7fe901e",
                "sha256": "f3bb9a1ec0a22897ff2d34b36afa31759e8b75caead53b6d95842e42c765fbd8"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e7115054a211d44a10470378a7fe901e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 122328,
            "upload_time": "2024-01-09T22:18:44",
            "upload_time_iso_8601": "2024-01-09T22:18:44.371688Z",
            "url": "https://files.pythonhosted.org/packages/ab/2b/de6b062a75a6ee7bca532ad53ed44ac1e1b055c4d6ffbb336864c4e4b3da/jpy-0.15.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "65c556ce98f0801747ebf69999940db845782704a451fef32a4be14c1b2070ea",
                "md5": "7d93af4327ab2598681b2956c30e12a6",
                "sha256": "06d64f8dc523100187adaa91deca166fa1b057b6f154fccddf10da18f4aed498"
            },
            "downloads": -1,
            "filename": "jpy-0.15.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7d93af4327ab2598681b2956c30e12a6",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 175313,
            "upload_time": "2024-01-09T22:18:45",
            "upload_time_iso_8601": "2024-01-09T22:18:45.568993Z",
            "url": "https://files.pythonhosted.org/packages/65/c5/56ce98f0801747ebf69999940db845782704a451fef32a4be14c1b2070ea/jpy-0.15.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-09 22:18:45",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jpy-consortium",
    "github_project": "jpy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "appveyor": true,
    "lcname": "jpy"
}
        
Elapsed time: 0.16907s