jep 4.2.2__tar.gz → 4.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. {jep-4.2.2 → jep-4.3.0}/LICENSE +1 -1
  2. {jep-4.2.2 → jep-4.3.0}/MANIFEST.in +1 -0
  3. {jep-4.2.2/src/main/python/jep.egg-info → jep-4.3.0}/PKG-INFO +22 -17
  4. {jep-4.2.2 → jep-4.3.0}/README.rst +5 -7
  5. {jep-4.2.2 → jep-4.3.0}/commands/java.py +32 -10
  6. {jep-4.2.2 → jep-4.3.0}/pom.xml +3 -3
  7. jep-4.3.0/pyproject.toml +48 -0
  8. jep-4.3.0/release_notes/4.3-notes.rst +33 -0
  9. {jep-4.2.2 → jep-4.3.0}/setup.py +1 -26
  10. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyembed.h +24 -7
  11. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjarray.h +3 -2
  12. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjbuffer.h +1 -4
  13. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjclass.h +3 -5
  14. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjconstructor.h +3 -5
  15. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjfield.h +4 -4
  16. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjmethod.h +5 -5
  17. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjmonitor.h +2 -7
  18. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjmultimethod.h +5 -5
  19. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjobject.h +3 -4
  20. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjtype.h +3 -1
  21. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/convert_j2p.c +0 -4
  22. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Class.c +3 -3
  23. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/jep.c +21 -12
  24. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/jep_numpy.c +32 -4
  25. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/maininterpreter.c +21 -27
  26. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/pyembed.c +347 -275
  27. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjarray.c +72 -140
  28. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjbuffer.c +9 -49
  29. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjclass.c +63 -55
  30. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjconstructor.c +16 -58
  31. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjfield.c +33 -53
  32. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjmethod.c +34 -50
  33. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjmonitor.c +29 -56
  34. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjmultimethod.c +44 -79
  35. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjobject.c +39 -45
  36. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjtype.c +69 -134
  37. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/Interpreter.java +46 -1
  38. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/Jep.java +84 -30
  39. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/JepConfig.java +11 -9
  40. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/LibraryLocator.java +19 -17
  41. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/MainInterpreter.java +25 -15
  42. jep-4.3.0/src/main/java/jep/PyConfig.java +436 -0
  43. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/python/MemoryManager.java +13 -9
  44. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep/java_import_hook.py +9 -8
  45. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep/version.py +1 -1
  46. {jep-4.2.2 → jep-4.3.0/src/main/python/jep.egg-info}/PKG-INFO +22 -17
  47. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep.egg-info/SOURCES.txt +6 -0
  48. jep-4.3.0/src/main/python/jep.egg-info/requires.txt +3 -0
  49. jep-4.3.0/src/test/java/jep/test/TestAttach.java +191 -0
  50. jep-4.3.0/src/test/java/jep/test/TestIsolatedSubInterpreter.java +44 -0
  51. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestPreInitVariables.java +15 -15
  52. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestSharedArgv.java +6 -2
  53. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestSubInterpOptions.java +65 -21
  54. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_allow_python_enquirer.py +0 -3
  55. jep-4.3.0/src/test/python/test_attach.py +10 -0
  56. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_import.py +2 -1
  57. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_preinits.py +2 -1
  58. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_regressions.py +4 -1
  59. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_types.py +7 -12
  60. jep-4.2.2/src/main/java/jep/PyConfig.java +0 -196
  61. {jep-4.2.2 → jep-4.3.0}/AUTHORS +0 -0
  62. {jep-4.2.2 → jep-4.3.0}/commands/__init__.py +0 -0
  63. {jep-4.2.2 → jep-4.3.0}/commands/_msvccompiler.py +0 -0
  64. {jep-4.2.2 → jep-4.3.0}/commands/build_ext.py +0 -0
  65. {jep-4.2.2 → jep-4.3.0}/commands/clean.py +0 -0
  66. {jep-4.2.2 → jep-4.3.0}/commands/dist.py +0 -0
  67. {jep-4.2.2 → jep-4.3.0}/commands/install_lib.py +0 -0
  68. {jep-4.2.2 → jep-4.3.0}/commands/javadoc.py +0 -0
  69. {jep-4.2.2 → jep-4.3.0}/commands/link_util.py +0 -0
  70. {jep-4.2.2 → jep-4.3.0}/commands/msvc9compiler.py +0 -0
  71. {jep-4.2.2 → jep-4.3.0}/commands/python.py +0 -0
  72. {jep-4.2.2 → jep-4.3.0}/commands/scripts.py +0 -0
  73. {jep-4.2.2 → jep-4.3.0}/commands/test.py +0 -0
  74. {jep-4.2.2 → jep-4.3.0}/commands/util.py +0 -0
  75. {jep-4.2.2 → jep-4.3.0}/release_notes/1.0-notes.rst +0 -0
  76. {jep-4.2.2 → jep-4.3.0}/release_notes/1.1-notes.rst +0 -0
  77. {jep-4.2.2 → jep-4.3.0}/release_notes/2.0-notes.rst +0 -0
  78. {jep-4.2.2 → jep-4.3.0}/release_notes/2.1-notes.rst +0 -0
  79. {jep-4.2.2 → jep-4.3.0}/release_notes/2.2-notes.rst +0 -0
  80. {jep-4.2.2 → jep-4.3.0}/release_notes/2.3-notes.rst +0 -0
  81. {jep-4.2.2 → jep-4.3.0}/release_notes/2.4-notes.rst +0 -0
  82. {jep-4.2.2 → jep-4.3.0}/release_notes/3.0-notes.rst +0 -0
  83. {jep-4.2.2 → jep-4.3.0}/release_notes/3.1-notes.rst +0 -0
  84. {jep-4.2.2 → jep-4.3.0}/release_notes/3.2-notes.rst +0 -0
  85. {jep-4.2.2 → jep-4.3.0}/release_notes/3.3-notes.rst +0 -0
  86. {jep-4.2.2 → jep-4.3.0}/release_notes/3.4-notes.rst +0 -0
  87. {jep-4.2.2 → jep-4.3.0}/release_notes/3.5-notes.rst +0 -0
  88. {jep-4.2.2 → jep-4.3.0}/release_notes/3.6-notes.rst +0 -0
  89. {jep-4.2.2 → jep-4.3.0}/release_notes/3.7-notes.rst +0 -0
  90. {jep-4.2.2 → jep-4.3.0}/release_notes/3.8-notes.rst +0 -0
  91. {jep-4.2.2 → jep-4.3.0}/release_notes/3.9-notes.rst +0 -0
  92. {jep-4.2.2 → jep-4.3.0}/release_notes/4.0-notes.rst +0 -0
  93. {jep-4.2.2 → jep-4.3.0}/release_notes/4.1-notes.rst +0 -0
  94. {jep-4.2.2 → jep-4.3.0}/release_notes/4.2-notes.rst +0 -0
  95. {jep-4.2.2 → jep-4.3.0}/setup.cfg +0 -0
  96. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/Jep.h +0 -0
  97. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/convert_j2p.h +0 -0
  98. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/convert_p2j.h +0 -0
  99. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/AnnotatedElement.h +0 -0
  100. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/ArrayList.h +0 -0
  101. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/AutoCloseable.h +0 -0
  102. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/BigInteger.h +0 -0
  103. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Boolean.h +0 -0
  104. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Buffer.h +0 -0
  105. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Byte.h +0 -0
  106. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/ByteBuffer.h +0 -0
  107. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/ByteOrder.h +0 -0
  108. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/CharBuffer.h +0 -0
  109. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Character.h +0 -0
  110. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Class.h +0 -0
  111. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/ClassLoader.h +0 -0
  112. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Collection.h +0 -0
  113. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Collections.h +0 -0
  114. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Comparable.h +0 -0
  115. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Double.h +0 -0
  116. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/DoubleBuffer.h +0 -0
  117. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Entry.h +0 -0
  118. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Executable.h +0 -0
  119. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Field.h +0 -0
  120. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Float.h +0 -0
  121. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/FloatBuffer.h +0 -0
  122. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/HashMap.h +0 -0
  123. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/IntBuffer.h +0 -0
  124. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Integer.h +0 -0
  125. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Iterable.h +0 -0
  126. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Iterator.h +0 -0
  127. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/JPyCallable.h +0 -0
  128. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/JPyMethod.h +0 -0
  129. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/JPyObject.h +0 -0
  130. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/JepException.h +0 -0
  131. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/List.h +0 -0
  132. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Long.h +0 -0
  133. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/LongBuffer.h +0 -0
  134. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Map.h +0 -0
  135. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Member.h +0 -0
  136. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Method.h +0 -0
  137. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Modifier.h +0 -0
  138. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Number.h +0 -0
  139. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Object.h +0 -0
  140. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Proxy.h +0 -0
  141. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Short.h +0 -0
  142. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/ShortBuffer.h +0 -0
  143. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/String.h +0 -0
  144. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/java_access/Throwable.h +0 -0
  145. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/jep_exceptions.h +0 -0
  146. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/jep_numpy.h +0 -0
  147. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/jep_platform.h +0 -0
  148. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/jep_util.h +0 -0
  149. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjautocloseable.h +0 -0
  150. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjcollection.h +0 -0
  151. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjiterable.h +0 -0
  152. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjiterator.h +0 -0
  153. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjlist.h +0 -0
  154. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjmap.h +0 -0
  155. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/pyjnumber.h +0 -0
  156. {jep-4.2.2 → jep-4.3.0}/src/main/c/Include/winconfig.h +0 -0
  157. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/convert_p2j.c +0 -0
  158. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/AnnotatedElement.c +0 -0
  159. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/ArrayList.c +0 -0
  160. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/AutoCloseable.c +0 -0
  161. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/BigInteger.c +0 -0
  162. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Boolean.c +0 -0
  163. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Buffer.c +0 -0
  164. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Byte.c +0 -0
  165. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/ByteBuffer.c +0 -0
  166. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/ByteOrder.c +0 -0
  167. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/CharBuffer.c +0 -0
  168. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Character.c +0 -0
  169. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/ClassLoader.c +0 -0
  170. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Collection.c +0 -0
  171. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Collections.c +0 -0
  172. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Comparable.c +0 -0
  173. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Double.c +0 -0
  174. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/DoubleBuffer.c +0 -0
  175. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Entry.c +0 -0
  176. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Executable.c +0 -0
  177. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Field.c +0 -0
  178. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Float.c +0 -0
  179. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/FloatBuffer.c +0 -0
  180. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/HashMap.c +0 -0
  181. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/IntBuffer.c +0 -0
  182. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Integer.c +0 -0
  183. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Iterable.c +0 -0
  184. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Iterator.c +0 -0
  185. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/JPyCallable.c +0 -0
  186. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/JPyMethod.c +0 -0
  187. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/JPyObject.c +0 -0
  188. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/JepException.c +0 -0
  189. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/List.c +0 -0
  190. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Long.c +0 -0
  191. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/LongBuffer.c +0 -0
  192. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Map.c +0 -0
  193. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Member.c +0 -0
  194. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Method.c +0 -0
  195. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Modifier.c +0 -0
  196. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Number.c +0 -0
  197. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Object.c +0 -0
  198. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Proxy.c +0 -0
  199. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Short.c +0 -0
  200. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/ShortBuffer.c +0 -0
  201. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/String.c +0 -0
  202. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/java_access/Throwable.c +0 -0
  203. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/jep_exceptions.c +0 -0
  204. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/jep_util.c +0 -0
  205. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/python/invocationhandler.c +0 -0
  206. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/python/jep_object.c +0 -0
  207. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/python/jpycallable.c +0 -0
  208. {jep-4.2.2 → jep-4.3.0}/src/main/c/Jep/python/pypointer.c +0 -0
  209. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjautocloseable.c +0 -0
  210. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjcollection.c +0 -0
  211. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjiterable.c +0 -0
  212. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjiterator.c +0 -0
  213. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjlist.c +0 -0
  214. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjmap.c +0 -0
  215. {jep-4.2.2 → jep-4.3.0}/src/main/c/Objects/pyjnumber.c +0 -0
  216. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/AbstractNDArray.java +0 -0
  217. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/AllowPythonClassEnquirer.java +0 -0
  218. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/ClassEnquirer.java +0 -0
  219. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/ClassList.java +0 -0
  220. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/DirectNDArray.java +0 -0
  221. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/JepAccess.java +0 -0
  222. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/JepException.java +0 -0
  223. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/NDArray.java +0 -0
  224. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/NamingConventionClassEnquirer.java +0 -0
  225. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/Proxy.java +0 -0
  226. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/PyMethod.java +0 -0
  227. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/Run.java +0 -0
  228. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/SharedInterpreter.java +0 -0
  229. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/SubInterpreter.java +0 -0
  230. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/SubInterpreterOptions.java +0 -0
  231. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/python/InvocationHandler.java +0 -0
  232. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/python/PyBuiltins.java +0 -0
  233. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/python/PyCallable.java +0 -0
  234. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/python/PyObject.java +0 -0
  235. {jep-4.2.2 → jep-4.3.0}/src/main/java/jep/python/PyPointer.java +0 -0
  236. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep/__init__.py +0 -0
  237. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep/console.py +0 -0
  238. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep/jdbc.py +0 -0
  239. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep/redirect_streams.py +0 -0
  240. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep/shared_modules_hook.py +0 -0
  241. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep.egg-info/dependency_links.txt +0 -0
  242. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep.egg-info/not-zip-safe +0 -0
  243. {jep-4.2.2 → jep-4.3.0}/src/main/python/jep.egg-info/top_level.txt +0 -0
  244. {jep-4.2.2 → jep-4.3.0}/src/main/resources/jep/classlist_10.txt +0 -0
  245. {jep-4.2.2 → jep-4.3.0}/src/main/resources/jep/classlist_11.txt +0 -0
  246. {jep-4.2.2 → jep-4.3.0}/src/main/resources/jep/classlist_8.txt +0 -0
  247. {jep-4.2.2 → jep-4.3.0}/src/main/resources/jep/classlist_9.txt +0 -0
  248. {jep-4.2.2 → jep-4.3.0}/src/main/scripts/jep +0 -0
  249. {jep-4.2.2 → jep-4.3.0}/src/main/scripts/jep.bat +0 -0
  250. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/Test.java +0 -0
  251. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestAllowPythonEnquirer.java +0 -0
  252. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestCloseWithThreads.java +0 -0
  253. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestCompiledScript.java +0 -0
  254. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestDefaultMethods.java +0 -0
  255. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestExceptionCause.java +0 -0
  256. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestExec.java +0 -0
  257. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestGetByteArray.java +0 -0
  258. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestGetCollectionBoxing.java +0 -0
  259. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestGetJPyObject.java +0 -0
  260. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestGetTempValue.java +0 -0
  261. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestGetWithClass.java +0 -0
  262. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestInvoke.java +0 -0
  263. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestIteratorable.java +0 -0
  264. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestOverload.java +0 -0
  265. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestPyBuiltins.java +0 -0
  266. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestPyJObject.java +0 -0
  267. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestPyJType.java +0 -0
  268. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestRedirectStreams.java +0 -0
  269. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestSharedInterpreter.java +0 -0
  270. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestSharedModules.java +0 -0
  271. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/TestSharedModulesThreads.java +0 -0
  272. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/closeable/TestAutoCloseable.java +0 -0
  273. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/numpy/TestNumpy.java +0 -0
  274. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/numpy/TestNumpyArrayToString.java +0 -0
  275. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/numpy/TestNumpyProdShared.java +0 -0
  276. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/synchronization/TestCrossLangSync.java +0 -0
  277. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/types/TestFieldTypes.java +0 -0
  278. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/types/TestMethodTypes.java +0 -0
  279. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/types/TestStaticFieldTypes.java +0 -0
  280. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/types/TestStaticMethodTypes.java +0 -0
  281. {jep-4.2.2 → jep-4.3.0}/src/test/java/jep/test/util/SubInterpreterThread.java +0 -0
  282. {jep-4.2.2 → jep-4.3.0}/src/test/python/__init__.py +0 -0
  283. {jep-4.2.2 → jep-4.3.0}/src/test/python/data/read_file.txt +0 -0
  284. {jep-4.2.2 → jep-4.3.0}/src/test/python/jep_pipe.py +0 -0
  285. {jep-4.2.2 → jep-4.3.0}/src/test/python/lib/fakenetty.jar +0 -0
  286. {jep-4.2.2 → jep-4.3.0}/src/test/python/lib/sqlitejdbc-v056.jar +0 -0
  287. {jep-4.2.2 → jep-4.3.0}/src/test/python/runtests.py +0 -0
  288. {jep-4.2.2 → jep-4.3.0}/src/test/python/subprocess/invoke_args.py +0 -0
  289. {jep-4.2.2 → jep-4.3.0}/src/test/python/subprocess/iter_itr_crash.py +0 -0
  290. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_array.py +0 -0
  291. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_autocloseable.py +0 -0
  292. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_call.py +0 -0
  293. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_compare.py +0 -0
  294. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_convert.py +0 -0
  295. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_dir.py +0 -0
  296. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_exceptions.py +0 -0
  297. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_exec.py +0 -0
  298. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_getvalue.py +0 -0
  299. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_invoke.py +0 -0
  300. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_iterators.py +0 -0
  301. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_jdbc.py +0 -0
  302. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_jproxy.py +0 -0
  303. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_lists.py +0 -0
  304. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_maps.py +0 -0
  305. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_numbers.py +0 -0
  306. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_numpy.py +0 -0
  307. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_object.py +0 -0
  308. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_overload.py +0 -0
  309. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_pybuiltins.py +0 -0
  310. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_python_memory.py +0 -0
  311. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_redirect_streams.py +0 -0
  312. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_run_script.py +0 -0
  313. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_shared_interpreter.py +0 -0
  314. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_shared_modules.py +0 -0
  315. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_sub_interp_options.py +0 -0
  316. {jep-4.2.2 → jep-4.3.0}/src/test/python/test_synchronized.py +0 -0
@@ -1,4 +1,4 @@
1
- Copyright (c) 2004 - 2022 JEP AUTHORS.
1
+ Copyright (c) 2004 - 2025 JEP AUTHORS.
2
2
 
3
3
  This file is licenced under the the zlib/libpng License.
4
4
 
@@ -7,3 +7,4 @@ include LICENSE
7
7
  include AUTHORS
8
8
  include README.rst
9
9
  include pom.xml
10
+ include pyproject.toml
@@ -1,29 +1,36 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jep
3
- Version: 4.2.2
4
- Summary: Jep embeds CPython in Java
5
- Home-page: https://github.com/ninia/jep
6
- Author: Jep Developers
7
- Author-email: jep-project@googlegroups.com
8
- License: zlib/libpng
3
+ Version: 4.3.0
4
+ Summary: Jep embeds CPython in Java through JNI.
5
+ Author-email: Mike Johnson <mike@mrj0.com>
6
+ Maintainer-email: Nate Jensen <ndjensen@gmail.com>, Ben Steffensmeier <ben.steffensmeier@gmail.com>
7
+ License: Zlib
8
+ Project-URL: Homepage, https://github.com/ninia/jep
9
+ Project-URL: Documentation, https://github.com/ninia/jep/wiki
10
+ Project-URL: JavaDoc, https://ninia.github.io/jep/javadoc
11
+ Project-URL: Repository, https://github.com/ninia/jep.git
12
+ Project-URL: Issues, https://github.com/ninia/jep.issues
9
13
  Keywords: java
10
14
  Classifier: License :: OSI Approved :: zlib/libpng License
11
15
  Classifier: Development Status :: 5 - Production/Stable
12
16
  Classifier: Intended Audience :: Developers
13
17
  Classifier: Topic :: Software Development
18
+ Classifier: Topic :: Software Development :: Libraries :: Java Libraries
14
19
  Classifier: Programming Language :: Java
15
20
  Classifier: Programming Language :: Python
16
- Classifier: Programming Language :: Python :: 3.6
17
- Classifier: Programming Language :: Python :: 3.7
18
- Classifier: Programming Language :: Python :: 3.8
19
- Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3
20
22
  Classifier: Programming Language :: Python :: 3.10
21
23
  Classifier: Programming Language :: Python :: 3.11
22
24
  Classifier: Programming Language :: Python :: 3.12
23
25
  Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3.14
24
27
  Classifier: Programming Language :: Python :: Implementation :: CPython
28
+ Requires-Python: >=3.10
29
+ Description-Content-Type: text/x-rst
25
30
  License-File: LICENSE
26
31
  License-File: AUTHORS
32
+ Provides-Extra: numpy
33
+ Requires-Dist: numpy>=1.7; extra == "numpy"
27
34
 
28
35
  .. image:: https://img.shields.io/pypi/pyversions/Jep.svg
29
36
  :target: https://pypi.python.org/pypi/jep
@@ -66,16 +73,14 @@ Some benefits of embedding CPython in a JVM:
66
73
 
67
74
  Installation
68
75
  ------------
69
- Simply run ``pip install --no-cache-dir --no-build-isolation jep`` or download
70
- the source and run ``pip install .``. Building and installing require the JDK,
71
- Python, setuptools, and optionally numpy to be installed beforehand. The
72
- ``--no-cache-dir`` and ``--no-build-isolation`` options are not strictly
73
- required, however those settings enable Jep to make customizations for your
74
- environment such as enabling numpy specific behavior if numpy is installed.
76
+ Simply run ``pip install jep`` or download the source and run
77
+ ``pip install .``. Building and installing require the JDK and Python,
78
+ to be installed beforehand. Pip will need to be able to install setuptools
79
+ and numpy to build jep.
75
80
 
76
81
  Dependencies
77
82
  ------------
78
- * Python >= 3.6
83
+ * Python >= 3.10
79
84
  * Java >= 1.8
80
85
  * NumPy >= 1.7 (optional)
81
86
 
@@ -39,16 +39,14 @@ Some benefits of embedding CPython in a JVM:
39
39
 
40
40
  Installation
41
41
  ------------
42
- Simply run ``pip install --no-cache-dir --no-build-isolation jep`` or download
43
- the source and run ``pip install .``. Building and installing require the JDK,
44
- Python, setuptools, and optionally numpy to be installed beforehand. The
45
- ``--no-cache-dir`` and ``--no-build-isolation`` options are not strictly
46
- required, however those settings enable Jep to make customizations for your
47
- environment such as enabling numpy specific behavior if numpy is installed.
42
+ Simply run ``pip install jep`` or download the source and run
43
+ ``pip install .``. Building and installing require the JDK and Python,
44
+ to be installed beforehand. Pip will need to be able to install setuptools
45
+ and numpy to build jep.
48
46
 
49
47
  Dependencies
50
48
  ------------
51
- * Python >= 3.6
49
+ * Python >= 3.10
52
50
  * Java >= 1.8
53
51
  * NumPy >= 1.7 (optional)
54
52
 
@@ -10,6 +10,7 @@ import fnmatch
10
10
  import traceback
11
11
  import sys
12
12
  import logging
13
+ import textwrap
13
14
  from pathlib import Path
14
15
 
15
16
  from commands.util import configure_error
@@ -278,13 +279,32 @@ class build_jar(Command):
278
279
  if not os.path.exists(dest_dir):
279
280
  os.makedirs(dest_dir)
280
281
  shutil.copy(src, dest)
281
-
282
+
282
283
  self.setup_meta_inf(os.path.join('build', 'java'))
283
284
 
284
- self.spawn([self.jar, '-cf', 'build/java/jep-{0}-sources.jar'.format(self.version), '-C', 'build/java/jep.src/main/java', 'jep', '-C', 'build/java', 'META-INF'])
285
- self.spawn([self.jar, '-cfe', 'build/java/jep-{0}.jar'.format(self.version), 'jep.Run', '-C', 'build/java', 'jep', '-C', 'build/java', 'META-INF'])
286
- self.spawn([self.jar, '-cf', 'build/java/jep-{0}-test-sources.jar'.format(self.version), '-C', 'build/java/jep.test.src/test/java', 'jep', '-C', 'build/java', 'META-INF'])
287
- self.spawn([self.jar, '-cfe', 'build/java/jep-{0}-test.jar'.format(self.version), 'test.jep.Test', '-C', 'build/java/test', 'jep', '-C', 'build/java', 'META-INF'])
285
+ self.spawn([self.jar, '-cf',
286
+ f'build/java/jep-{self.version}-sources.jar',
287
+ '-C','build/java/jep.src/main/java', 'jep',
288
+ '-C', 'build/java', 'META-INF'
289
+ ])
290
+ self.spawn([self.jar, '-cfem',
291
+ f'build/java/jep-{self.version}.jar',
292
+ 'jep.Run',
293
+ 'build/java/MANIFEST-ADD.MF',
294
+ '-C', 'build/java', 'jep',
295
+ '-C', 'build/java', 'META-INF'
296
+ ])
297
+ self.spawn([self.jar, '-cf',
298
+ f'build/java/jep-{self.version}-test-sources.jar',
299
+ '-C', 'build/java/jep.test.src/test/java', 'jep',
300
+ '-C', 'build/java', 'META-INF'
301
+ ])
302
+ self.spawn([self.jar, '-cfe',
303
+ f'build/java/jep-{self.version}-test.jar',
304
+ 'test.jep.Test',
305
+ '-C', 'build/java/test', 'jep',
306
+ '-C', 'build/java', 'META-INF'
307
+ ])
288
308
 
289
309
 
290
310
  def run(self):
@@ -294,13 +314,15 @@ class build_jar(Command):
294
314
  logging.debug('skipping packing jar files (up to date)')
295
315
 
296
316
  def setup_meta_inf(self, dest_dir):
297
- pom_dir = os.path.join(dest_dir, 'META-INF', 'maven', 'black.ninia', 'jep')
317
+ pom_dir = os.path.join(dest_dir, 'META-INF', 'maven', 'org.ninia', 'jep')
298
318
  if not os.path.exists(pom_dir):
299
319
  os.makedirs(pom_dir)
300
320
  shutil.copy('pom.xml', pom_dir)
301
- pom_props ="""artifactId=jep
302
- groupId=black.ninia
303
- version="""
304
- pom_props += self.version
321
+ pom_props = textwrap.dedent(f"""\
322
+ artifactId=jep
323
+ groupId=org.ninia
324
+ version={self.version}""")
305
325
  with open(os.path.join(pom_dir, 'pom.properties'), 'w') as f:
306
326
  f.write(pom_props)
327
+ with open(os.path.join(dest_dir, 'MANIFEST-ADD.MF'), 'w') as f:
328
+ f.write("Automatic-Module-Name: org.ninia.jep\n")
@@ -4,9 +4,9 @@
4
4
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
5
5
  <modelVersion>4.0.0</modelVersion>
6
6
 
7
- <groupId>black.ninia</groupId>
7
+ <groupId>org.ninia</groupId>
8
8
  <artifactId>jep</artifactId>
9
- <version>4.2.2</version>
9
+ <version>4.3.0</version>
10
10
  <packaging>jar</packaging>
11
11
 
12
12
  <name>Java Embedded Python</name>
@@ -39,7 +39,7 @@
39
39
  <scm>
40
40
  <connection>scm:git:git://github.com/ninia/jep.git</connection>
41
41
  <developerConnection>scm:git:ssh://github.com:ninia/jep.git</developerConnection>
42
- <url>https://github.com/ninia/jep/tree/v4.2.2</url>
42
+ <url>https://github.com/ninia/jep/tree/v4.3.0</url>
43
43
  </scm>
44
44
 
45
45
  <properties>
@@ -0,0 +1,48 @@
1
+ [build-system]
2
+ requires = [
3
+ "setuptools >= 61.0",
4
+ "numpy >= 1.7" # Remove numpy to build without numpy support.
5
+ ]
6
+ build-backend = "setuptools.build_meta:__legacy__"
7
+
8
+ [project]
9
+ name = "jep"
10
+ description = "Jep embeds CPython in Java through JNI."
11
+ dynamic = ["version"]
12
+ license = { "text" = "Zlib"}
13
+ readme = "README.rst"
14
+ requires-python = ">= 3.10"
15
+ authors = [
16
+ {name = "Mike Johnson", email = "mike@mrj0.com"}
17
+ ]
18
+ maintainers = [
19
+ {name = "Nate Jensen", email = "ndjensen@gmail.com"},
20
+ {name = "Ben Steffensmeier", email = "ben.steffensmeier@gmail.com"}
21
+ ]
22
+ classifiers = [
23
+ "License :: OSI Approved :: zlib/libpng License",
24
+ "Development Status :: 5 - Production/Stable",
25
+ "Intended Audience :: Developers",
26
+ "Topic :: Software Development",
27
+ "Topic :: Software Development :: Libraries :: Java Libraries",
28
+ "Programming Language :: Java",
29
+ "Programming Language :: Python",
30
+ "Programming Language :: Python :: 3",
31
+ "Programming Language :: Python :: 3.10",
32
+ "Programming Language :: Python :: 3.11",
33
+ "Programming Language :: Python :: 3.12",
34
+ "Programming Language :: Python :: 3.13",
35
+ "Programming Language :: Python :: 3.14",
36
+ "Programming Language :: Python :: Implementation :: CPython"
37
+ ]
38
+ keywords = ["java"]
39
+
40
+ [project.urls]
41
+ Homepage = "https://github.com/ninia/jep"
42
+ Documentation = "https://github.com/ninia/jep/wiki"
43
+ JavaDoc = "https://ninia.github.io/jep/javadoc"
44
+ Repository = "https://github.com/ninia/jep.git"
45
+ Issues = "https://github.com/ninia/jep.issues"
46
+
47
+ [project.optional-dependencies]
48
+ numpy = ["numpy >= 1.7"]
@@ -0,0 +1,33 @@
1
+ Jep 4.3 Release Notes
2
+ *********************
3
+ The maven groupId for Jep has changed from black.ninia to org.ninia. This
4
+ release drops support for versions of Python older than 3.10. It includes
5
+ changes to modernize and simplify the build, improve compatibility with
6
+ isolated sub-interpreters, and remove use of deprecated Python features.
7
+
8
+ Updates to PyConfig
9
+ *******************
10
+ `PyConfig <https://ninia.github.io/jep/javadoc/4.3/jep/PyConfig.html>`_ has
11
+ been updated so that the API maps directly to the PyConfig structure in the
12
+ Python C API which was introduced with
13
+ `PEP 587 <https://peps.python.org/pep-0587/>`_. Most of the existing methods
14
+ are now deprecated. The deprecated methods will continue to work as they did
15
+ before for now but they will be removed in a future release.
16
+
17
+ Share Interpreter State between Threads
18
+ ***************************************
19
+ It is now possible to attach multiple threads to an existing Interpreter using
20
+ `Interpreter.attach() <https://ninia.github.io/jep/javadoc/4.3/jep/Interpreter.html#attach-boolean->`_.
21
+ Interpreters created this way will share state such as ``sys.modules`` and
22
+ even have the option to share globals which allows multiple threads to have
23
+ identical access to an interpreter.
24
+
25
+ Modernized build
26
+ ****************
27
+ Project configuration is now in pyproject.toml. The actual build is still
28
+ done with the legacy setuptools. For compatibility with the isolated build
29
+ environment used by pip, numpy is now a required build dependency. When jep is
30
+ built with numpy it can be used without numpy as long as NDArrays are not
31
+ passed from Java to Python. It is still possible to build jep without numpy
32
+ if neccesary but it now requires downloading the source and modifying
33
+ pyproject.toml to remove the numpy dependency.
@@ -81,35 +81,10 @@ if __name__ == '__main__':
81
81
  #Disable warnings about Secure CRT Functions in util.c and pyembed.c.
82
82
  defines.append(('_CRT_SECURE_NO_WARNINGS', 1))
83
83
 
84
- setup(name='jep',
85
- version=VERSION,
86
- description='Jep embeds CPython in Java',
87
- long_description=read_file('README.rst'),
88
- author='Jep Developers',
89
- author_email='jep-project@googlegroups.com',
90
- url='https://github.com/ninia/jep',
84
+ setup(version=VERSION,
91
85
  packages=['jep'],
92
86
  package_dir={'': 'src/main/python'},
93
87
  scripts=['src/main/scripts/jep'],
94
- keywords='java',
95
- license='zlib/libpng',
96
- classifiers=[
97
- 'License :: OSI Approved :: zlib/libpng License',
98
- 'Development Status :: 5 - Production/Stable',
99
- 'Intended Audience :: Developers',
100
- 'Topic :: Software Development',
101
- 'Programming Language :: Java',
102
- 'Programming Language :: Python',
103
- 'Programming Language :: Python :: 3.6',
104
- 'Programming Language :: Python :: 3.7',
105
- 'Programming Language :: Python :: 3.8',
106
- 'Programming Language :: Python :: 3.9',
107
- 'Programming Language :: Python :: 3.10',
108
- 'Programming Language :: Python :: 3.11',
109
- 'Programming Language :: Python :: 3.12',
110
- 'Programming Language :: Python :: 3.13',
111
- 'Programming Language :: Python :: Implementation :: CPython',
112
- ],
113
88
  ext_modules=[
114
89
  Extension(
115
90
  name='jep',
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2004-2022 JEP AUTHORS.
4
+ Copyright (c) 2004-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -42,16 +42,32 @@ struct __JepThread {
42
42
  };
43
43
  typedef struct __JepThread JepThread;
44
44
 
45
+ struct __JepModuleState {
46
+ PyObject *pyJTypeCache;
45
47
 
46
- void pyembed_preinit(JNIEnv*, jint, jint, jint, jint, jint, jint, jint,
47
- jstring, jstring);
48
- void pyembed_startup(JNIEnv*, jobjectArray);
48
+ PyTypeObject *PyJType_Type;
49
+ PyTypeObject *PyJField_Type;
50
+ PyTypeObject *PyJMethod_Type;
51
+ PyTypeObject *PyJConstructor_Type;
52
+ PyTypeObject *PyJMultiMethod_Type;
53
+
54
+ PyTypeObject *PyJObject_Type;
55
+ PyTypeObject *PyJClass_Type;
56
+ PyTypeObject *PyJArray_Type;
57
+
58
+ PyTypeObject *PyJMonitor_Type;
59
+ PyTypeObject *PyJArrayIter_Type;
60
+ };
61
+ typedef struct __JepModuleState JepModuleState;
62
+
63
+ void pyembed_startup(JNIEnv*, jboolean, jobjectArray, jint, jint, jstring, jint,
64
+ jint, jstring, jint, jint, jint, jint, jint);
49
65
  void pyembed_shutdown(JavaVM*);
50
66
  void pyembed_shared_import(JNIEnv*, jstring);
51
67
 
52
- intptr_t pyembed_thread_init(JNIEnv*, jobject, jobject, jboolean, jboolean,
53
- jboolean, jint, jint, jint, jint, jint, jint, jint);
54
- void pyembed_thread_close(JNIEnv*, intptr_t);
68
+ intptr_t pyembed_thread_init_sub(JNIEnv*, jobject, jobject, jboolean, jboolean, jint, jint, jint, jint, jint, jint, jint);
69
+ intptr_t pyembed_thread_init_shared(JNIEnv*, jobject, jobject, intptr_t, jboolean);
70
+ void pyembed_thread_close(JNIEnv*, intptr_t, jboolean);
55
71
 
56
72
  void pyembed_close(void);
57
73
  void pyembed_run(JNIEnv*, intptr_t, char*);
@@ -69,6 +85,7 @@ jobject pyembed_getvalue(JNIEnv*, intptr_t, char*, jclass);
69
85
  JNIEnv* pyembed_get_env(void);
70
86
  JepThread* pyembed_get_jepthread(void);
71
87
  PyObject* pyembed_get_jep_module(void);
88
+ JepModuleState* pyembed_get_module_state(void);
72
89
 
73
90
  // -------------------------------------------------- set() methods
74
91
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2004-2022 JEP AUTHORS.
4
+ Copyright (c) 2004-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -32,7 +32,8 @@
32
32
  #define _Included_pyjarray
33
33
 
34
34
 
35
- extern PyTypeObject PyJArray_Type;
35
+ extern PyType_Spec PyJArray_Spec;
36
+ extern PyType_Spec PyJArrayIter_Spec;
36
37
 
37
38
  // c storage for our stuff, managed by python interpreter.
38
39
  typedef struct {
@@ -37,9 +37,6 @@
37
37
  #ifndef _Included_pyjbuffer
38
38
  #define _Included_pyjbuffer
39
39
 
40
- extern PyTypeObject PyJBuffer_Type;
41
-
42
- #define PyJBuffer_Check(pyobj) \
43
- PyObject_TypeCheck(pyobj, &PyJBuffer_Type)
40
+ extern PyType_Spec PyJBuffer_Spec;
44
41
 
45
42
  #endif // ndef pyjbuffer
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2004-2022 JEP AUTHORS.
4
+ Copyright (c) 2004-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -36,7 +36,7 @@
36
36
  #ifndef _Included_pyjclass
37
37
  #define _Included_pyjclass
38
38
 
39
- extern PyTypeObject PyJClass_Type;
39
+ extern PyType_Spec PyJClass_Spec;
40
40
 
41
41
  typedef struct {
42
42
  PyObject_HEAD
@@ -52,8 +52,6 @@ typedef struct {
52
52
 
53
53
  PyObject* PyJClass_Wrap(JNIEnv*, jobject);
54
54
 
55
- #define PyJClass_Check(pyobj) \
56
- PyObject_TypeCheck(pyobj, &PyJClass_Type)
57
-
55
+ int PyJClass_Check(PyObject*);
58
56
 
59
57
  #endif // ndef pyjclass
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2016-2022 JEP AUTHORS.
4
+ Copyright (c) 2016-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -31,11 +31,9 @@
31
31
  #ifndef _Included_pyjconstructor
32
32
  #define _Included_pyjconstructor
33
33
 
34
- extern PyTypeObject PyJConstructor_Type;
34
+ extern PyType_Spec PyJConstructor_Spec;
35
35
 
36
36
  /* Second arg must be a java.lang.reflect.Constructor */
37
- PyObject* PyJConstructor_New(JNIEnv*, jobject);
38
-
39
- int PyJConstructor_Check(PyObject*);
37
+ PyObject* PyJConstructor_New(JNIEnv*, JepModuleState*, jobject);
40
38
 
41
39
  #endif // ndef pyjconstructor
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2004-2022 JEP AUTHORS.
4
+ Copyright (c) 2004-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -31,7 +31,7 @@
31
31
  #ifndef _Included_pyjfield
32
32
  #define _Included_pyjfield
33
33
 
34
- extern PyTypeObject PyJField_Type;
34
+ extern PyType_Spec PyJField_Spec;
35
35
 
36
36
  /* Represents a java field on a java object and allows getting and setting values */
37
37
  typedef struct {
@@ -47,8 +47,8 @@ typedef struct {
47
47
  } PyJFieldObject;
48
48
 
49
49
 
50
- PyJFieldObject* PyJField_New(JNIEnv*, jobject);
51
- int PyJField_Check(PyObject*);
50
+ PyJFieldObject* PyJField_New(JNIEnv*, JepModuleState*, jobject);
51
+ int PyJField_Check(JepModuleState*, PyObject*);
52
52
 
53
53
  PyObject* pyjfield_get(PyJFieldObject*, PyJObject*);
54
54
  int pyjfield_set(PyJFieldObject*, PyJObject*, PyObject*);
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2004-2022 JEP AUTHORS.
4
+ Copyright (c) 2004-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -32,7 +32,7 @@
32
32
  #define _Included_pyjmethod
33
33
 
34
34
 
35
- extern PyTypeObject PyJMethod_Type;
35
+ extern PyType_Spec PyJMethod_Spec;
36
36
 
37
37
  /*
38
38
  * A callable python object which wraps a java method and is dynamically added
@@ -54,10 +54,10 @@ typedef struct {
54
54
  } PyJMethodObject;
55
55
 
56
56
  /* Create a new PyJMethod from a java.lang.reflect.Method*/
57
- PyJMethodObject* PyJMethod_New(JNIEnv*, jobject);
57
+ PyJMethodObject* PyJMethod_New(JNIEnv*, JepModuleState*, jobject);
58
58
 
59
59
  /* Check if the arg is a PyJMethodObject */
60
- int PyJMethod_Check(PyObject *obj);
60
+ int PyJMethod_Check(JepModuleState*, PyObject *obj);
61
61
 
62
62
  /*
63
63
  * Get the number of parameters the method is expecting. If the method has not
@@ -68,7 +68,7 @@ int PyJMethod_GetParameterCount(PyJMethodObject*, JNIEnv*);
68
68
  /*
69
69
  * Check if a method is compatible with the types of a tuple of arguments.
70
70
  * This will return a 0 if the arguments are not valid for this method and a
71
- * positive integer if the arguments are valid. Returns a negative value on error.
71
+ * positive integer if the arguments are valid. Returns a negative value on error.
72
72
  * Larger numbers indicate a better match between the arguments and the expected parameter types.
73
73
  * This function uses pyarg_matches_jtype to determine how well arguments match.
74
74
  * This function does not need to be called before using calling this method, it is only
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2017-2022 JEP AUTHORS.
4
+ Copyright (c) 2017-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -37,7 +37,7 @@
37
37
  #ifndef _Included_pyjmonitor
38
38
  #define _Included_pyjmonitor
39
39
 
40
- extern PyTypeObject PyJMonitor_Type;
40
+ extern PyType_Spec PyJMonitor_Spec;
41
41
 
42
42
  typedef struct {
43
43
  PyObject_HEAD
@@ -51,9 +51,4 @@ typedef struct {
51
51
  */
52
52
  PyObject* PyJMonitor_New(jobject);
53
53
 
54
- /*
55
- * Returns true if the object is a PyJMonitor.
56
- */
57
- int PyJMonitor_Check(PyObject*);
58
-
59
54
  #endif // ndef pyjmonitor
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2015-2022 JEP_AUTHORS.
4
+ Copyright (c) 2015-2025 JEP_AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -33,7 +33,7 @@
33
33
  #define _Included_pyjmultimethod
34
34
 
35
35
 
36
- extern PyTypeObject PyJMultiMethod_Type;
36
+ extern PyType_Spec PyJMultiMethod_Spec;
37
37
 
38
38
  typedef struct {
39
39
  PyObject_HEAD
@@ -45,11 +45,11 @@ typedef struct {
45
45
  * make a PyJMultiMethod, after creation it is possible to add more than two
46
46
  * methods using PyJMultiMethod_Append.
47
47
  */
48
- PyObject* PyJMultiMethod_New(PyObject*, PyObject*);
48
+ PyObject* PyJMultiMethod_New(JepModuleState*, PyObject*, PyObject*);
49
49
  /* Args must be a PyJMultiMethodObject and a PyJMethodObject */
50
- int PyJMultiMethod_Append(PyObject*, PyObject*);
50
+ int PyJMultiMethod_Append(JepModuleState*, PyObject*, PyObject*);
51
51
  /* Check if the arg is a PyJMultiMethodObject */
52
- int PyJMultiMethod_Check(PyObject*);
52
+ int PyJMultiMethod_Check(JepModuleState*, PyObject*);
53
53
  /* Get the name of a PyJMultiMethodObject, returns a new reference to the name */
54
54
  PyObject* PyJMultiMethod_GetName(PyObject*);
55
55
 
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2004-2022 JEP AUTHORS.
4
+ Copyright (c) 2004-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -31,7 +31,7 @@
31
31
  #define _Included_pyjobject
32
32
 
33
33
 
34
- extern PyTypeObject PyJObject_Type;
34
+ extern PyType_Spec PyJObject_Spec;
35
35
 
36
36
  /*
37
37
  * The common fields for PyJObject. The usage of this macro is similar to
@@ -59,8 +59,7 @@ typedef struct {
59
59
  */
60
60
  PyObject* PyJObject_New(JNIEnv*, PyTypeObject*, jobject, jclass);
61
61
 
62
- #define PyJObject_Check(pyobj) \
63
- PyObject_TypeCheck(pyobj, &PyJObject_Type)
62
+ int PyJObject_Check(PyObject*);
64
63
 
65
64
 
66
65
  #endif // ndef pyjobject
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  jep - Java Embedded Python
3
3
 
4
- Copyright (c) 2020-2022 JEP AUTHORS.
4
+ Copyright (c) 2020-2025 JEP AUTHORS.
5
5
 
6
6
  This file is licensed under the the zlib/libpng License.
7
7
 
@@ -30,6 +30,8 @@
30
30
  #ifndef _Included_pyjtype
31
31
  #define _Included_pyjtype
32
32
 
33
+ extern PyType_Spec PyJType_Spec;
34
+
33
35
  /*
34
36
  * Get a PyTypeObject for the java class provided.
35
37
  */
@@ -105,11 +105,7 @@ static PyObject* pyjobject_convert_pyobject(PyObject* pyjob)
105
105
  PyObject* topy = PyObject_GetAttrString(pyjob, "_to_python");
106
106
  if (topy != NULL) {
107
107
  Py_DECREF(pyjob);
108
- #if PY_MAJOR_VERSION > 3 || PY_MINOR_VERSION >= 9
109
108
  result = PyObject_CallNoArgs(topy);
110
- #else
111
- result = PyObject_CallObject(topy, NULL);
112
- #endif
113
109
  Py_DECREF(topy);
114
110
  } else {
115
111
  /* This is exactly what is done in PyObject_HasAttr. */