NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #5175 most downloaded on PyPI
Module for serializing and de-serializing Java objects.
Last release 1 months ago
12 Aug 2026
Release timing varies
gaps range from 2 weeks to 2.9 years
Most releases are documented
notes for 16 of 19 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
19 releases · first in 2013
Released on 2026-08-12. The complete release notes are available in the changelog.
Released on 2026-08-12. The complete release notes are available in the changelog.
LinkedHashMap (issue #30). Its entries are written
in the block data of the HashMap it extends, and its own accessOrder
field right after them. v1 read that block data a second time, which
desynchronized the stream and broke every field read afterwards; v3
looked for the entries under the LinkedHashMap level instead of the
HashMap one, and silently returned an empty map.v2
(issue #62). Arrays were given a reference handle but were never stored,
so a reference to an array could not be resolved, and a reference found
in an array field was read as a class description. Class descriptions are
also stored before their annotations now, as v3 already does, so that
what is read in between can refer to them.load() or
loads() now raises a TypeError naming the transformer, instead of
failing later inside the parser with a missing argument (issue #54).py.typed
marker, so type checkers use its hints once it is installed._do_classdesc() and _read_content() are declared as optional, which
is what they return on TC_NULL; reading an object, a class or an array
without a class description now reports a ValueError instead of
crashing on a missing attribute; and the _read_content() method of the
IJavaStreamParser interface raises NotImplementedError, like the
other ones, instead of returning None. mypy runs in the CI, with its
configuration in pyproject.toml. Describing the functions which have no
hints yet, mostly in the beans and transformers of v1 and v2, is left
for a next release.java.time handlers of v1, which had none.Each artifact published on PyPI carries a
PEP 740 attestation, generated by the
publish.yml workflow through PyPI Trusted Publishing: no long-lived token is
involved, and the attestation is visible on the PyPI page of each file.
The same artifacts are attached below, together with their CycloneDX Software Bill of Materials, and are covered by a SLSA build provenance attestation:
gh attestation verify <downloaded file> --repo tcalmant/python-javaobj
git tag -v 0.6.1
One column per quarter.
Released on 2026-08-12. The complete release notes are available in the changelog.
Released on 2026-08-12. The complete release notes are available in the changelog.
pyproject.toml said 0.5.0 while most modules still said
0.4.4): every module tuple, docstring field, pyproject.toml and
setup.py now agree.javaobj.v3 more thoroughly in the README: automatic
conversion of Java collections to Python types, how to catch
javaobj.v3.exceptions, and the parser/writer logger names.run_tests.sh /
run_tests_containers.sh, podman by default, Docker in CI) so ci-build.yml
covers every Python version this project declares as supported, including
2.7 and 3.4-3.7, which actions/setup-python cannot install on a current
runner.tests/java's Maven build became an actual CI gate instead of a
best-effort, silently-ignored step: a misnamed public class and a
duplicate class name in SerializationExample.java, and a Swing-based
test that now skips itself when there is no display instead of failing.hatchling to setuptools, so releases
ship a single universal py2.py3-none-any wheel: Python 2.7 users get a
wheel install instead of always building from source.publish.yml release workflow (build, SLSA
provenance attestation, CycloneDX SBOM, PyPI Trusted Publishing, GitHub
release), modeled on the jsonrpclib/ipopo projects.Each artifact published on PyPI carries a
PEP 740 attestation, generated by the
publish.yml workflow through PyPI Trusted Publishing: no long-lived token is
involved, and the attestation is visible on the PyPI page of each file.
The same artifacts are attached below, together with their CycloneDX Software Bill of Materials, and are covered by a SLSA build provenance attestation:
gh attestation verify <downloaded file> --repo tcalmant/python-javaobj
git tag -v 0.6.0
fix path to tests by @eighthave in https://github.com/tcalmant/python-javaobj/pull/57
Full Changelog: https://github.com/tcalmant/python-javaobj/compare/0.4.4...0.5.0
@madaaraisok : Added support for java.lang.Class arrays
java.lang.Class arrays (#48)Full Changelog: https://github.com/tcalmant/python-javaobj/compare/0.4.3...0.4.4
Added support for TC_NULL as array sub-type in _read_field_value (see #46, thanks to @photoniker)
TC_NULL as array sub-type in _read_field_value (see #46, thanks to @photoniker)javaobj can now read GZipped files directly (trick done in load(), which is also the underlying method used by loads())NumPy is now loaded lately, only if the use of numpy arrays is expected. This allows the calling modules to load and configure numpy beforehand. Contr
Added the custom transformer contributed by @UruDev, allowing a finer loading of custom Java streams
setup.py has been fixed, to include the requirements for Python < 3.4
Small fix on metadata:
setup.py has been fixed, to include the requirements for Python < 3.4manifest.in to include README, LICENSE and AUTHORS in distribution.Added a new implementation of the parser, based on the code of jdeserialize. It is provided by the javaobj.v2 package. It can parse more cases than th
jdeserialize.
It is provided by the javaobj.v2 package.
It can parse more cases than the previous implementation and provides a new API for the object transformers.
This implementation doesn't support writing serialized objects.javaobj.v1 package.
The import from javaobj redirect to the v1 package.Added support for custom post-loading operations on JavaObject returned by the DefaultObjectTransformer (if the returned object implements an __extra_
JavaObject returned by the DefaultObjectTransformer
(if the returned object implements an __extra_loading__(self, unmarshaller, ident=0) method)HashSet, LinkedHashSet and TreeSet (#25)java.time types (#15)java.lang.String objects are now unicodeAdded use of bytearray for JavaByteArray
bytearray for JavaByteArrayFaster loading of bytes arrays, thanks to @vmarkovtsev. Bytes arrays are now loaded as a bytes Python object, not an array of integers
bytes Python object, not an array of integersJavaObjectUnmarshaller() now supports a use_numpy_arrays keyword argument, to load numeric arrays as numpy arrays (thanks to @vmarkovtsev)TYPE_CHAR (defined but not used in the Java specification)Better marshalling of byte array, by @voetsjoeba
Support for Python 2.6 added back by @voetsjoeba
Better support of references, thanks to @iciclespider:
Nothing published for this version
The project is now closer to the original project and can write basic serialized files.
The project is now closer to the original project and can write basic serialized files.
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →