xberg 1.0.0.pre.rc.7 → 1.0.0.pre.rc.9
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.
- checksums.yaml +4 -4
- data/ext/xberg_rb/native/Cargo.lock +106 -63
- data/ext/xberg_rb/native/Cargo.toml +5 -5
- data/ext/xberg_rb/src/lib.rs +408 -49
- data/lib/xberg/native.rb +12 -6
- data/lib/xberg/version.rb +2 -2
- data/lib/xberg.rb +1 -1
- data/lib/xberg_rb.so +0 -0
- data/sig/types.rbs +13 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c426c771373b092f070bb61bb9479785b38fce29336a8ccca7a99203715351f6
|
|
4
|
+
data.tar.gz: 5b206ba76956c60c6ff3eb3d567a8792fecf71be02203354dc9a5d99edb4359b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1934ce27152766156b6446d41ee34e257469374ee6436f01c5a9b08e43fc35e505a07b32069d2b6a75071f7eda215d030e52e39bfcf9d0ee66cd857b773e303f
|
|
7
|
+
data.tar.gz: b0067920fc491c15012fa0117193d027081ac365d8b8b31c04eb92de7fd3d9ed34c88f019d47fc365620bbc8ff79e427cd54ee48ec6a6da93394ecdeab9f74f5
|
|
@@ -1486,9 +1486,9 @@ checksum = "ac6b926516df9c60bfa16e107b21086399f8285a44ca9711344b9e553c5146e2"
|
|
|
1486
1486
|
|
|
1487
1487
|
[[package]]
|
|
1488
1488
|
name = "defmt"
|
|
1489
|
-
version = "1.1.
|
|
1489
|
+
version = "1.1.1"
|
|
1490
1490
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1491
|
-
checksum = "
|
|
1491
|
+
checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1"
|
|
1492
1492
|
dependencies = [
|
|
1493
1493
|
"bitflags 1.3.2",
|
|
1494
1494
|
"defmt-macros",
|
|
@@ -1496,12 +1496,11 @@ dependencies = [
|
|
|
1496
1496
|
|
|
1497
1497
|
[[package]]
|
|
1498
1498
|
name = "defmt-macros"
|
|
1499
|
-
version = "1.1.
|
|
1499
|
+
version = "1.1.1"
|
|
1500
1500
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1501
|
-
checksum = "
|
|
1501
|
+
checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8"
|
|
1502
1502
|
dependencies = [
|
|
1503
1503
|
"defmt-parser",
|
|
1504
|
-
"proc-macro-error2",
|
|
1505
1504
|
"proc-macro2",
|
|
1506
1505
|
"quote",
|
|
1507
1506
|
"syn 2.0.118",
|
|
@@ -3174,6 +3173,36 @@ dependencies = [
|
|
|
3174
3173
|
"windows-sys 0.45.0",
|
|
3175
3174
|
]
|
|
3176
3175
|
|
|
3176
|
+
[[package]]
|
|
3177
|
+
name = "jni"
|
|
3178
|
+
version = "0.22.4"
|
|
3179
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3180
|
+
checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498"
|
|
3181
|
+
dependencies = [
|
|
3182
|
+
"cfg-if",
|
|
3183
|
+
"combine",
|
|
3184
|
+
"jni-macros",
|
|
3185
|
+
"jni-sys 0.4.1",
|
|
3186
|
+
"log",
|
|
3187
|
+
"simd_cesu8",
|
|
3188
|
+
"thiserror 2.0.18",
|
|
3189
|
+
"walkdir",
|
|
3190
|
+
"windows-link",
|
|
3191
|
+
]
|
|
3192
|
+
|
|
3193
|
+
[[package]]
|
|
3194
|
+
name = "jni-macros"
|
|
3195
|
+
version = "0.22.4"
|
|
3196
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3197
|
+
checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3"
|
|
3198
|
+
dependencies = [
|
|
3199
|
+
"proc-macro2",
|
|
3200
|
+
"quote",
|
|
3201
|
+
"rustc_version",
|
|
3202
|
+
"simd_cesu8",
|
|
3203
|
+
"syn 2.0.118",
|
|
3204
|
+
]
|
|
3205
|
+
|
|
3177
3206
|
[[package]]
|
|
3178
3207
|
name = "jni-sys"
|
|
3179
3208
|
version = "0.3.1"
|
|
@@ -3997,9 +4026,9 @@ dependencies = [
|
|
|
3997
4026
|
|
|
3998
4027
|
[[package]]
|
|
3999
4028
|
name = "num-bigint"
|
|
4000
|
-
version = "0.4.
|
|
4029
|
+
version = "0.4.8"
|
|
4001
4030
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4002
|
-
checksum = "
|
|
4031
|
+
checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
|
|
4003
4032
|
dependencies = [
|
|
4004
4033
|
"num-integer",
|
|
4005
4034
|
"num-traits",
|
|
@@ -4096,16 +4125,16 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
|
|
|
4096
4125
|
|
|
4097
4126
|
[[package]]
|
|
4098
4127
|
name = "office_oxide"
|
|
4099
|
-
version = "0.1.
|
|
4128
|
+
version = "0.1.3"
|
|
4100
4129
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4101
|
-
checksum = "
|
|
4130
|
+
checksum = "8900703278aea7d2329f5c490b62653306b1083efc7993ee18e3e86dcfd5afeb"
|
|
4102
4131
|
dependencies = [
|
|
4103
4132
|
"atoi_simd 0.18.1",
|
|
4104
4133
|
"encoding_rs",
|
|
4105
4134
|
"fast-float2",
|
|
4106
4135
|
"libc",
|
|
4107
4136
|
"log",
|
|
4108
|
-
"quick-xml 0.
|
|
4137
|
+
"quick-xml 0.41.0",
|
|
4109
4138
|
"serde",
|
|
4110
4139
|
"serde_json",
|
|
4111
4140
|
"thiserror 2.0.18",
|
|
@@ -4321,9 +4350,9 @@ dependencies = [
|
|
|
4321
4350
|
|
|
4322
4351
|
[[package]]
|
|
4323
4352
|
name = "pdf_oxide"
|
|
4324
|
-
version = "0.3.
|
|
4353
|
+
version = "0.3.72"
|
|
4325
4354
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4326
|
-
checksum = "
|
|
4355
|
+
checksum = "3b7fe525ccb850888a423bd211c1efd1af704761a7084e83edae1b99d0c7d2b4"
|
|
4327
4356
|
dependencies = [
|
|
4328
4357
|
"aes 0.9.1",
|
|
4329
4358
|
"base64 0.22.1",
|
|
@@ -4646,28 +4675,6 @@ dependencies = [
|
|
|
4646
4675
|
"toml_edit",
|
|
4647
4676
|
]
|
|
4648
4677
|
|
|
4649
|
-
[[package]]
|
|
4650
|
-
name = "proc-macro-error-attr2"
|
|
4651
|
-
version = "2.0.0"
|
|
4652
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4653
|
-
checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5"
|
|
4654
|
-
dependencies = [
|
|
4655
|
-
"proc-macro2",
|
|
4656
|
-
"quote",
|
|
4657
|
-
]
|
|
4658
|
-
|
|
4659
|
-
[[package]]
|
|
4660
|
-
name = "proc-macro-error2"
|
|
4661
|
-
version = "2.0.1"
|
|
4662
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4663
|
-
checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802"
|
|
4664
|
-
dependencies = [
|
|
4665
|
-
"proc-macro-error-attr2",
|
|
4666
|
-
"proc-macro2",
|
|
4667
|
-
"quote",
|
|
4668
|
-
"syn 2.0.118",
|
|
4669
|
-
]
|
|
4670
|
-
|
|
4671
4678
|
[[package]]
|
|
4672
4679
|
name = "proc-macro2"
|
|
4673
4680
|
version = "1.0.106"
|
|
@@ -4824,16 +4831,6 @@ dependencies = [
|
|
|
4824
4831
|
"memchr",
|
|
4825
4832
|
]
|
|
4826
4833
|
|
|
4827
|
-
[[package]]
|
|
4828
|
-
name = "quick-xml"
|
|
4829
|
-
version = "0.40.1"
|
|
4830
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
4831
|
-
checksum = "2474bd2e5029e7ccb6abb2ba48cf2383a333851dedf495901544281590c7da7f"
|
|
4832
|
-
dependencies = [
|
|
4833
|
-
"memchr",
|
|
4834
|
-
"serde",
|
|
4835
|
-
]
|
|
4836
|
-
|
|
4837
4834
|
[[package]]
|
|
4838
4835
|
name = "quick-xml"
|
|
4839
4836
|
version = "0.41.0"
|
|
@@ -5290,7 +5287,7 @@ dependencies = [
|
|
|
5290
5287
|
"quinn",
|
|
5291
5288
|
"rustls",
|
|
5292
5289
|
"rustls-pki-types",
|
|
5293
|
-
"rustls-platform-verifier",
|
|
5290
|
+
"rustls-platform-verifier 0.7.0",
|
|
5294
5291
|
"serde",
|
|
5295
5292
|
"serde_json",
|
|
5296
5293
|
"serde_urlencoded",
|
|
@@ -5493,6 +5490,15 @@ version = "2.1.3"
|
|
|
5493
5490
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5494
5491
|
checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
|
|
5495
5492
|
|
|
5493
|
+
[[package]]
|
|
5494
|
+
name = "rustc_version"
|
|
5495
|
+
version = "0.4.1"
|
|
5496
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5497
|
+
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
|
|
5498
|
+
dependencies = [
|
|
5499
|
+
"semver",
|
|
5500
|
+
]
|
|
5501
|
+
|
|
5496
5502
|
[[package]]
|
|
5497
5503
|
name = "rustfft"
|
|
5498
5504
|
version = "6.4.1"
|
|
@@ -5566,7 +5572,28 @@ checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"
|
|
|
5566
5572
|
dependencies = [
|
|
5567
5573
|
"core-foundation 0.10.1",
|
|
5568
5574
|
"core-foundation-sys",
|
|
5569
|
-
"jni",
|
|
5575
|
+
"jni 0.21.1",
|
|
5576
|
+
"log",
|
|
5577
|
+
"once_cell",
|
|
5578
|
+
"rustls",
|
|
5579
|
+
"rustls-native-certs",
|
|
5580
|
+
"rustls-platform-verifier-android",
|
|
5581
|
+
"rustls-webpki",
|
|
5582
|
+
"security-framework",
|
|
5583
|
+
"security-framework-sys",
|
|
5584
|
+
"webpki-root-certs",
|
|
5585
|
+
"windows-sys 0.61.2",
|
|
5586
|
+
]
|
|
5587
|
+
|
|
5588
|
+
[[package]]
|
|
5589
|
+
name = "rustls-platform-verifier"
|
|
5590
|
+
version = "0.7.0"
|
|
5591
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5592
|
+
checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0"
|
|
5593
|
+
dependencies = [
|
|
5594
|
+
"core-foundation 0.10.1",
|
|
5595
|
+
"core-foundation-sys",
|
|
5596
|
+
"jni 0.22.4",
|
|
5570
5597
|
"log",
|
|
5571
5598
|
"once_cell",
|
|
5572
5599
|
"rustls",
|
|
@@ -5725,6 +5752,12 @@ dependencies = [
|
|
|
5725
5752
|
"libc",
|
|
5726
5753
|
]
|
|
5727
5754
|
|
|
5755
|
+
[[package]]
|
|
5756
|
+
name = "semver"
|
|
5757
|
+
version = "1.0.28"
|
|
5758
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5759
|
+
checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
|
|
5760
|
+
|
|
5728
5761
|
[[package]]
|
|
5729
5762
|
name = "seq-macro"
|
|
5730
5763
|
version = "0.3.6"
|
|
@@ -5953,6 +5986,16 @@ version = "0.3.9"
|
|
|
5953
5986
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5954
5987
|
checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
|
|
5955
5988
|
|
|
5989
|
+
[[package]]
|
|
5990
|
+
name = "simd_cesu8"
|
|
5991
|
+
version = "1.1.1"
|
|
5992
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
5993
|
+
checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"
|
|
5994
|
+
dependencies = [
|
|
5995
|
+
"rustc_version",
|
|
5996
|
+
"simdutf8",
|
|
5997
|
+
]
|
|
5998
|
+
|
|
5956
5999
|
[[package]]
|
|
5957
6000
|
name = "simd_helpers"
|
|
5958
6001
|
version = "0.1.0"
|
|
@@ -7022,9 +7065,9 @@ checksum = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782"
|
|
|
7022
7065
|
|
|
7023
7066
|
[[package]]
|
|
7024
7067
|
name = "tree-sitter-language-pack"
|
|
7025
|
-
version = "1.12.
|
|
7068
|
+
version = "1.12.4"
|
|
7026
7069
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7027
|
-
checksum = "
|
|
7070
|
+
checksum = "d49e30d1927ccc08599c054380bda399817781f74eb9184007e90606c7ff3a2c"
|
|
7028
7071
|
dependencies = [
|
|
7029
7072
|
"ahash 0.8.12",
|
|
7030
7073
|
"cc",
|
|
@@ -7084,15 +7127,15 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
|
|
|
7084
7127
|
|
|
7085
7128
|
[[package]]
|
|
7086
7129
|
name = "unhwp"
|
|
7087
|
-
version = "0.5.
|
|
7130
|
+
version = "0.5.2"
|
|
7088
7131
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
7089
|
-
checksum = "
|
|
7132
|
+
checksum = "9db2add52da5275c7e850c5b2da1d8e580b223cd18a97807afcbd1026ffe3525"
|
|
7090
7133
|
dependencies = [
|
|
7091
7134
|
"cfb 0.10.0",
|
|
7092
7135
|
"flate2",
|
|
7093
7136
|
"pulldown-cmark 0.12.2",
|
|
7094
7137
|
"pulldown-cmark-to-cmark",
|
|
7095
|
-
"quick-xml 0.
|
|
7138
|
+
"quick-xml 0.41.0",
|
|
7096
7139
|
"rayon",
|
|
7097
7140
|
"regex",
|
|
7098
7141
|
"serde",
|
|
@@ -7248,7 +7291,7 @@ dependencies = [
|
|
|
7248
7291
|
"percent-encoding",
|
|
7249
7292
|
"rustls",
|
|
7250
7293
|
"rustls-pki-types",
|
|
7251
|
-
"rustls-platform-verifier",
|
|
7294
|
+
"rustls-platform-verifier 0.6.2",
|
|
7252
7295
|
"serde",
|
|
7253
7296
|
"serde_json",
|
|
7254
7297
|
"socks",
|
|
@@ -8020,9 +8063,9 @@ dependencies = [
|
|
|
8020
8063
|
|
|
8021
8064
|
[[package]]
|
|
8022
8065
|
name = "xberg"
|
|
8023
|
-
version = "1.0.0-rc.
|
|
8066
|
+
version = "1.0.0-rc.9"
|
|
8024
8067
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8025
|
-
checksum = "
|
|
8068
|
+
checksum = "627033553a27835485fee775b7b10cf8ed4e162f12d0df4e077ffb45846944f3"
|
|
8026
8069
|
dependencies = [
|
|
8027
8070
|
"ahash 0.8.12",
|
|
8028
8071
|
"async-trait",
|
|
@@ -8138,9 +8181,9 @@ dependencies = [
|
|
|
8138
8181
|
|
|
8139
8182
|
[[package]]
|
|
8140
8183
|
name = "xberg-gliner"
|
|
8141
|
-
version = "1.0.0-rc.
|
|
8184
|
+
version = "1.0.0-rc.9"
|
|
8142
8185
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8143
|
-
checksum = "
|
|
8186
|
+
checksum = "86e43aeca6ee9066bb9a457c8f5649705b8e04d0e04645103ad60fdbdd8596b6"
|
|
8144
8187
|
dependencies = [
|
|
8145
8188
|
"ndarray 0.17.2",
|
|
8146
8189
|
"ort",
|
|
@@ -8152,9 +8195,9 @@ dependencies = [
|
|
|
8152
8195
|
|
|
8153
8196
|
[[package]]
|
|
8154
8197
|
name = "xberg-libheif"
|
|
8155
|
-
version = "1.0.0-rc.
|
|
8198
|
+
version = "1.0.0-rc.9"
|
|
8156
8199
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8157
|
-
checksum = "
|
|
8200
|
+
checksum = "47142402f9ab8e1f1041acb5d8fbd3dae397fd9a6b4c65f22be9c4434c81731b"
|
|
8158
8201
|
dependencies = [
|
|
8159
8202
|
"cfg-if",
|
|
8160
8203
|
"enumn",
|
|
@@ -8165,9 +8208,9 @@ dependencies = [
|
|
|
8165
8208
|
|
|
8166
8209
|
[[package]]
|
|
8167
8210
|
name = "xberg-paddle-ocr"
|
|
8168
|
-
version = "1.0.0-rc.
|
|
8211
|
+
version = "1.0.0-rc.9"
|
|
8169
8212
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8170
|
-
checksum = "
|
|
8213
|
+
checksum = "d0d77debe5b69db07cb3a184bf240c3e33414bf37540f27c0586fcfc0dc47b7d"
|
|
8171
8214
|
dependencies = [
|
|
8172
8215
|
"geo-clipper",
|
|
8173
8216
|
"geo-types",
|
|
@@ -8182,7 +8225,7 @@ dependencies = [
|
|
|
8182
8225
|
|
|
8183
8226
|
[[package]]
|
|
8184
8227
|
name = "xberg-rb"
|
|
8185
|
-
version = "1.0.0-rc.
|
|
8228
|
+
version = "1.0.0-rc.9"
|
|
8186
8229
|
dependencies = [
|
|
8187
8230
|
"async-trait",
|
|
8188
8231
|
"crawlberg",
|
|
@@ -8196,9 +8239,9 @@ dependencies = [
|
|
|
8196
8239
|
|
|
8197
8240
|
[[package]]
|
|
8198
8241
|
name = "xberg-tesseract"
|
|
8199
|
-
version = "1.0.0-rc.
|
|
8242
|
+
version = "1.0.0-rc.9"
|
|
8200
8243
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
8201
|
-
checksum = "
|
|
8244
|
+
checksum = "7ec0056f3798302ed20cf62cea73a1eac49c987758d7bd52585a55f8e2b8648a"
|
|
8202
8245
|
dependencies = [
|
|
8203
8246
|
"cc",
|
|
8204
8247
|
"cmake",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "xberg-rb"
|
|
3
|
-
version = "1.0.0-rc.
|
|
3
|
+
version = "1.0.0-rc.9"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
license = "MIT"
|
|
6
6
|
description = "High-performance document intelligence library"
|
|
@@ -49,17 +49,17 @@ xml = ["xberg/xml"]
|
|
|
49
49
|
|
|
50
50
|
[dependencies]
|
|
51
51
|
async-trait = "0.1"
|
|
52
|
-
crawlberg = { default-features = false, version = "1.0.
|
|
52
|
+
crawlberg = { default-features = false, version = "1.0.3" }
|
|
53
53
|
magnus = "0.8"
|
|
54
54
|
rb-sys = ">=0.9, <0.9.128"
|
|
55
55
|
serde = { version = "1", features = ["derive"] }
|
|
56
56
|
serde_json = "1"
|
|
57
57
|
tokio = { version = "1", features = ["rt-multi-thread"] }
|
|
58
58
|
[target.'cfg(not(any(target_os = "windows", all(target_os = "macos", target_arch = "x86_64"))))'.dependencies]
|
|
59
|
-
xberg = { version = "1.0.0-rc.
|
|
59
|
+
xberg = { version = "1.0.0-rc.9", features = ["full", "pdf", "ocr", "paddle-ocr", "paddle-ocr-types", "layout-detection", "layout-types", "embeddings", "embedding-presets", "reranker", "reranker-presets", "chunking", "keywords-yake", "keywords-rake", "language-detection", "html", "tree-sitter", "office", "email", "archives", "stopwords", "auto-rotate", "auto-rotate-types", "tokio-runtime", "api", "api-types", "mcp", "liter-llm", "quality", "svg", "transcription", "transcription-types", "classification", "captioning", "ner-onnx", "ner-llm", "diff", "markdown-footnotes", "redaction", "enrichment", "heuristics", "presets", "structured", "url-ingestion"] }
|
|
60
60
|
|
|
61
61
|
[target.'cfg(target_os = "windows")'.dependencies]
|
|
62
|
-
xberg = { version = "1.0.0-rc.
|
|
62
|
+
xberg = { version = "1.0.0-rc.9", features = ["windows-target"] }
|
|
63
63
|
|
|
64
64
|
[target.'cfg(all(target_os = "macos", target_arch = "x86_64"))'.dependencies]
|
|
65
|
-
xberg = { version = "1.0.0-rc.
|
|
65
|
+
xberg = { version = "1.0.0-rc.9", features = ["macos-intel-target"] }
|
data/ext/xberg_rb/src/lib.rs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// This file is auto-generated by alef. DO NOT EDIT.
|
|
2
|
-
// alef:hash:
|
|
2
|
+
// alef:hash:28933e85bc9dc440d3d48a0fa997a78b13df863b6249812908ba7914441b9232
|
|
3
3
|
// Re-generate with: alef generate
|
|
4
4
|
#![allow(dead_code, unused_imports, unused_variables)]
|
|
5
5
|
#![allow(
|
|
@@ -24634,6 +24634,16 @@ fn list_reranker_backends() -> Result<Vec<String>, Error> {
|
|
|
24634
24634
|
Ok(result)
|
|
24635
24635
|
}
|
|
24636
24636
|
|
|
24637
|
+
fn list_tokenizer_backends() -> Result<Vec<String>, Error> {
|
|
24638
|
+
let result = xberg::list_tokenizer_backends().map_err(|e| {
|
|
24639
|
+
magnus::Error::new(
|
|
24640
|
+
unsafe { Ruby::get_unchecked() }.exception_runtime_error(),
|
|
24641
|
+
e.to_string(),
|
|
24642
|
+
)
|
|
24643
|
+
})?;
|
|
24644
|
+
Ok(result)
|
|
24645
|
+
}
|
|
24646
|
+
|
|
24637
24647
|
fn list_validators() -> Result<Vec<String>, Error> {
|
|
24638
24648
|
let result = xberg::list_validators().map_err(|e| {
|
|
24639
24649
|
magnus::Error::new(
|
|
@@ -24732,11 +24742,17 @@ impl xberg::plugins::Plugin for RbOcrBackendBridge {
|
|
|
24732
24742
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("version", ()) {
|
|
24733
24743
|
Ok(v) => v,
|
|
24734
24744
|
Err(e) => {
|
|
24735
|
-
|
|
24745
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
24746
|
+
// propagate. Log before substituting the default — a silent default is
|
|
24747
|
+
// indistinguishable from a real result to the caller.
|
|
24748
|
+
eprintln!("[RbOcrBackendBridge] host 'version' raised; returning default: {e}");
|
|
24736
24749
|
return Default::default();
|
|
24737
24750
|
}
|
|
24738
24751
|
};
|
|
24739
|
-
<String as magnus::TryConvert>::try_convert(val).
|
|
24752
|
+
<String as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
24753
|
+
eprintln!("[RbOcrBackendBridge] host 'version' returned an unconvertible value; returning default: {e}");
|
|
24754
|
+
Default::default()
|
|
24755
|
+
})
|
|
24740
24756
|
}
|
|
24741
24757
|
|
|
24742
24758
|
fn initialize(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
@@ -24941,11 +24957,19 @@ impl xberg::OcrBackend for RbOcrBackendBridge {
|
|
|
24941
24957
|
) {
|
|
24942
24958
|
Ok(v) => v,
|
|
24943
24959
|
Err(e) => {
|
|
24944
|
-
|
|
24960
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
24961
|
+
// propagate. Log before substituting the default — a silent default is
|
|
24962
|
+
// indistinguishable from a real result to the caller.
|
|
24963
|
+
eprintln!("[RbOcrBackendBridge] host 'supports_language' raised; returning default: {e}");
|
|
24945
24964
|
return Default::default();
|
|
24946
24965
|
}
|
|
24947
24966
|
};
|
|
24948
|
-
<bool as magnus::TryConvert>::try_convert(val).
|
|
24967
|
+
<bool as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
24968
|
+
eprintln!(
|
|
24969
|
+
"[RbOcrBackendBridge] host 'supports_language' returned an unconvertible value; returning default: {e}"
|
|
24970
|
+
);
|
|
24971
|
+
Default::default()
|
|
24972
|
+
})
|
|
24949
24973
|
}
|
|
24950
24974
|
|
|
24951
24975
|
fn backend_type(&self) -> xberg::OcrBackendType {
|
|
@@ -24955,7 +24979,10 @@ impl xberg::OcrBackend for RbOcrBackendBridge {
|
|
|
24955
24979
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("backend_type", ()) {
|
|
24956
24980
|
Ok(v) => v,
|
|
24957
24981
|
Err(e) => {
|
|
24958
|
-
|
|
24982
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
24983
|
+
// propagate. Log before substituting the default — a silent default is
|
|
24984
|
+
// indistinguishable from a real result to the caller.
|
|
24985
|
+
eprintln!("[RbOcrBackendBridge] host 'backend_type' raised; returning default: {e}");
|
|
24959
24986
|
return Default::default();
|
|
24960
24987
|
}
|
|
24961
24988
|
};
|
|
@@ -24965,12 +24992,17 @@ impl xberg::OcrBackend for RbOcrBackendBridge {
|
|
|
24965
24992
|
match val.funcall::<_, _, String>("to_json", ()) {
|
|
24966
24993
|
Ok(s) => s,
|
|
24967
24994
|
Err(e) => {
|
|
24968
|
-
|
|
24995
|
+
eprintln!(
|
|
24996
|
+
"[RbOcrBackendBridge] host 'backend_type' returned a non-JSON value; returning default: {e}"
|
|
24997
|
+
);
|
|
24969
24998
|
return Default::default();
|
|
24970
24999
|
}
|
|
24971
25000
|
}
|
|
24972
25001
|
};
|
|
24973
|
-
serde_json::from_str::<xberg::OcrBackendType>(&json_str).
|
|
25002
|
+
serde_json::from_str::<xberg::OcrBackendType>(&json_str).unwrap_or_else(|e| {
|
|
25003
|
+
eprintln!("[RbOcrBackendBridge] host 'backend_type' returned an unparseable value; returning default: {e}");
|
|
25004
|
+
Default::default()
|
|
25005
|
+
})
|
|
24974
25006
|
}
|
|
24975
25007
|
|
|
24976
25008
|
fn supported_languages(&self) -> Vec<String> {
|
|
@@ -24983,11 +25015,17 @@ impl xberg::OcrBackend for RbOcrBackendBridge {
|
|
|
24983
25015
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("supported_languages", ()) {
|
|
24984
25016
|
Ok(v) => v,
|
|
24985
25017
|
Err(e) => {
|
|
24986
|
-
|
|
25018
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25019
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25020
|
+
// indistinguishable from a real result to the caller.
|
|
25021
|
+
eprintln!("[RbOcrBackendBridge] host 'supported_languages' raised; returning default: {e}");
|
|
24987
25022
|
return Default::default();
|
|
24988
25023
|
}
|
|
24989
25024
|
};
|
|
24990
|
-
<Vec<String> as magnus::TryConvert>::try_convert(val).
|
|
25025
|
+
<Vec<String> as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
25026
|
+
eprintln!("[RbOcrBackendBridge] host 'supported_languages' returned an unconvertible value; returning default: {e}");
|
|
25027
|
+
Default::default()
|
|
25028
|
+
})
|
|
24991
25029
|
}
|
|
24992
25030
|
|
|
24993
25031
|
fn supports_table_detection(&self) -> bool {
|
|
@@ -25000,11 +25038,17 @@ impl xberg::OcrBackend for RbOcrBackendBridge {
|
|
|
25000
25038
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("supports_table_detection", ()) {
|
|
25001
25039
|
Ok(v) => v,
|
|
25002
25040
|
Err(e) => {
|
|
25003
|
-
|
|
25041
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25042
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25043
|
+
// indistinguishable from a real result to the caller.
|
|
25044
|
+
eprintln!("[RbOcrBackendBridge] host 'supports_table_detection' raised; returning default: {e}");
|
|
25004
25045
|
return Default::default();
|
|
25005
25046
|
}
|
|
25006
25047
|
};
|
|
25007
|
-
<bool as magnus::TryConvert>::try_convert(val).
|
|
25048
|
+
<bool as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
25049
|
+
eprintln!("[RbOcrBackendBridge] host 'supports_table_detection' returned an unconvertible value; returning default: {e}");
|
|
25050
|
+
Default::default()
|
|
25051
|
+
})
|
|
25008
25052
|
}
|
|
25009
25053
|
|
|
25010
25054
|
fn supports_document_processing(&self) -> bool {
|
|
@@ -25017,11 +25061,17 @@ impl xberg::OcrBackend for RbOcrBackendBridge {
|
|
|
25017
25061
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("supports_document_processing", ()) {
|
|
25018
25062
|
Ok(v) => v,
|
|
25019
25063
|
Err(e) => {
|
|
25020
|
-
|
|
25064
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25065
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25066
|
+
// indistinguishable from a real result to the caller.
|
|
25067
|
+
eprintln!("[RbOcrBackendBridge] host 'supports_document_processing' raised; returning default: {e}");
|
|
25021
25068
|
return Default::default();
|
|
25022
25069
|
}
|
|
25023
25070
|
};
|
|
25024
|
-
<bool as magnus::TryConvert>::try_convert(val).
|
|
25071
|
+
<bool as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
25072
|
+
eprintln!("[RbOcrBackendBridge] host 'supports_document_processing' returned an unconvertible value; returning default: {e}");
|
|
25073
|
+
Default::default()
|
|
25074
|
+
})
|
|
25025
25075
|
}
|
|
25026
25076
|
|
|
25027
25077
|
fn emits_structured_markdown(&self) -> bool {
|
|
@@ -25034,11 +25084,17 @@ impl xberg::OcrBackend for RbOcrBackendBridge {
|
|
|
25034
25084
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("emits_structured_markdown", ()) {
|
|
25035
25085
|
Ok(v) => v,
|
|
25036
25086
|
Err(e) => {
|
|
25037
|
-
|
|
25087
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25088
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25089
|
+
// indistinguishable from a real result to the caller.
|
|
25090
|
+
eprintln!("[RbOcrBackendBridge] host 'emits_structured_markdown' raised; returning default: {e}");
|
|
25038
25091
|
return Default::default();
|
|
25039
25092
|
}
|
|
25040
25093
|
};
|
|
25041
|
-
<bool as magnus::TryConvert>::try_convert(val).
|
|
25094
|
+
<bool as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
25095
|
+
eprintln!("[RbOcrBackendBridge] host 'emits_structured_markdown' returned an unconvertible value; returning default: {e}");
|
|
25096
|
+
Default::default()
|
|
25097
|
+
})
|
|
25042
25098
|
}
|
|
25043
25099
|
|
|
25044
25100
|
async fn process_document(
|
|
@@ -25586,11 +25642,17 @@ impl xberg::plugins::Plugin for RbPostProcessorBridge {
|
|
|
25586
25642
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("version", ()) {
|
|
25587
25643
|
Ok(v) => v,
|
|
25588
25644
|
Err(e) => {
|
|
25589
|
-
|
|
25645
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25646
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25647
|
+
// indistinguishable from a real result to the caller.
|
|
25648
|
+
eprintln!("[RbPostProcessorBridge] host 'version' raised; returning default: {e}");
|
|
25590
25649
|
return Default::default();
|
|
25591
25650
|
}
|
|
25592
25651
|
};
|
|
25593
|
-
<String as magnus::TryConvert>::try_convert(val).
|
|
25652
|
+
<String as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
25653
|
+
eprintln!("[RbPostProcessorBridge] host 'version' returned an unconvertible value; returning default: {e}");
|
|
25654
|
+
Default::default()
|
|
25655
|
+
})
|
|
25594
25656
|
}
|
|
25595
25657
|
|
|
25596
25658
|
fn initialize(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
@@ -25702,7 +25764,10 @@ impl xberg::PostProcessor for RbPostProcessorBridge {
|
|
|
25702
25764
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("processing_stage", ()) {
|
|
25703
25765
|
Ok(v) => v,
|
|
25704
25766
|
Err(e) => {
|
|
25705
|
-
|
|
25767
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25768
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25769
|
+
// indistinguishable from a real result to the caller.
|
|
25770
|
+
eprintln!("[RbPostProcessorBridge] host 'processing_stage' raised; returning default: {e}");
|
|
25706
25771
|
return Default::default();
|
|
25707
25772
|
}
|
|
25708
25773
|
};
|
|
@@ -25712,12 +25777,19 @@ impl xberg::PostProcessor for RbPostProcessorBridge {
|
|
|
25712
25777
|
match val.funcall::<_, _, String>("to_json", ()) {
|
|
25713
25778
|
Ok(s) => s,
|
|
25714
25779
|
Err(e) => {
|
|
25715
|
-
|
|
25780
|
+
eprintln!(
|
|
25781
|
+
"[RbPostProcessorBridge] host 'processing_stage' returned a non-JSON value; returning default: {e}"
|
|
25782
|
+
);
|
|
25716
25783
|
return Default::default();
|
|
25717
25784
|
}
|
|
25718
25785
|
}
|
|
25719
25786
|
};
|
|
25720
|
-
serde_json::from_str::<xberg::ProcessingStage>(&json_str).
|
|
25787
|
+
serde_json::from_str::<xberg::ProcessingStage>(&json_str).unwrap_or_else(|e| {
|
|
25788
|
+
eprintln!(
|
|
25789
|
+
"[RbPostProcessorBridge] host 'processing_stage' returned an unparseable value; returning default: {e}"
|
|
25790
|
+
);
|
|
25791
|
+
Default::default()
|
|
25792
|
+
})
|
|
25721
25793
|
}
|
|
25722
25794
|
|
|
25723
25795
|
fn should_process(&self, _result: &xberg::ExtractedDocument, _config: &xberg::ExtractionConfig) -> bool {
|
|
@@ -25744,11 +25816,19 @@ impl xberg::PostProcessor for RbPostProcessorBridge {
|
|
|
25744
25816
|
) {
|
|
25745
25817
|
Ok(v) => v,
|
|
25746
25818
|
Err(e) => {
|
|
25747
|
-
|
|
25819
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25820
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25821
|
+
// indistinguishable from a real result to the caller.
|
|
25822
|
+
eprintln!("[RbPostProcessorBridge] host 'should_process' raised; returning default: {e}");
|
|
25748
25823
|
return Default::default();
|
|
25749
25824
|
}
|
|
25750
25825
|
};
|
|
25751
|
-
<bool as magnus::TryConvert>::try_convert(val).
|
|
25826
|
+
<bool as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
25827
|
+
eprintln!(
|
|
25828
|
+
"[RbPostProcessorBridge] host 'should_process' returned an unconvertible value; returning default: {e}"
|
|
25829
|
+
);
|
|
25830
|
+
Default::default()
|
|
25831
|
+
})
|
|
25752
25832
|
}
|
|
25753
25833
|
|
|
25754
25834
|
fn estimated_duration_ms(&self, _result: &xberg::ExtractedDocument) -> u64 {
|
|
@@ -25768,11 +25848,17 @@ impl xberg::PostProcessor for RbPostProcessorBridge {
|
|
|
25768
25848
|
) {
|
|
25769
25849
|
Ok(v) => v,
|
|
25770
25850
|
Err(e) => {
|
|
25771
|
-
|
|
25851
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25852
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25853
|
+
// indistinguishable from a real result to the caller.
|
|
25854
|
+
eprintln!("[RbPostProcessorBridge] host 'estimated_duration_ms' raised; returning default: {e}");
|
|
25772
25855
|
return Default::default();
|
|
25773
25856
|
}
|
|
25774
25857
|
};
|
|
25775
|
-
<u64 as magnus::TryConvert>::try_convert(val).
|
|
25858
|
+
<u64 as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
25859
|
+
eprintln!("[RbPostProcessorBridge] host 'estimated_duration_ms' returned an unconvertible value; returning default: {e}");
|
|
25860
|
+
Default::default()
|
|
25861
|
+
})
|
|
25776
25862
|
}
|
|
25777
25863
|
|
|
25778
25864
|
fn priority(&self) -> i32 {
|
|
@@ -25785,11 +25871,19 @@ impl xberg::PostProcessor for RbPostProcessorBridge {
|
|
|
25785
25871
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("priority", ()) {
|
|
25786
25872
|
Ok(v) => v,
|
|
25787
25873
|
Err(e) => {
|
|
25788
|
-
|
|
25874
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
25875
|
+
// propagate. Log before substituting the default — a silent default is
|
|
25876
|
+
// indistinguishable from a real result to the caller.
|
|
25877
|
+
eprintln!("[RbPostProcessorBridge] host 'priority' raised; returning default: {e}");
|
|
25789
25878
|
return Default::default();
|
|
25790
25879
|
}
|
|
25791
25880
|
};
|
|
25792
|
-
<i32 as magnus::TryConvert>::try_convert(val).
|
|
25881
|
+
<i32 as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
25882
|
+
eprintln!(
|
|
25883
|
+
"[RbPostProcessorBridge] host 'priority' returned an unconvertible value; returning default: {e}"
|
|
25884
|
+
);
|
|
25885
|
+
Default::default()
|
|
25886
|
+
})
|
|
25793
25887
|
}
|
|
25794
25888
|
}
|
|
25795
25889
|
|
|
@@ -26011,11 +26105,17 @@ impl xberg::plugins::Plugin for RbValidatorBridge {
|
|
|
26011
26105
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("version", ()) {
|
|
26012
26106
|
Ok(v) => v,
|
|
26013
26107
|
Err(e) => {
|
|
26014
|
-
|
|
26108
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26109
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26110
|
+
// indistinguishable from a real result to the caller.
|
|
26111
|
+
eprintln!("[RbValidatorBridge] host 'version' raised; returning default: {e}");
|
|
26015
26112
|
return Default::default();
|
|
26016
26113
|
}
|
|
26017
26114
|
};
|
|
26018
|
-
<String as magnus::TryConvert>::try_convert(val).
|
|
26115
|
+
<String as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26116
|
+
eprintln!("[RbValidatorBridge] host 'version' returned an unconvertible value; returning default: {e}");
|
|
26117
|
+
Default::default()
|
|
26118
|
+
})
|
|
26019
26119
|
}
|
|
26020
26120
|
|
|
26021
26121
|
fn initialize(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
@@ -26144,11 +26244,19 @@ impl xberg::Validator for RbValidatorBridge {
|
|
|
26144
26244
|
) {
|
|
26145
26245
|
Ok(v) => v,
|
|
26146
26246
|
Err(e) => {
|
|
26147
|
-
|
|
26247
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26248
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26249
|
+
// indistinguishable from a real result to the caller.
|
|
26250
|
+
eprintln!("[RbValidatorBridge] host 'should_validate' raised; returning default: {e}");
|
|
26148
26251
|
return Default::default();
|
|
26149
26252
|
}
|
|
26150
26253
|
};
|
|
26151
|
-
<bool as magnus::TryConvert>::try_convert(val).
|
|
26254
|
+
<bool as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26255
|
+
eprintln!(
|
|
26256
|
+
"[RbValidatorBridge] host 'should_validate' returned an unconvertible value; returning default: {e}"
|
|
26257
|
+
);
|
|
26258
|
+
Default::default()
|
|
26259
|
+
})
|
|
26152
26260
|
}
|
|
26153
26261
|
|
|
26154
26262
|
fn priority(&self) -> i32 {
|
|
@@ -26161,11 +26269,17 @@ impl xberg::Validator for RbValidatorBridge {
|
|
|
26161
26269
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("priority", ()) {
|
|
26162
26270
|
Ok(v) => v,
|
|
26163
26271
|
Err(e) => {
|
|
26164
|
-
|
|
26272
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26273
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26274
|
+
// indistinguishable from a real result to the caller.
|
|
26275
|
+
eprintln!("[RbValidatorBridge] host 'priority' raised; returning default: {e}");
|
|
26165
26276
|
return Default::default();
|
|
26166
26277
|
}
|
|
26167
26278
|
};
|
|
26168
|
-
<i32 as magnus::TryConvert>::try_convert(val).
|
|
26279
|
+
<i32 as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26280
|
+
eprintln!("[RbValidatorBridge] host 'priority' returned an unconvertible value; returning default: {e}");
|
|
26281
|
+
Default::default()
|
|
26282
|
+
})
|
|
26169
26283
|
}
|
|
26170
26284
|
}
|
|
26171
26285
|
|
|
@@ -26340,11 +26454,19 @@ impl xberg::plugins::Plugin for RbDocumentExtractorBridge {
|
|
|
26340
26454
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("version", ()) {
|
|
26341
26455
|
Ok(v) => v,
|
|
26342
26456
|
Err(e) => {
|
|
26343
|
-
|
|
26457
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26458
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26459
|
+
// indistinguishable from a real result to the caller.
|
|
26460
|
+
eprintln!("[RbDocumentExtractorBridge] host 'version' raised; returning default: {e}");
|
|
26344
26461
|
return Default::default();
|
|
26345
26462
|
}
|
|
26346
26463
|
};
|
|
26347
|
-
<String as magnus::TryConvert>::try_convert(val).
|
|
26464
|
+
<String as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26465
|
+
eprintln!(
|
|
26466
|
+
"[RbDocumentExtractorBridge] host 'version' returned an unconvertible value; returning default: {e}"
|
|
26467
|
+
);
|
|
26468
|
+
Default::default()
|
|
26469
|
+
})
|
|
26348
26470
|
}
|
|
26349
26471
|
|
|
26350
26472
|
fn initialize(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
@@ -26465,11 +26587,17 @@ impl xberg::DocumentExtractor for RbDocumentExtractorBridge {
|
|
|
26465
26587
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("supported_mime_types", ()) {
|
|
26466
26588
|
Ok(v) => v,
|
|
26467
26589
|
Err(e) => {
|
|
26468
|
-
|
|
26590
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26591
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26592
|
+
// indistinguishable from a real result to the caller.
|
|
26593
|
+
eprintln!("[RbDocumentExtractorBridge] host 'supported_mime_types' raised; returning default: {e}");
|
|
26469
26594
|
return Default::default();
|
|
26470
26595
|
}
|
|
26471
26596
|
};
|
|
26472
|
-
<Vec<String> as magnus::TryConvert>::try_convert(val).
|
|
26597
|
+
<Vec<String> as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26598
|
+
eprintln!("[RbDocumentExtractorBridge] host 'supported_mime_types' returned an unconvertible value; returning default: {e}");
|
|
26599
|
+
Default::default()
|
|
26600
|
+
})
|
|
26473
26601
|
};
|
|
26474
26602
|
let __strs: Vec<&'static str> = __types
|
|
26475
26603
|
.into_iter()
|
|
@@ -26488,11 +26616,19 @@ impl xberg::DocumentExtractor for RbDocumentExtractorBridge {
|
|
|
26488
26616
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("priority", ()) {
|
|
26489
26617
|
Ok(v) => v,
|
|
26490
26618
|
Err(e) => {
|
|
26491
|
-
|
|
26619
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26620
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26621
|
+
// indistinguishable from a real result to the caller.
|
|
26622
|
+
eprintln!("[RbDocumentExtractorBridge] host 'priority' raised; returning default: {e}");
|
|
26492
26623
|
return Default::default();
|
|
26493
26624
|
}
|
|
26494
26625
|
};
|
|
26495
|
-
<i32 as magnus::TryConvert>::try_convert(val).
|
|
26626
|
+
<i32 as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26627
|
+
eprintln!(
|
|
26628
|
+
"[RbDocumentExtractorBridge] host 'priority' returned an unconvertible value; returning default: {e}"
|
|
26629
|
+
);
|
|
26630
|
+
Default::default()
|
|
26631
|
+
})
|
|
26496
26632
|
}
|
|
26497
26633
|
|
|
26498
26634
|
fn can_handle(&self, _path: &std::path::Path, _mime_type: &str) -> bool {
|
|
@@ -26518,11 +26654,19 @@ impl xberg::DocumentExtractor for RbDocumentExtractorBridge {
|
|
|
26518
26654
|
) {
|
|
26519
26655
|
Ok(v) => v,
|
|
26520
26656
|
Err(e) => {
|
|
26521
|
-
|
|
26657
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26658
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26659
|
+
// indistinguishable from a real result to the caller.
|
|
26660
|
+
eprintln!("[RbDocumentExtractorBridge] host 'can_handle' raised; returning default: {e}");
|
|
26522
26661
|
return Default::default();
|
|
26523
26662
|
}
|
|
26524
26663
|
};
|
|
26525
|
-
<bool as magnus::TryConvert>::try_convert(val).
|
|
26664
|
+
<bool as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26665
|
+
eprintln!(
|
|
26666
|
+
"[RbDocumentExtractorBridge] host 'can_handle' returned an unconvertible value; returning default: {e}"
|
|
26667
|
+
);
|
|
26668
|
+
Default::default()
|
|
26669
|
+
})
|
|
26526
26670
|
}
|
|
26527
26671
|
}
|
|
26528
26672
|
|
|
@@ -26699,11 +26843,19 @@ impl xberg::plugins::Plugin for RbEmbeddingBackendBridge {
|
|
|
26699
26843
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("version", ()) {
|
|
26700
26844
|
Ok(v) => v,
|
|
26701
26845
|
Err(e) => {
|
|
26702
|
-
|
|
26846
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26847
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26848
|
+
// indistinguishable from a real result to the caller.
|
|
26849
|
+
eprintln!("[RbEmbeddingBackendBridge] host 'version' raised; returning default: {e}");
|
|
26703
26850
|
return Default::default();
|
|
26704
26851
|
}
|
|
26705
26852
|
};
|
|
26706
|
-
<String as magnus::TryConvert>::try_convert(val).
|
|
26853
|
+
<String as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26854
|
+
eprintln!(
|
|
26855
|
+
"[RbEmbeddingBackendBridge] host 'version' returned an unconvertible value; returning default: {e}"
|
|
26856
|
+
);
|
|
26857
|
+
Default::default()
|
|
26858
|
+
})
|
|
26707
26859
|
}
|
|
26708
26860
|
|
|
26709
26861
|
fn initialize(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
@@ -26756,11 +26908,19 @@ impl xberg::EmbeddingBackend for RbEmbeddingBackendBridge {
|
|
|
26756
26908
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("dimensions", ()) {
|
|
26757
26909
|
Ok(v) => v,
|
|
26758
26910
|
Err(e) => {
|
|
26759
|
-
|
|
26911
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
26912
|
+
// propagate. Log before substituting the default — a silent default is
|
|
26913
|
+
// indistinguishable from a real result to the caller.
|
|
26914
|
+
eprintln!("[RbEmbeddingBackendBridge] host 'dimensions' raised; returning default: {e}");
|
|
26760
26915
|
return Default::default();
|
|
26761
26916
|
}
|
|
26762
26917
|
};
|
|
26763
|
-
<usize as magnus::TryConvert>::try_convert(val).
|
|
26918
|
+
<usize as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
26919
|
+
eprintln!(
|
|
26920
|
+
"[RbEmbeddingBackendBridge] host 'dimensions' returned an unconvertible value; returning default: {e}"
|
|
26921
|
+
);
|
|
26922
|
+
Default::default()
|
|
26923
|
+
})
|
|
26764
26924
|
}
|
|
26765
26925
|
|
|
26766
26926
|
async fn embed(&self, texts: Vec<String>) -> std::result::Result<Vec<Vec<f32>>, xberg::XbergError> {
|
|
@@ -26897,11 +27057,17 @@ impl xberg::plugins::Plugin for RbRendererBridge {
|
|
|
26897
27057
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("version", ()) {
|
|
26898
27058
|
Ok(v) => v,
|
|
26899
27059
|
Err(e) => {
|
|
26900
|
-
|
|
27060
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
27061
|
+
// propagate. Log before substituting the default — a silent default is
|
|
27062
|
+
// indistinguishable from a real result to the caller.
|
|
27063
|
+
eprintln!("[RbRendererBridge] host 'version' raised; returning default: {e}");
|
|
26901
27064
|
return Default::default();
|
|
26902
27065
|
}
|
|
26903
27066
|
};
|
|
26904
|
-
<String as magnus::TryConvert>::try_convert(val).
|
|
27067
|
+
<String as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
27068
|
+
eprintln!("[RbRendererBridge] host 'version' returned an unconvertible value; returning default: {e}");
|
|
27069
|
+
Default::default()
|
|
27070
|
+
})
|
|
26905
27071
|
}
|
|
26906
27072
|
|
|
26907
27073
|
fn initialize(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
@@ -27077,11 +27243,19 @@ impl xberg::plugins::Plugin for RbRerankerBackendBridge {
|
|
|
27077
27243
|
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("version", ()) {
|
|
27078
27244
|
Ok(v) => v,
|
|
27079
27245
|
Err(e) => {
|
|
27080
|
-
|
|
27246
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
27247
|
+
// propagate. Log before substituting the default — a silent default is
|
|
27248
|
+
// indistinguishable from a real result to the caller.
|
|
27249
|
+
eprintln!("[RbRerankerBackendBridge] host 'version' raised; returning default: {e}");
|
|
27081
27250
|
return Default::default();
|
|
27082
27251
|
}
|
|
27083
27252
|
};
|
|
27084
|
-
<String as magnus::TryConvert>::try_convert(val).
|
|
27253
|
+
<String as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
27254
|
+
eprintln!(
|
|
27255
|
+
"[RbRerankerBackendBridge] host 'version' returned an unconvertible value; returning default: {e}"
|
|
27256
|
+
);
|
|
27257
|
+
Default::default()
|
|
27258
|
+
})
|
|
27085
27259
|
}
|
|
27086
27260
|
|
|
27087
27261
|
fn initialize(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
@@ -27223,6 +27397,180 @@ pub fn clear_reranker_backends() -> Result<(), magnus::Error> {
|
|
|
27223
27397
|
})
|
|
27224
27398
|
}
|
|
27225
27399
|
|
|
27400
|
+
#[allow(unused_imports)]
|
|
27401
|
+
use magnus::TryConvert as _;
|
|
27402
|
+
#[allow(unused_imports)]
|
|
27403
|
+
use magnus::value::InnerValue as _;
|
|
27404
|
+
/// Wrapper that bridges a foreign Rb object to the `TokenizerBackend` trait.
|
|
27405
|
+
pub struct RbTokenizerBackendBridge {
|
|
27406
|
+
inner: magnus::value::Opaque<magnus::Value>,
|
|
27407
|
+
cached_name: String,
|
|
27408
|
+
has_initialize: bool,
|
|
27409
|
+
has_shutdown: bool,
|
|
27410
|
+
}
|
|
27411
|
+
|
|
27412
|
+
impl std::fmt::Debug for RbTokenizerBackendBridge {
|
|
27413
|
+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
27414
|
+
write!(f, "RbTokenizerBackendBridge")
|
|
27415
|
+
}
|
|
27416
|
+
}
|
|
27417
|
+
|
|
27418
|
+
impl RbTokenizerBackendBridge {
|
|
27419
|
+
/// Create a new bridge wrapping a Ruby object.
|
|
27420
|
+
/// Validates that the Ruby object responds to all required methods.
|
|
27421
|
+
pub fn new(rb_obj: magnus::Value, name: String) -> Result<Self, magnus::Error> {
|
|
27422
|
+
if !rb_obj.respond_to("count_tokens", false).unwrap_or(false) {
|
|
27423
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27424
|
+
return Err(magnus::Error::new(
|
|
27425
|
+
ruby.exception_runtime_error(),
|
|
27426
|
+
format!("Ruby object missing required method: {}", "count_tokens"),
|
|
27427
|
+
));
|
|
27428
|
+
}
|
|
27429
|
+
Ok(Self {
|
|
27430
|
+
inner: magnus::value::Opaque::from(rb_obj),
|
|
27431
|
+
cached_name: name,
|
|
27432
|
+
has_initialize: rb_obj.respond_to("initialize", false).unwrap_or(false),
|
|
27433
|
+
has_shutdown: rb_obj.respond_to("shutdown", false).unwrap_or(false),
|
|
27434
|
+
})
|
|
27435
|
+
}
|
|
27436
|
+
}
|
|
27437
|
+
|
|
27438
|
+
impl xberg::plugins::Plugin for RbTokenizerBackendBridge {
|
|
27439
|
+
fn name(&self) -> &str {
|
|
27440
|
+
&self.cached_name
|
|
27441
|
+
}
|
|
27442
|
+
|
|
27443
|
+
fn version(&self) -> String {
|
|
27444
|
+
// SAFETY: bridge methods are only invoked from threads holding the GVL
|
|
27445
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27446
|
+
let value = self.inner.get_inner_with(&ruby);
|
|
27447
|
+
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("version", ()) {
|
|
27448
|
+
Ok(v) => v,
|
|
27449
|
+
Err(e) => {
|
|
27450
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
27451
|
+
// propagate. Log before substituting the default — a silent default is
|
|
27452
|
+
// indistinguishable from a real result to the caller.
|
|
27453
|
+
eprintln!("[RbTokenizerBackendBridge] host 'version' raised; returning default: {e}");
|
|
27454
|
+
return Default::default();
|
|
27455
|
+
}
|
|
27456
|
+
};
|
|
27457
|
+
<String as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
27458
|
+
eprintln!(
|
|
27459
|
+
"[RbTokenizerBackendBridge] host 'version' returned an unconvertible value; returning default: {e}"
|
|
27460
|
+
);
|
|
27461
|
+
Default::default()
|
|
27462
|
+
})
|
|
27463
|
+
}
|
|
27464
|
+
|
|
27465
|
+
fn initialize(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
27466
|
+
if !(self.has_initialize) {
|
|
27467
|
+
return Ok(());
|
|
27468
|
+
}
|
|
27469
|
+
// SAFETY: bridge methods are only invoked from threads holding the GVL
|
|
27470
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27471
|
+
let value = self.inner.get_inner_with(&ruby);
|
|
27472
|
+
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("initialize", ()) {
|
|
27473
|
+
Ok(v) => v,
|
|
27474
|
+
Err(e) => {
|
|
27475
|
+
return Err(xberg::XbergError::Other(format!(
|
|
27476
|
+
"Ruby method 'initialize' failed: {}",
|
|
27477
|
+
e
|
|
27478
|
+
)));
|
|
27479
|
+
}
|
|
27480
|
+
};
|
|
27481
|
+
let _ = val;
|
|
27482
|
+
Ok(())
|
|
27483
|
+
}
|
|
27484
|
+
|
|
27485
|
+
fn shutdown(&self) -> std::result::Result<(), xberg::XbergError> {
|
|
27486
|
+
if !(self.has_shutdown) {
|
|
27487
|
+
return Ok(());
|
|
27488
|
+
}
|
|
27489
|
+
// SAFETY: bridge methods are only invoked from threads holding the GVL
|
|
27490
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27491
|
+
let value = self.inner.get_inner_with(&ruby);
|
|
27492
|
+
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>("shutdown", ()) {
|
|
27493
|
+
Ok(v) => v,
|
|
27494
|
+
Err(e) => {
|
|
27495
|
+
return Err(xberg::XbergError::Other(format!(
|
|
27496
|
+
"Ruby method 'shutdown' failed: {}",
|
|
27497
|
+
e
|
|
27498
|
+
)));
|
|
27499
|
+
}
|
|
27500
|
+
};
|
|
27501
|
+
let _ = val;
|
|
27502
|
+
Ok(())
|
|
27503
|
+
}
|
|
27504
|
+
}
|
|
27505
|
+
|
|
27506
|
+
impl xberg::TokenizerBackend for RbTokenizerBackendBridge {
|
|
27507
|
+
fn count_tokens(&self, text: &str) -> usize {
|
|
27508
|
+
// SAFETY: bridge methods are only invoked from threads holding the GVL
|
|
27509
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27510
|
+
let value = self.inner.get_inner_with(&ruby);
|
|
27511
|
+
let val: magnus::Value = match value.funcall::<_, _, magnus::Value>(
|
|
27512
|
+
"count_tokens",
|
|
27513
|
+
({
|
|
27514
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27515
|
+
ruby.str_new(AsRef::<str>::as_ref(&text)).as_value()
|
|
27516
|
+
},),
|
|
27517
|
+
) {
|
|
27518
|
+
Ok(v) => v,
|
|
27519
|
+
Err(e) => {
|
|
27520
|
+
// This method's Rust signature is infallible, so a Ruby exception cannot
|
|
27521
|
+
// propagate. Log before substituting the default — a silent default is
|
|
27522
|
+
// indistinguishable from a real result to the caller.
|
|
27523
|
+
eprintln!("[RbTokenizerBackendBridge] host 'count_tokens' raised; returning default: {e}");
|
|
27524
|
+
return Default::default();
|
|
27525
|
+
}
|
|
27526
|
+
};
|
|
27527
|
+
<usize as magnus::TryConvert>::try_convert(val).unwrap_or_else(|e| {
|
|
27528
|
+
eprintln!(
|
|
27529
|
+
"[RbTokenizerBackendBridge] host 'count_tokens' returned an unconvertible value; returning default: {e}"
|
|
27530
|
+
);
|
|
27531
|
+
Default::default()
|
|
27532
|
+
})
|
|
27533
|
+
}
|
|
27534
|
+
}
|
|
27535
|
+
|
|
27536
|
+
pub fn register_tokenizer_backend(rb_obj: magnus::Value, name: String) -> Result<(), magnus::Error> {
|
|
27537
|
+
let required_methods = ["count_tokens"];
|
|
27538
|
+
for method in &required_methods {
|
|
27539
|
+
if !rb_obj.respond_to(*method, false).unwrap_or(false) {
|
|
27540
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27541
|
+
return Err(magnus::Error::new(
|
|
27542
|
+
ruby.exception_runtime_error(),
|
|
27543
|
+
format!("Backend missing required method: {}", method),
|
|
27544
|
+
));
|
|
27545
|
+
}
|
|
27546
|
+
}
|
|
27547
|
+
let wrapper = RbTokenizerBackendBridge::new(rb_obj, name)?;
|
|
27548
|
+
let arc: Arc<dyn xberg::TokenizerBackend> = Arc::new(wrapper);
|
|
27549
|
+
|
|
27550
|
+
xberg::plugins::registry::get_tokenizer_backend_registry()
|
|
27551
|
+
.write()
|
|
27552
|
+
.register(arc)
|
|
27553
|
+
.map_err(|e| {
|
|
27554
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27555
|
+
magnus::Error::new(ruby.exception_runtime_error(), format!("register failed: {}", e))
|
|
27556
|
+
})?;
|
|
27557
|
+
Ok(())
|
|
27558
|
+
}
|
|
27559
|
+
|
|
27560
|
+
pub fn unregister_tokenizer_backend(name: String) -> Result<(), magnus::Error> {
|
|
27561
|
+
xberg::plugins::tokenizer_backend::unregister_tokenizer_backend(&name).map_err(|e| {
|
|
27562
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27563
|
+
magnus::Error::new(ruby.exception_runtime_error(), format!("{}", e))
|
|
27564
|
+
})
|
|
27565
|
+
}
|
|
27566
|
+
|
|
27567
|
+
pub fn clear_tokenizer_backends() -> Result<(), magnus::Error> {
|
|
27568
|
+
xberg::plugins::tokenizer_backend::clear_tokenizer_backends().map_err(|e| {
|
|
27569
|
+
let ruby = unsafe { magnus::Ruby::get_unchecked() };
|
|
27570
|
+
magnus::Error::new(ruby.exception_runtime_error(), format!("{}", e))
|
|
27571
|
+
})
|
|
27572
|
+
}
|
|
27573
|
+
|
|
27226
27574
|
#[allow(clippy::redundant_closure, clippy::useless_conversion)]
|
|
27227
27575
|
impl From<xberg::CacheStats> for CacheStats {
|
|
27228
27576
|
fn from(val: xberg::CacheStats) -> Self {
|
|
@@ -37503,6 +37851,8 @@ fn ruby_init(ruby: &Ruby) -> Result<(), Error> {
|
|
|
37503
37851
|
|
|
37504
37852
|
module.define_module_function("list_reranker_backends", function!(list_reranker_backends, 0))?;
|
|
37505
37853
|
|
|
37854
|
+
module.define_module_function("list_tokenizer_backends", function!(list_tokenizer_backends, 0))?;
|
|
37855
|
+
|
|
37506
37856
|
module.define_module_function("list_validators", function!(list_validators, 0))?;
|
|
37507
37857
|
|
|
37508
37858
|
module.define_module_function("find_unmarked_claims", function!(find_unmarked_claims, 1))?;
|
|
@@ -37557,5 +37907,14 @@ fn ruby_init(ruby: &Ruby) -> Result<(), Error> {
|
|
|
37557
37907
|
|
|
37558
37908
|
module.define_module_function("clear_reranker_backends", function!(clear_reranker_backends, 0))?;
|
|
37559
37909
|
|
|
37910
|
+
module.define_module_function("register_tokenizer_backend", function!(register_tokenizer_backend, 2))?;
|
|
37911
|
+
|
|
37912
|
+
module.define_module_function(
|
|
37913
|
+
"unregister_tokenizer_backend",
|
|
37914
|
+
function!(unregister_tokenizer_backend, 1),
|
|
37915
|
+
)?;
|
|
37916
|
+
|
|
37917
|
+
module.define_module_function("clear_tokenizer_backends", function!(clear_tokenizer_backends, 0))?;
|
|
37918
|
+
|
|
37560
37919
|
Ok(())
|
|
37561
37920
|
}
|
data/lib/xberg/native.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
-
# alef:hash:
|
|
2
|
+
# alef:hash:28933e85bc9dc440d3d48a0fa997a78b13df863b6249812908ba7914441b9232
|
|
3
3
|
# To regenerate: alef generate
|
|
4
4
|
# To verify freshness: alef verify --exit-code
|
|
5
5
|
# frozen_string_literal: true
|
|
@@ -351,9 +351,12 @@ module Xberg
|
|
|
351
351
|
# Defaults to `Characters` (Unicode character count). When using token-based sizing,
|
|
352
352
|
# chunks are sized by token count according to the specified tokenizer.
|
|
353
353
|
#
|
|
354
|
-
# Token-based sizing uses HuggingFace tokenizers loaded at runtime
|
|
355
|
-
# available on HuggingFace Hub can be
|
|
356
|
-
# (e.g., `Xenova/gpt-4o`,
|
|
354
|
+
# Token-based sizing uses HuggingFace tokenizers loaded at runtime, or a tokenizer
|
|
355
|
+
# backend you register yourself. Any tokenizer available on HuggingFace Hub can be
|
|
356
|
+
# used, including OpenAI-compatible tokenizers (e.g., `Xenova/gpt-4o`,
|
|
357
|
+
# `Xenova/cl100k_base`). To size chunks with your own tokenizer instead (llama.cpp/GGUF
|
|
358
|
+
# vocabularies, SentencePiece models, custom vocabs), register a `TokenizerBackend`
|
|
359
|
+
# with `register_tokenizer_backend` and set `model` to the registered name.
|
|
357
360
|
module ChunkSizing
|
|
358
361
|
extend T::Helpers
|
|
359
362
|
extend T::Sig
|
|
@@ -392,12 +395,15 @@ module Xberg
|
|
|
392
395
|
new
|
|
393
396
|
end
|
|
394
397
|
end
|
|
395
|
-
## Size measured in tokens from a HuggingFace tokenizer
|
|
398
|
+
## Size measured in tokens from a HuggingFace tokenizer or a registered
|
|
399
|
+
## tokenizer backend.
|
|
396
400
|
ChunkSizingTokenizer = Data.define(:model, :cache_dir) do
|
|
397
401
|
include ChunkSizing
|
|
398
402
|
extend T::Sig
|
|
399
403
|
|
|
400
|
-
#
|
|
404
|
+
# Name of a tokenizer backend registered via `register_tokenizer_backend`,
|
|
405
|
+
# or a HuggingFace model ID, e.g. "Xenova/gpt-4o", "bert-base-uncased".
|
|
406
|
+
# A registered backend name takes precedence over a HuggingFace ID.
|
|
401
407
|
sig { returns(String) }
|
|
402
408
|
# rubocop:disable Lint/UselessMethodDefinition
|
|
403
409
|
def model = super
|
data/lib/xberg/version.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
-
# alef:hash:
|
|
2
|
+
# alef:hash:28933e85bc9dc440d3d48a0fa997a78b13df863b6249812908ba7914441b9232
|
|
3
3
|
# To regenerate: alef generate
|
|
4
4
|
# To verify freshness: alef verify --exit-code
|
|
5
5
|
# frozen_string_literal: true
|
|
6
6
|
|
|
7
7
|
module Xberg
|
|
8
8
|
## The version string for this package.
|
|
9
|
-
VERSION = "1.0.0.pre.rc.
|
|
9
|
+
VERSION = "1.0.0.pre.rc.9"
|
|
10
10
|
end
|
data/lib/xberg.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
-
# alef:hash:
|
|
2
|
+
# alef:hash:28933e85bc9dc440d3d48a0fa997a78b13df863b6249812908ba7914441b9232
|
|
3
3
|
# To regenerate: alef generate
|
|
4
4
|
# To verify freshness: alef verify --exit-code
|
|
5
5
|
# frozen_string_literal: true
|
data/lib/xberg_rb.so
CHANGED
|
Binary file
|
data/sig/types.rbs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# This file is auto-generated by alef — DO NOT EDIT.
|
|
2
|
-
# alef:hash:
|
|
2
|
+
# alef:hash:28933e85bc9dc440d3d48a0fa997a78b13df863b6249812908ba7914441b9232
|
|
3
3
|
# To regenerate: alef generate
|
|
4
4
|
# To verify freshness: alef verify --exit-code
|
|
5
5
|
|
|
@@ -2483,6 +2483,10 @@ def self.clear_reranker_backends: () -> void
|
|
|
2483
2483
|
|
|
2484
2484
|
def self.list_reranker_backends: () -> Array[String]
|
|
2485
2485
|
|
|
2486
|
+
def self.clear_tokenizer_backends: () -> void
|
|
2487
|
+
|
|
2488
|
+
def self.list_tokenizer_backends: () -> Array[String]
|
|
2489
|
+
|
|
2486
2490
|
def self.list_validators: () -> Array[String]
|
|
2487
2491
|
|
|
2488
2492
|
def self.clear_validators: () -> void
|
|
@@ -2543,6 +2547,10 @@ def embed: (Array[String] texts) -> Array[Array[Float]]
|
|
|
2543
2547
|
def rerank: (String query, Array[String] documents) -> Array[Float]
|
|
2544
2548
|
end
|
|
2545
2549
|
|
|
2550
|
+
interface _TokenizerBackend
|
|
2551
|
+
def count_tokens: (String text) -> Integer
|
|
2552
|
+
end
|
|
2553
|
+
|
|
2546
2554
|
def self.register_ocr_backend: (_OcrBackend backend, String name) -> nil
|
|
2547
2555
|
|
|
2548
2556
|
def self.unregister_ocr_backend: (String name) -> nil
|
|
@@ -2563,4 +2571,8 @@ def self.register_reranker_backend: (_RerankerBackend backend, String name) -> n
|
|
|
2563
2571
|
|
|
2564
2572
|
def self.unregister_reranker_backend: (String name) -> nil
|
|
2565
2573
|
|
|
2574
|
+
def self.register_tokenizer_backend: (_TokenizerBackend backend, String name) -> nil
|
|
2575
|
+
|
|
2576
|
+
def self.unregister_tokenizer_backend: (String name) -> nil
|
|
2577
|
+
|
|
2566
2578
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: xberg
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.0.pre.rc.
|
|
4
|
+
version: 1.0.0.pre.rc.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Na'aman Hirschfeld <naaman@xberg.io>
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-07-
|
|
11
|
+
date: 2026-07-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rb_sys
|