Skip to content

Releases: maxmind/MaxMind-DB-Reader-python

3.0.0

15 Oct 19:45
00dda80

Choose a tag to compare

  • 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

25 Jul 20:19
4c4c4f5

Choose a tag to compare

  • 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

25 Jul 19:51
b4e2495

Choose a tag to compare

  • 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

25 Jul 17:20
9331617

Choose a tag to compare

  • 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

05 May 19:00
542dc56

Choose a tag to compare

  • 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

09 Jan 15:45
cbc7e6c

Choose a tag to compare

  • 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

10 Jun 17:35
348741b

Choose a tag to compare

  • 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

12 Apr 16:55
8889f19

Choose a tag to compare

  • 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.

2.6.0

19 Mar 19:54
f7732db

Choose a tag to compare

  • Added type annotations for instance variables on Metadata
  • Updated type stubs for maxminddb.extension.
  • setuptools is no longer listed as a runtime dependency. Pull request
    by Lewis Collard. GitHub #155.

2.5.2

09 Jan 21:00
2373892

Choose a tag to compare

  • The vendored libmaxminddb version was updated to 1.9.0. This fixes
    an issue when reading databases with a search tree exceeding 2 GB.
    Reported by Sami Salonen. GitHub #146.