Skip to content

Releases: maxmind/MaxMind-DB-Reader-python

3.1.1

Choose a tag to compare

@oschwald oschwald released this 05 Mar 17:58
Immutable release. Only release title and notes can be modified.
09f4373
  • The vendored libmaxminddb has been updated to 1.13.3. This includes
    a fix for the validation of empty maps and arrays at the end of the
    metadata section. Previously, the extension would incorrectly reject
    databases where a 0-element map or array was the last field in metadata.
    Reported in vimt/MaxMind-DB-Writer-python#16.

3.1.0

Choose a tag to compare

@oschwald oschwald released this 24 Feb 23:20
Immutable release. Only release title and notes can be modified.
909b9a3
  • The vendored libmaxminddb has been updated to 1.13.1. This includes
    several security hardening improvements when reading corrupt or malicious
    database files, including fixes for integer overflows, bounds checking, and
    use-after-free prevention.

3.0.0

Choose a tag to compare

@oschwald oschwald released this 15 Oct 19:45
00dda80
  • IMPORTANT: Python 3.10 or greater is required. If you are using an older
    version, please use an earlier release.
  • Databases can now be loaded from buffers. This can be done by passing in a
    buffer as the database and using mode MODE_FD. Pull request by Emanuel
    Seemann. GitHub #234.
  • The C extension now supports Python 3.13+ free-threading mode and is
    thread-safe for concurrent reads on platforms with pthread support (such as
    Linux and macOS) and Windows. On other platforms, the extension will use
    GIL-based protection.
  • The C extension now uses PEP 489 multi-phase initialization, enabling
    proper subinterpreter support and module isolation for Python 3.12+. This
    modernizes the extension to use heap types instead of static types and
    implements per-module state management. Key benefits include support for
    Python 3.12+ isolated subinterpreters, multiple independent module
    instances, and future-proofing for Python 3.14's InterpreterPoolExecutor.
    Requested by R. Christian McDonald in GitHub #105.
  • BREAKING: The pure Python maxminddb.reader.Metadata class has been
    converted to a frozen dataclass. The __repr__ format has changed from
    maxminddb.reader.Metadata(...) to Metadata(...). More importantly,
    all Metadata attributes are now readonly and cannot be modified after
    creation. If you were modifying metadata attributes after object creation,
    you will need to update your code. All functionality remains the same,
    including the node_byte_size and search_tree_size properties. Note:
    The C extension's Metadata class has always been readonly, so this change
    brings the pure Python implementation into consistency with the C extension.
  • MODE constants have been converted to an IntEnum (maxminddb.const.Mode).
    The old constants (MODE_AUTO, MODE_FILE, etc.) remain available for
    backward compatibility and are now aliases to the enum members. This provides
    better IDE support and type safety while maintaining full backward
    compatibility. You can now use either Mode.FILE or MODE_FILE - both
    work identically. Since IntEnum is int-compatible, existing code using
    the constants will continue to work without modification.

2.8.2

Choose a tag to compare

@oschwald oschwald released this 25 Jul 20:19
4c4c4f5
  • Pyodide binary wheels will no longer be built by default. It is not possible to
    upload these to PyPI currently. We may consider reenabling them and putting them
    on the GitHub Releases page in the future if there is interest.

2.8.1

Choose a tag to compare

@oschwald oschwald released this 25 Jul 19:51
b4e2495
  • When upgrading to cibuildwheel 3.0.0, we inadvertently changed the artifact
    names, causing the wheels to not be uploaded to PyPI. This release fixes that.
    There are no other code changes. Report by David Hotham. GitHub #225.

2.8.0

Choose a tag to compare

@oschwald oschwald released this 25 Jul 17:20
9331617
  • Python 3.14 is now officially supported, including binary wheels.
  • We have updated the platforms that we build binary wheels for. In particular,
    we now build wheels for Android, iOS, Windows Arm, and Pyodide, and we have
    dropped 686 (32 bit), ppc64le, and s390x builds on Linux.

2.7.0

Choose a tag to compare

@oschwald oschwald released this 05 May 19:00
542dc56
  • IMPORTANT: Python 3.9 or greater is required. If you are using an older
    version, please use an earlier release.
  • The vendored libmaxminddb has been updated to 1.12.2.
  • The C extension now checks that the database metadata lookup was
    successful.
  • A theoretical segmentation fault with the C extension when doing lookups
    on a corrupt or invalid database was fixed.

2.6.3

Choose a tag to compare

@oschwald oschwald released this 09 Jan 15:45
cbc7e6c
  • The vendored libmaxminddb has been updated to 1.12.0. This fixes a
    memory leak when opening a database fails.
  • Binary wheels are now built for Python 3.13.

2.6.2

Choose a tag to compare

@oschwald oschwald released this 10 Jun 17:35
348741b
  • The vendored libmaxminddb has been updated to 1.10.0. This fixes a
    bug that would cause incorrect results on databases that had search
    trees greater than 4 GB.

2.6.1

Choose a tag to compare

@oschwald oschwald released this 12 Apr 16:55
8889f19
  • This release includes no source code changes. The only changes are to
    the release workflow.
  • Binary wheels are now built on Linux for aarch64. Pull request by Kevin
    Park. GitHub #160.
  • Binary wheels are now built on macOS for Apple silicon. Requested by
    Kevin Park. GitHub #152.