Metadata-Version: 2.1
Name: pyjnius
Version: 1.3.0.dev0
Summary: A Python module to access Java classes as Python classes using JNI.
Home-page: https://github.com/kivy/pyjnius
Author: Kivy Team and other contributors
Author-email: kivy-dev@googlegroups.com
License: UNKNOWN
Description: PyJNIus
        =======
        
        A Python module to access Java classes as Python classes using the Java Native
        Interface (JNI).
        Warning: the pypi name is now `pyjnius` instead of `jnius`.
        
        [![Tests](https://github.com/kivy/pyjnius/workflows/Continuous%20Integration/badge.svg)](https://github.com//kivy/pyjnius/actions)
        [![Builds](https://github.com/kivy/pyjnius/workflows/Continuous%20Delivery/badge.svg)](https://github.com//kivy/pyjnius/actions)
        [![PyPI](https://img.shields.io/pypi/v/pyjnius.svg)]()
        [![Backers on Open Collective](https://opencollective.com/kivy/backers/badge.svg)](#backers) 
        [![Sponsors on Open Collective](https://opencollective.com/kivy/sponsors/badge.svg)](#sponsors) 
        
        Installation
        ------------
        
        ```
        pip install pyjnius
        ```
        
        Quick overview
        --------------
        
        ```python
        >>> from jnius import autoclass
        >>> autoclass('java.lang.System').out.println('Hello world')
        Hello world
        
        >>> Stack = autoclass('java.util.Stack')
        >>> stack = Stack()
        >>> stack.push('hello')
        >>> stack.push('world')
        >>> print stack.pop()
        world
        >>> print stack.pop()
        hello
        ```
        
        Usage with python-for-android
        -----------------------------
        
        * Get [http://github.com/kivy/python-for-android]()
        * Compile a distribution with kivy (PyJNIus will be automatically added)
        
        Then, you can do this kind of things:
        
        ```python
        from time import sleep
        from jnius import autoclass
        
        Hardware = autoclass('org.renpy.android.Hardware')
        print 'DPI is', Hardware.getDPI()
        
        Hardware.accelerometerEnable(True)
        for x in xrange(20):
            print Hardware.accelerometerReading()
            sleep(.1)
        ```
        
        It will output something like:
        
        ```
        I/python  ( 5983): Android kivy bootstrap done. __name__ is __main__
        I/python  ( 5983): Run user program, change dir and execute main.py
        I/python  ( 5983): DPI is 160
        I/python  ( 5983): [0.0, 0.0, 0.0]
        I/python  ( 5983): [-0.0095768067985773087, 9.3852710723876953, 2.2218191623687744]
        I/python  ( 5983): [-0.0095768067985773087, 9.3948478698730469, 2.2218191623687744]
        I/python  ( 5983): [-0.0095768067985773087, 9.3948478698730469, 2.2026655673980713]
        I/python  ( 5983): [-0.028730420395731926, 9.4044246673583984, 2.2122423648834229]
        I/python  ( 5983): [-0.019153613597154617, 9.3852710723876953, 2.2026655673980713]
        I/python  ( 5983): [-0.028730420395731926, 9.3852710723876953, 2.2122423648834229]
        I/python  ( 5983): [-0.0095768067985773087, 9.3852710723876953, 2.1835119724273682]
        I/python  ( 5983): [-0.0095768067985773087, 9.3756942749023438, 2.1835119724273682]
        I/python  ( 5983): [0.019153613597154617, 9.3948478698730469, 2.2122423648834229]
        I/python  ( 5983): [0.038307227194309235, 9.3852710723876953, 2.2218191623687744]
        I/python  ( 5983): [-0.028730420395731926, 9.3948478698730469, 2.2026655673980713]
        I/python  ( 5983): [-0.028730420395731926, 9.3852710723876953, 2.2122423648834229]
        I/python  ( 5983): [-0.038307227194309235, 9.3756942749023438, 2.2026655673980713]
        I/python  ( 5983): [0.3926490843296051, 9.3086557388305664, 1.3311761617660522]
        I/python  ( 5983): [-0.10534487664699554, 9.4331550598144531, 2.1068975925445557]
        I/python  ( 5983): [0.26815059781074524, 9.3469638824462891, 2.3463177680969238]
        I/python  ( 5983): [-0.1149216815829277, 9.3852710723876953, 2.31758713722229]
        I/python  ( 5983): [-0.038307227194309235, 9.41400146484375, 1.8674772977828979]
        I/python  ( 5983): [0.13407529890537262, 9.4235782623291016, 2.2026655673980713]
        ```
        
        Advanced example
        ----------------
        
        When you use `autoclass`, it will discover all the methods and fields of the
        class and resolve them. You may want to declare and use only what you
        need. The previous example can be done manually as follows:
        
        ```python
        from time import sleep
        from jnius import MetaJavaClass, JavaClass, JavaMethod, JavaStaticMethod
        
        class Hardware(JavaClass):
            __metaclass__ = MetaJavaClass
            __javaclass__ = 'org/renpy/android/Hardware'
            vibrate = JavaStaticMethod('(D)V')
            accelerometerEnable = JavaStaticMethod('(Z)V')
            accelerometerReading = JavaStaticMethod('()[F')
            getDPI = JavaStaticMethod('()I')
            
        # use that new class!
        print 'DPI is', Hardware.getDPI()
        
        Hardware.accelerometerEnable()
        for x in xrange(20):
            print Hardware.accelerometerReading()
            sleep(.1)
        ```
        
        You can use the `signatures` method of `JavaMethod` and `JavaMultipleMethod`, to inspect the discovered signatures of a method of an object
        
        ```python
        >>> String = autoclass('java.lang.String')
        >>> dir(String)
        ['CASE_INSENSITIVE_ORDER', '__class__', '__cls_storage', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__javaclass__', '__javaconstructor__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__pyx_vtable__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'charAt', 'checkBounds', 'clone', 'codePointAt', 'codePointBefore', 'codePointCount', 'compareTo', 'compareToIgnoreCase', 'concat', 'contains', 'contentEquals', 'copyValueOf', 'empty', 'endsWith', 'equals', 'equalsIgnoreCase', 'finalize', 'format', 'getBytes', 'getChars', 'getClass', 'hashCode', 'indexOf', 'indexOfSupplementary', 'intern', 'isEmpty', 'join', 'lastIndexOf', 'lastIndexOfSupplementary', 'length', 'matches', 'nonSyncContentEquals', 'notify', 'notifyAll', 'offsetByCodePoints', 'regionMatches', 'registerNatives', 'replace', 'replaceAll', 'replaceFirst', 'split', 'startsWith', 'subSequence', 'substring', 'toCharArray', 'toLowerCase', 'toString', 'toUpperCase', 'trim', 'valueOf', 'wait']
        >>> String.format.signatures()
        [(['java/util/Locale', 'java/lang/String', 'java/lang/Object...'], 'java/lang/String'), (['java/lang/String', 'java/lang/Object...'], 'java/lang/String')]
        ```
        Each pair contains the list of accepted arguments types, and the returned type.
        
        Troubleshooting
        ---------------
        
        Make sure a Java Development Kit (JDK) is installed on your operating system if
        you want to use PyJNIus on desktop. OpenJDK is known to work, and the Oracle
        Java JDK should work as well.
        
        On windows, make sure `JAVA_HOME` points to your java installation, so PyJNIus
        can locate the `jvm.dll` file allowing it to start java. This shouldn't be
        necessary on OSX and Linux, but in case PyJNIus fails to find it, setting
        `JAVA_HOME` should help.
        
        Support
        -------
        
        If you need assistance, you can ask for help on our mailing list:
        
        * User Group : https://groups.google.com/group/kivy-users
        * Email      : kivy-users@googlegroups.com
        
        We also have a Discord server:
        
        [https://chat.kivy.org/](https://chat.kivy.org/)
        
        Contributing
        ------------
        
        We love pull requests and discussing novel ideas. Check out our
        [contribution guide](http://kivy.org/docs/contribute.html) and
        feel free to improve PyJNIus.
        
        The following mailing list and IRC channel are used exclusively for
        discussions about developing the Kivy framework and its sister projects:
        
        * Dev Group : https://groups.google.com/group/kivy-dev
        * Email     : kivy-dev@googlegroups.com
        
        License
        -------
        
        PyJNIus is released under the terms of the MIT License. Please refer to the
        LICENSE file for more information.
        
        
        ## Backers
        
        Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/kivy#backer)]
        
        <a href="https://opencollective.com/kivy#backers" target="_blank"><img src="https://opencollective.com/kivy/backers.svg?width=890"></a>
        
        
        ## Sponsors
        
        Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/kivy#sponsor)]
        
        <a href="https://opencollective.com/kivy/sponsor/0/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/0/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/1/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/1/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/2/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/2/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/3/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/3/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/4/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/4/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/5/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/5/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/6/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/6/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/7/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/7/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/8/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/8/avatar.svg"></a>
        <a href="https://opencollective.com/kivy/sponsor/9/website" target="_blank"><img src="https://opencollective.com/kivy/sponsor/9/avatar.svg"></a>
        
Keywords: Java JNI Android
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Android
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Description-Content-Type: text/markdown
Provides-Extra: dev
Provides-Extra: ci
