maxminddb-rust 0.2.0__tar.gz → 0.4.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 (40) hide show
  1. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.github/workflows/codeql.yml +3 -3
  2. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.github/workflows/lint.yml +7 -7
  3. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.github/workflows/release.yml +9 -9
  4. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.github/workflows/test.yml +3 -3
  5. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.github/workflows/zizmor.yml +2 -2
  6. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/CHANGELOG.md +54 -1
  7. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/Cargo.lock +52 -77
  8. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/Cargo.toml +4 -3
  9. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/PKG-INFO +94 -48
  10. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/README.md +87 -43
  11. {maxminddb_rust-0.2.0/examples → maxminddb_rust-0.4.0/benchmarks}/benchmark_batch.py +2 -2
  12. maxminddb_rust-0.4.0/benchmarks/benchmark_parallel.py +103 -0
  13. maxminddb_rust-0.4.0/benchmarks/benchmark_path.py +56 -0
  14. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/examples/batch_processing.py +1 -1
  15. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/maxminddb_rust.pyi +27 -1
  16. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/pyproject.toml +6 -2
  17. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/src/lib.rs +390 -181
  18. maxminddb_rust-0.4.0/tests/path_test.py +91 -0
  19. maxminddb_rust-0.4.0/uv.lock +259 -0
  20. maxminddb_rust-0.2.0/uv.lock +0 -228
  21. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.githooks/pre-commit +0 -0
  22. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.github/dependabot.yml +0 -0
  23. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.gitignore +0 -0
  24. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/.gitmodules +0 -0
  25. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/CONTRIBUTING.md +0 -0
  26. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/LICENSE +0 -0
  27. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/MIGRATION.md +0 -0
  28. {maxminddb_rust-0.2.0/examples → maxminddb_rust-0.4.0/benchmarks}/benchmark.py +0 -0
  29. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0/benchmarks}/benchmark_comprehensive.py +0 -0
  30. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/dev-bin/release.sh +0 -0
  31. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/examples/basic_usage.py +0 -0
  32. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/examples/context_manager.py +0 -0
  33. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/examples/iterator_demo.py +0 -0
  34. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/precious.toml +0 -0
  35. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/py.typed +0 -0
  36. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/tests/__init__.py +0 -0
  37. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/tests/maxmind/README.md +0 -0
  38. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/tests/maxmind/UPSTREAM_LICENSE +0 -0
  39. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/tests/maxmind/__init__.py +0 -0
  40. {maxminddb_rust-0.2.0 → maxminddb_rust-0.4.0}/tests/maxmind/reader_test.py +0 -0
@@ -21,7 +21,7 @@ jobs:
21
21
 
22
22
  steps:
23
23
  - name: Checkout repository
24
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
24
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
25
25
  with:
26
26
  fetch-depth: 2
27
27
  persist-credentials: false
@@ -31,12 +31,12 @@ jobs:
31
31
  run: git checkout HEAD^2
32
32
 
33
33
  - name: Set up Python
34
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
34
+ uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
35
35
  with:
36
36
  python-version: "3.x"
37
37
 
38
38
  - name: Install Rust
39
- uses: dtolnay/rust-toolchain@0b1efabc08b657293548b77fb76cc02d26091c7e # master
39
+ uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9 # master
40
40
  with:
41
41
  toolchain: stable
42
42
 
@@ -13,12 +13,12 @@ jobs:
13
13
  name: Clippy
14
14
  runs-on: ubuntu-latest
15
15
  steps:
16
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
16
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
17
17
  with:
18
18
  persist-credentials: false
19
19
 
20
20
  - name: Install Rust
21
- uses: dtolnay/rust-toolchain@0b1efabc08b657293548b77fb76cc02d26091c7e # master
21
+ uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9 # master
22
22
  with:
23
23
  toolchain: stable
24
24
  components: clippy
@@ -30,12 +30,12 @@ jobs:
30
30
  name: Rustfmt
31
31
  runs-on: ubuntu-latest
32
32
  steps:
33
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
33
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
34
34
  with:
35
35
  persist-credentials: false
36
36
 
37
37
  - name: Install Rust
38
- uses: dtolnay/rust-toolchain@0b1efabc08b657293548b77fb76cc02d26091c7e # master
38
+ uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9 # master
39
39
  with:
40
40
  toolchain: stable
41
41
  components: rustfmt
@@ -47,7 +47,7 @@ jobs:
47
47
  name: Ruff
48
48
  runs-on: ubuntu-latest
49
49
  steps:
50
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
50
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
51
51
  with:
52
52
  persist-credentials: false
53
53
 
@@ -64,12 +64,12 @@ jobs:
64
64
  name: Prettier
65
65
  runs-on: ubuntu-latest
66
66
  steps:
67
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
67
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
68
68
  with:
69
69
  persist-credentials: false
70
70
 
71
71
  - name: Setup Node.js
72
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
72
+ uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
73
73
  with:
74
74
  node-version: "20"
75
75
 
@@ -37,12 +37,12 @@ jobs:
37
37
  python_versions: "3.11 3.12 3.13 3.14"
38
38
 
39
39
  steps:
40
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
40
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
41
41
  with:
42
42
  persist-credentials: false
43
43
 
44
44
  - name: Set up Python
45
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
45
+ uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
46
46
  with:
47
47
  python-version: "3.x"
48
48
 
@@ -51,7 +51,7 @@ jobs:
51
51
 
52
52
  - name: Set up Zig
53
53
  if: runner.os == 'Windows'
54
- uses: mlugg/setup-zig@8d6198c65fb0feaa111df26e6b467fea8345e46f # v2.0.5
54
+ uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2.2.1
55
55
 
56
56
  - name: Set up QEMU
57
57
  if: runner.os == 'Linux' && matrix.target == 'aarch64'
@@ -60,7 +60,7 @@ jobs:
60
60
  platforms: arm64
61
61
 
62
62
  - name: Build wheels
63
- uses: PyO3/maturin-action@86b9d133d34bc1b40018696f782949dac11bd380 # v1.49.4
63
+ uses: PyO3/maturin-action@b1bd829e37fef14c63f19162034228a2f3dc1021 # v1.50.0
64
64
  with:
65
65
  target: ${{ matrix.target }}
66
66
  args: --release --out dist --interpreter ${{ matrix.python_versions || '3.9 3.10 3.11 3.12 3.13 3.14' }}
@@ -68,7 +68,7 @@ jobs:
68
68
  manylinux: auto
69
69
 
70
70
  - name: Upload wheels
71
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
71
+ uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
72
72
  with:
73
73
  name: maxminddb-rust-whl-${{ matrix.os }}-${{ matrix.target }}
74
74
  path: dist
@@ -77,18 +77,18 @@ jobs:
77
77
  name: Build source distribution
78
78
  runs-on: ubuntu-latest
79
79
  steps:
80
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
80
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
81
81
  with:
82
82
  persist-credentials: false
83
83
 
84
84
  - name: Build sdist
85
- uses: PyO3/maturin-action@86b9d133d34bc1b40018696f782949dac11bd380 # v1.49.4
85
+ uses: PyO3/maturin-action@b1bd829e37fef14c63f19162034228a2f3dc1021 # v1.50.0
86
86
  with:
87
87
  command: sdist
88
88
  args: --out dist
89
89
 
90
90
  - name: Upload sdist
91
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
91
+ uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
92
92
  with:
93
93
  name: maxminddb-rust-sdist
94
94
  path: dist
@@ -103,7 +103,7 @@ jobs:
103
103
  id-token: write
104
104
  steps:
105
105
  - name: Download artifacts
106
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
106
+ uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
107
107
  with:
108
108
  pattern: maxminddb-rust-*
109
109
  path: dist
@@ -21,18 +21,18 @@ jobs:
21
21
  os: [ubuntu-latest, macos-latest, windows-latest]
22
22
 
23
23
  steps:
24
- - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
24
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
25
25
  with:
26
26
  persist-credentials: false
27
27
  submodules: recursive
28
28
 
29
29
  - name: Set up Python ${{ matrix.python-version }}
30
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
30
+ uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
31
31
  with:
32
32
  python-version: ${{ matrix.python-version }}
33
33
 
34
34
  - name: Install Rust
35
- uses: dtolnay/rust-toolchain@0b1efabc08b657293548b77fb76cc02d26091c7e # master
35
+ uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9 # master
36
36
  with:
37
37
  toolchain: stable
38
38
 
@@ -17,9 +17,9 @@ jobs:
17
17
  security-events: write
18
18
  steps:
19
19
  - name: Checkout repository
20
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
20
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
21
21
  with:
22
22
  persist-credentials: false
23
23
 
24
24
  - name: Run zizmor
25
- uses: zizmorcore/zizmor-action@e639db99335bc9038abc0e066dfcd72e23d26fb4 # v0.3.0
25
+ uses: zizmorcore/zizmor-action@0dce2577a4760a2749d8cfb7a84b7d5585ebcb7d # v0.5.0
@@ -5,6 +5,56 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.4.0] - 2026-02-21
9
+
10
+ ### Breaking
11
+
12
+ - `Reader.__iter__` now yields `(ipaddress.IPv4Network | ipaddress.IPv6Network, dict)`
13
+ tuples instead of `(str, dict)`. Update callers that expect string networks
14
+ to handle network objects directly, or convert with `str(network)`.
15
+
16
+ ### Changed
17
+
18
+ - Consolidated benchmark scripts under `benchmarks/` and removed
19
+ `examples/benchmark.py`.
20
+ - Updated benchmark documentation in `README.md` to match the consolidated
21
+ benchmark layout.
22
+ - Simplified internal IP parsing and iterator code paths to reduce duplication
23
+ and improve maintainability.
24
+ - Refactored database opening and reader initialization flow:
25
+ - centralized open-mode parsing/validation
26
+ - unified mmap vs memory reader loading
27
+ - centralized metadata conversion
28
+ - Dependency updates:
29
+ - upgraded `PyO3` from 0.27 to 0.28
30
+ - upgraded `maxminddb` from 0.27.1 to 0.27.3
31
+ - added `rustc-hash`
32
+
33
+ ### Performance
34
+
35
+ - Improved `get()` and `get_with_prefix_len()` throughput by optimizing decode
36
+ map-key caching:
37
+ - switched to a faster key cache strategy for Python map keys
38
+ - reduced key insertion overhead in the hot decode path
39
+ - Simplified lookup-path internals in performance-neutral ways to reduce
40
+ complexity without regressions.
41
+
42
+ ## [0.3.0] - 2025-12-18
43
+
44
+ ### Added
45
+
46
+ - Added `get_path()` method to `Reader` class. This allows high-performance
47
+ retrieval of specific fields (e.g.,
48
+ `reader.get_path(ip, ('country', 'iso_code'))`) without decoding the entire
49
+ record. This can be over 6x faster than `get()` when only partial data is
50
+ needed.
51
+
52
+ ### Changed
53
+
54
+ - Upgraded maxminddb crate from 0.27.0 to 0.27.1.
55
+ - Enabled `simdutf8` feature in `maxminddb` crate. This improves lookup
56
+ performance by using SIMD instructions for faster UTF-8 validation.
57
+
8
58
  ## [0.2.0] - 2025-11-28
9
59
 
10
60
  ### Changed
@@ -85,5 +135,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
85
135
  - Python 3.8+
86
136
  - CPython implementation
87
137
 
88
- [Unreleased]: https://github.com/oschwald/maxminddb-rust-python/compare/v0.1.0...HEAD
138
+ [Unreleased]: https://github.com/oschwald/maxminddb-rust-python/compare/v0.4.0...HEAD
139
+ [0.4.0]: https://github.com/oschwald/maxminddb-rust-python/compare/v0.3.0...v0.4.0
140
+ [0.3.0]: https://github.com/oschwald/maxminddb-rust-python/compare/v0.2.0...v0.3.0
141
+ [0.2.0]: https://github.com/oschwald/maxminddb-rust-python/compare/v0.1.0...v0.2.0
89
142
  [0.1.0]: https://github.com/oschwald/maxminddb-rust-python/releases/tag/v0.1.0
@@ -2,17 +2,11 @@
2
2
  # It is not intended for manual editing.
3
3
  version = 4
4
4
 
5
- [[package]]
6
- name = "autocfg"
7
- version = "1.5.0"
8
- source = "registry+https://github.com/rust-lang/crates.io-index"
9
- checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
10
-
11
5
  [[package]]
12
6
  name = "cc"
13
- version = "1.2.37"
7
+ version = "1.2.56"
14
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
15
- checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44"
9
+ checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
16
10
  dependencies = [
17
11
  "find-msvc-tools",
18
12
  "shlex",
@@ -20,9 +14,9 @@ dependencies = [
20
14
 
21
15
  [[package]]
22
16
  name = "find-msvc-tools"
23
- version = "0.1.4"
17
+ version = "0.1.9"
24
18
  source = "registry+https://github.com/rust-lang/crates.io-index"
25
- checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
19
+ checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
26
20
 
27
21
  [[package]]
28
22
  name = "heck"
@@ -30,15 +24,6 @@ version = "0.5.0"
30
24
  source = "registry+https://github.com/rust-lang/crates.io-index"
31
25
  checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
32
26
 
33
- [[package]]
34
- name = "indoc"
35
- version = "2.0.7"
36
- source = "registry+https://github.com/rust-lang/crates.io-index"
37
- checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
38
- dependencies = [
39
- "rustversion",
40
- ]
41
-
42
27
  [[package]]
43
28
  name = "ipnetwork"
44
29
  version = "0.21.1"
@@ -47,64 +32,57 @@ checksum = "cf370abdafd54d13e54a620e8c3e1145f28e46cc9d704bc6d94414559df41763"
47
32
 
48
33
  [[package]]
49
34
  name = "libc"
50
- version = "0.2.177"
35
+ version = "0.2.182"
51
36
  source = "registry+https://github.com/rust-lang/crates.io-index"
52
- checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
37
+ checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
53
38
 
54
39
  [[package]]
55
40
  name = "log"
56
- version = "0.4.28"
41
+ version = "0.4.29"
57
42
  source = "registry+https://github.com/rust-lang/crates.io-index"
58
- checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
43
+ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
59
44
 
60
45
  [[package]]
61
46
  name = "maxminddb"
62
- version = "0.27.0"
47
+ version = "0.27.3"
63
48
  source = "registry+https://github.com/rust-lang/crates.io-index"
64
- checksum = "7ef0551fc3e7345a6c854c1026b0ddada1e443e51f4fb4cdcf86cc1a71d4b337"
49
+ checksum = "76371bd37ce742f8954daabd0fde7f1594ee43ac2200e20c003ba5c3d65e2192"
65
50
  dependencies = [
66
51
  "ipnetwork",
67
52
  "log",
68
53
  "memchr",
69
54
  "serde",
55
+ "simdutf8",
70
56
  "thiserror",
71
57
  ]
72
58
 
73
59
  [[package]]
74
60
  name = "maxminddb-rust"
75
- version = "0.2.0"
61
+ version = "0.4.0"
76
62
  dependencies = [
77
63
  "ipnetwork",
78
64
  "maxminddb",
79
65
  "memmap2",
80
66
  "pyo3",
67
+ "rustc-hash",
81
68
  "serde",
82
69
  ]
83
70
 
84
71
  [[package]]
85
72
  name = "memchr"
86
- version = "2.7.6"
73
+ version = "2.8.0"
87
74
  source = "registry+https://github.com/rust-lang/crates.io-index"
88
- checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
75
+ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
89
76
 
90
77
  [[package]]
91
78
  name = "memmap2"
92
- version = "0.9.9"
79
+ version = "0.9.10"
93
80
  source = "registry+https://github.com/rust-lang/crates.io-index"
94
- checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490"
81
+ checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
95
82
  dependencies = [
96
83
  "libc",
97
84
  ]
98
85
 
99
- [[package]]
100
- name = "memoffset"
101
- version = "0.9.1"
102
- source = "registry+https://github.com/rust-lang/crates.io-index"
103
- checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
104
- dependencies = [
105
- "autocfg",
106
- ]
107
-
108
86
  [[package]]
109
87
  name = "once_cell"
110
88
  version = "1.21.3"
@@ -113,41 +91,38 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
113
91
 
114
92
  [[package]]
115
93
  name = "portable-atomic"
116
- version = "1.11.1"
94
+ version = "1.13.1"
117
95
  source = "registry+https://github.com/rust-lang/crates.io-index"
118
- checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
96
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
119
97
 
120
98
  [[package]]
121
99
  name = "proc-macro2"
122
- version = "1.0.103"
100
+ version = "1.0.106"
123
101
  source = "registry+https://github.com/rust-lang/crates.io-index"
124
- checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
102
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
125
103
  dependencies = [
126
104
  "unicode-ident",
127
105
  ]
128
106
 
129
107
  [[package]]
130
108
  name = "pyo3"
131
- version = "0.27.1"
109
+ version = "0.28.2"
132
110
  source = "registry+https://github.com/rust-lang/crates.io-index"
133
- checksum = "37a6df7eab65fc7bee654a421404947e10a0f7085b6951bf2ea395f4659fb0cf"
111
+ checksum = "cf85e27e86080aafd5a22eae58a162e133a589551542b3e5cee4beb27e54f8e1"
134
112
  dependencies = [
135
- "indoc",
136
113
  "libc",
137
- "memoffset",
138
114
  "once_cell",
139
115
  "portable-atomic",
140
116
  "pyo3-build-config",
141
117
  "pyo3-ffi",
142
118
  "pyo3-macros",
143
- "unindent",
144
119
  ]
145
120
 
146
121
  [[package]]
147
122
  name = "pyo3-build-config"
148
- version = "0.27.1"
123
+ version = "0.28.2"
149
124
  source = "registry+https://github.com/rust-lang/crates.io-index"
150
- checksum = "f77d387774f6f6eec64a004eac0ed525aab7fa1966d94b42f743797b3e395afb"
125
+ checksum = "8bf94ee265674bf76c09fa430b0e99c26e319c945d96ca0d5a8215f31bf81cf7"
151
126
  dependencies = [
152
127
  "python3-dll-a",
153
128
  "target-lexicon",
@@ -155,9 +130,9 @@ dependencies = [
155
130
 
156
131
  [[package]]
157
132
  name = "pyo3-ffi"
158
- version = "0.27.1"
133
+ version = "0.28.2"
159
134
  source = "registry+https://github.com/rust-lang/crates.io-index"
160
- checksum = "2dd13844a4242793e02df3e2ec093f540d948299a6a77ea9ce7afd8623f542be"
135
+ checksum = "491aa5fc66d8059dd44a75f4580a2962c1862a1c2945359db36f6c2818b748dc"
161
136
  dependencies = [
162
137
  "libc",
163
138
  "pyo3-build-config",
@@ -165,9 +140,9 @@ dependencies = [
165
140
 
166
141
  [[package]]
167
142
  name = "pyo3-macros"
168
- version = "0.27.1"
143
+ version = "0.28.2"
169
144
  source = "registry+https://github.com/rust-lang/crates.io-index"
170
- checksum = "eaf8f9f1108270b90d3676b8679586385430e5c0bb78bb5f043f95499c821a71"
145
+ checksum = "f5d671734e9d7a43449f8480f8b38115df67bef8d21f76837fa75ee7aaa5e52e"
171
146
  dependencies = [
172
147
  "proc-macro2",
173
148
  "pyo3-macros-backend",
@@ -177,9 +152,9 @@ dependencies = [
177
152
 
178
153
  [[package]]
179
154
  name = "pyo3-macros-backend"
180
- version = "0.27.1"
155
+ version = "0.28.2"
181
156
  source = "registry+https://github.com/rust-lang/crates.io-index"
182
- checksum = "70a3b2274450ba5288bc9b8c1b69ff569d1d61189d4bff38f8d22e03d17f932b"
157
+ checksum = "22faaa1ce6c430a1f71658760497291065e6450d7b5dc2bcf254d49f66ee700a"
183
158
  dependencies = [
184
159
  "heck",
185
160
  "proc-macro2",
@@ -199,18 +174,18 @@ dependencies = [
199
174
 
200
175
  [[package]]
201
176
  name = "quote"
202
- version = "1.0.41"
177
+ version = "1.0.44"
203
178
  source = "registry+https://github.com/rust-lang/crates.io-index"
204
- checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
179
+ checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
205
180
  dependencies = [
206
181
  "proc-macro2",
207
182
  ]
208
183
 
209
184
  [[package]]
210
- name = "rustversion"
211
- version = "1.0.22"
185
+ name = "rustc-hash"
186
+ version = "2.1.1"
212
187
  source = "registry+https://github.com/rust-lang/crates.io-index"
213
- checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
188
+ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
214
189
 
215
190
  [[package]]
216
191
  name = "serde"
@@ -248,11 +223,17 @@ version = "1.3.0"
248
223
  source = "registry+https://github.com/rust-lang/crates.io-index"
249
224
  checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
250
225
 
226
+ [[package]]
227
+ name = "simdutf8"
228
+ version = "0.1.5"
229
+ source = "registry+https://github.com/rust-lang/crates.io-index"
230
+ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
231
+
251
232
  [[package]]
252
233
  name = "syn"
253
- version = "2.0.109"
234
+ version = "2.0.117"
254
235
  source = "registry+https://github.com/rust-lang/crates.io-index"
255
- checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f"
236
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
256
237
  dependencies = [
257
238
  "proc-macro2",
258
239
  "quote",
@@ -261,24 +242,24 @@ dependencies = [
261
242
 
262
243
  [[package]]
263
244
  name = "target-lexicon"
264
- version = "0.13.3"
245
+ version = "0.13.5"
265
246
  source = "registry+https://github.com/rust-lang/crates.io-index"
266
- checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c"
247
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
267
248
 
268
249
  [[package]]
269
250
  name = "thiserror"
270
- version = "2.0.17"
251
+ version = "2.0.18"
271
252
  source = "registry+https://github.com/rust-lang/crates.io-index"
272
- checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
253
+ checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
273
254
  dependencies = [
274
255
  "thiserror-impl",
275
256
  ]
276
257
 
277
258
  [[package]]
278
259
  name = "thiserror-impl"
279
- version = "2.0.17"
260
+ version = "2.0.18"
280
261
  source = "registry+https://github.com/rust-lang/crates.io-index"
281
- checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
262
+ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
282
263
  dependencies = [
283
264
  "proc-macro2",
284
265
  "quote",
@@ -287,12 +268,6 @@ dependencies = [
287
268
 
288
269
  [[package]]
289
270
  name = "unicode-ident"
290
- version = "1.0.22"
291
- source = "registry+https://github.com/rust-lang/crates.io-index"
292
- checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
293
-
294
- [[package]]
295
- name = "unindent"
296
- version = "0.2.4"
271
+ version = "1.0.24"
297
272
  source = "registry+https://github.com/rust-lang/crates.io-index"
298
- checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
273
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "maxminddb-rust"
3
- version = "0.2.0"
3
+ version = "0.4.0"
4
4
  edition = "2021"
5
5
  authors = ["Gregory Oschwald <oschwald@gmail.com>"]
6
6
  description = "Rust-based Python binding for MaxMind DB - high-performance alternative to maxminddb"
@@ -14,9 +14,10 @@ crate-type = ["cdylib"]
14
14
 
15
15
  [dependencies]
16
16
  ipnetwork = "0.21"
17
- maxminddb = "0.27.0"
17
+ maxminddb = { version = "0.27.3", features = ["simdutf8"] }
18
18
  memmap2 = "0.9"
19
- pyo3 = { version = "0.27.1", features = ["extension-module", "generate-import-lib"] }
19
+ pyo3 = { version = "0.28.2", features = ["extension-module", "generate-import-lib"] }
20
+ rustc-hash = "2"
20
21
  serde = "1.0"
21
22
 
22
23
  [features]