33 History
44-------
55
6- 2.9 .0
6+ 3.0 .0
77++++++++++++++++++
88
99* IMPORTANT: Python 3.10 or greater is required. If you are using an older
@@ -15,6 +15,29 @@ History
1515 thread-safe for concurrent reads on platforms with pthread support (such as
1616 Linux and macOS) and Windows. On other platforms, the extension will use
1717 GIL-based protection.
18+ * The C extension now uses PEP 489 multi-phase initialization, enabling
19+ proper subinterpreter support and module isolation for Python 3.12+. This
20+ modernizes the extension to use heap types instead of static types and
21+ implements per-module state management. Key benefits include support for
22+ Python 3.12+ isolated subinterpreters, multiple independent module
23+ instances, and future-proofing for Python 3.14's InterpreterPoolExecutor.
24+ Requested by R. Christian McDonald in GitHub #105.
25+ * **BREAKING **: The pure Python ``maxminddb.reader.Metadata `` class has been
26+ converted to a frozen dataclass. The ``__repr__ `` format has changed from
27+ ``maxminddb.reader.Metadata(...) `` to ``Metadata(...) ``. More importantly,
28+ all Metadata attributes are now readonly and cannot be modified after
29+ creation. If you were modifying metadata attributes after object creation,
30+ you will need to update your code. All functionality remains the same,
31+ including the ``node_byte_size `` and ``search_tree_size `` properties. Note:
32+ The C extension's Metadata class has always been readonly, so this change
33+ brings the pure Python implementation into consistency with the C extension.
34+ * MODE constants have been converted to an ``IntEnum `` (``maxminddb.const.Mode ``).
35+ The old constants (``MODE_AUTO ``, ``MODE_FILE ``, etc.) remain available for
36+ backward compatibility and are now aliases to the enum members. This provides
37+ better IDE support and type safety while maintaining full backward
38+ compatibility. You can now use either ``Mode.FILE `` or ``MODE_FILE `` - both
39+ work identically. Since ``IntEnum `` is int-compatible, existing code using
40+ the constants will continue to work without modification.
1841
19422.8.2 (2025-07-25)
2043++++++++++++++++++
0 commit comments