nucliadb 2.46.1.post382__py3-none-any.whl → 6.2.1.post2777__py3-none-any.whl

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 (431) hide show
  1. migrations/0002_rollover_shards.py +1 -2
  2. migrations/0003_allfields_key.py +2 -37
  3. migrations/0004_rollover_shards.py +1 -2
  4. migrations/0005_rollover_shards.py +1 -2
  5. migrations/0006_rollover_shards.py +2 -4
  6. migrations/0008_cleanup_leftover_rollover_metadata.py +1 -2
  7. migrations/0009_upgrade_relations_and_texts_to_v2.py +5 -4
  8. migrations/0010_fix_corrupt_indexes.py +11 -12
  9. migrations/0011_materialize_labelset_ids.py +2 -18
  10. migrations/0012_rollover_shards.py +6 -12
  11. migrations/0013_rollover_shards.py +2 -4
  12. migrations/0014_rollover_shards.py +5 -7
  13. migrations/0015_targeted_rollover.py +6 -12
  14. migrations/0016_upgrade_to_paragraphs_v2.py +27 -32
  15. migrations/0017_multiple_writable_shards.py +3 -6
  16. migrations/0018_purge_orphan_kbslugs.py +59 -0
  17. migrations/0019_upgrade_to_paragraphs_v3.py +66 -0
  18. migrations/0020_drain_nodes_from_cluster.py +83 -0
  19. nucliadb/standalone/tests/unit/test_run.py → migrations/0021_overwrite_vectorsets_key.py +17 -18
  20. nucliadb/tests/unit/test_openapi.py → migrations/0022_fix_paragraph_deletion_bug.py +16 -11
  21. migrations/0023_backfill_pg_catalog.py +80 -0
  22. migrations/0025_assign_models_to_kbs_v2.py +113 -0
  23. migrations/0026_fix_high_cardinality_content_types.py +61 -0
  24. migrations/0027_rollover_texts3.py +73 -0
  25. nucliadb/ingest/fields/date.py → migrations/pg/0001_bootstrap.py +10 -12
  26. migrations/pg/0002_catalog.py +42 -0
  27. nucliadb/ingest/tests/unit/test_settings.py → migrations/pg/0003_catalog_kbid_index.py +5 -3
  28. nucliadb/common/cluster/base.py +41 -24
  29. nucliadb/common/cluster/discovery/base.py +6 -14
  30. nucliadb/common/cluster/discovery/k8s.py +9 -19
  31. nucliadb/common/cluster/discovery/manual.py +1 -3
  32. nucliadb/common/cluster/discovery/single.py +1 -2
  33. nucliadb/common/cluster/discovery/utils.py +1 -3
  34. nucliadb/common/cluster/grpc_node_dummy.py +11 -16
  35. nucliadb/common/cluster/index_node.py +10 -19
  36. nucliadb/common/cluster/manager.py +223 -102
  37. nucliadb/common/cluster/rebalance.py +42 -37
  38. nucliadb/common/cluster/rollover.py +377 -204
  39. nucliadb/common/cluster/settings.py +16 -9
  40. nucliadb/common/cluster/standalone/grpc_node_binding.py +24 -76
  41. nucliadb/common/cluster/standalone/index_node.py +4 -11
  42. nucliadb/common/cluster/standalone/service.py +2 -6
  43. nucliadb/common/cluster/standalone/utils.py +9 -6
  44. nucliadb/common/cluster/utils.py +43 -29
  45. nucliadb/common/constants.py +20 -0
  46. nucliadb/common/context/__init__.py +6 -4
  47. nucliadb/common/context/fastapi.py +8 -5
  48. nucliadb/{tests/knowledgeboxes/__init__.py → common/counters.py} +8 -2
  49. nucliadb/common/datamanagers/__init__.py +24 -5
  50. nucliadb/common/datamanagers/atomic.py +102 -0
  51. nucliadb/common/datamanagers/cluster.py +5 -5
  52. nucliadb/common/datamanagers/entities.py +6 -16
  53. nucliadb/common/datamanagers/fields.py +84 -0
  54. nucliadb/common/datamanagers/kb.py +101 -24
  55. nucliadb/common/datamanagers/labels.py +26 -56
  56. nucliadb/common/datamanagers/processing.py +2 -6
  57. nucliadb/common/datamanagers/resources.py +214 -117
  58. nucliadb/common/datamanagers/rollover.py +77 -16
  59. nucliadb/{ingest/orm → common/datamanagers}/synonyms.py +16 -28
  60. nucliadb/common/datamanagers/utils.py +19 -11
  61. nucliadb/common/datamanagers/vectorsets.py +110 -0
  62. nucliadb/common/external_index_providers/base.py +257 -0
  63. nucliadb/{ingest/tests/unit/test_cache.py → common/external_index_providers/exceptions.py} +9 -8
  64. nucliadb/common/external_index_providers/manager.py +101 -0
  65. nucliadb/common/external_index_providers/pinecone.py +933 -0
  66. nucliadb/common/external_index_providers/settings.py +52 -0
  67. nucliadb/common/http_clients/auth.py +3 -6
  68. nucliadb/common/http_clients/processing.py +6 -11
  69. nucliadb/common/http_clients/utils.py +1 -3
  70. nucliadb/common/ids.py +240 -0
  71. nucliadb/common/locking.py +43 -13
  72. nucliadb/common/maindb/driver.py +11 -35
  73. nucliadb/common/maindb/exceptions.py +6 -6
  74. nucliadb/common/maindb/local.py +22 -9
  75. nucliadb/common/maindb/pg.py +206 -111
  76. nucliadb/common/maindb/utils.py +13 -44
  77. nucliadb/common/models_utils/from_proto.py +479 -0
  78. nucliadb/common/models_utils/to_proto.py +60 -0
  79. nucliadb/common/nidx.py +260 -0
  80. nucliadb/export_import/datamanager.py +25 -19
  81. nucliadb/export_import/exceptions.py +8 -0
  82. nucliadb/export_import/exporter.py +20 -7
  83. nucliadb/export_import/importer.py +6 -11
  84. nucliadb/export_import/models.py +5 -5
  85. nucliadb/export_import/tasks.py +4 -4
  86. nucliadb/export_import/utils.py +94 -54
  87. nucliadb/health.py +1 -3
  88. nucliadb/ingest/app.py +15 -11
  89. nucliadb/ingest/consumer/auditing.py +30 -147
  90. nucliadb/ingest/consumer/consumer.py +96 -52
  91. nucliadb/ingest/consumer/materializer.py +10 -12
  92. nucliadb/ingest/consumer/pull.py +12 -27
  93. nucliadb/ingest/consumer/service.py +20 -19
  94. nucliadb/ingest/consumer/shard_creator.py +7 -14
  95. nucliadb/ingest/consumer/utils.py +1 -3
  96. nucliadb/ingest/fields/base.py +139 -188
  97. nucliadb/ingest/fields/conversation.py +18 -5
  98. nucliadb/ingest/fields/exceptions.py +1 -4
  99. nucliadb/ingest/fields/file.py +7 -25
  100. nucliadb/ingest/fields/link.py +11 -16
  101. nucliadb/ingest/fields/text.py +9 -4
  102. nucliadb/ingest/orm/brain.py +255 -262
  103. nucliadb/ingest/orm/broker_message.py +181 -0
  104. nucliadb/ingest/orm/entities.py +36 -51
  105. nucliadb/ingest/orm/exceptions.py +12 -0
  106. nucliadb/ingest/orm/knowledgebox.py +334 -278
  107. nucliadb/ingest/orm/processor/__init__.py +2 -697
  108. nucliadb/ingest/orm/processor/auditing.py +117 -0
  109. nucliadb/ingest/orm/processor/data_augmentation.py +164 -0
  110. nucliadb/ingest/orm/processor/pgcatalog.py +84 -0
  111. nucliadb/ingest/orm/processor/processor.py +752 -0
  112. nucliadb/ingest/orm/processor/sequence_manager.py +1 -1
  113. nucliadb/ingest/orm/resource.py +280 -520
  114. nucliadb/ingest/orm/utils.py +25 -31
  115. nucliadb/ingest/partitions.py +3 -9
  116. nucliadb/ingest/processing.py +76 -81
  117. nucliadb/ingest/py.typed +0 -0
  118. nucliadb/ingest/serialize.py +37 -173
  119. nucliadb/ingest/service/__init__.py +1 -3
  120. nucliadb/ingest/service/writer.py +186 -577
  121. nucliadb/ingest/settings.py +13 -22
  122. nucliadb/ingest/utils.py +3 -6
  123. nucliadb/learning_proxy.py +264 -51
  124. nucliadb/metrics_exporter.py +30 -19
  125. nucliadb/middleware/__init__.py +1 -3
  126. nucliadb/migrator/command.py +1 -3
  127. nucliadb/migrator/datamanager.py +13 -13
  128. nucliadb/migrator/migrator.py +57 -37
  129. nucliadb/migrator/settings.py +2 -1
  130. nucliadb/migrator/utils.py +18 -10
  131. nucliadb/purge/__init__.py +139 -33
  132. nucliadb/purge/orphan_shards.py +7 -13
  133. nucliadb/reader/__init__.py +1 -3
  134. nucliadb/reader/api/models.py +3 -14
  135. nucliadb/reader/api/v1/__init__.py +0 -1
  136. nucliadb/reader/api/v1/download.py +27 -94
  137. nucliadb/reader/api/v1/export_import.py +4 -4
  138. nucliadb/reader/api/v1/knowledgebox.py +13 -13
  139. nucliadb/reader/api/v1/learning_config.py +8 -12
  140. nucliadb/reader/api/v1/resource.py +67 -93
  141. nucliadb/reader/api/v1/services.py +70 -125
  142. nucliadb/reader/app.py +16 -46
  143. nucliadb/reader/lifecycle.py +18 -4
  144. nucliadb/reader/py.typed +0 -0
  145. nucliadb/reader/reader/notifications.py +10 -31
  146. nucliadb/search/__init__.py +1 -3
  147. nucliadb/search/api/v1/__init__.py +2 -2
  148. nucliadb/search/api/v1/ask.py +112 -0
  149. nucliadb/search/api/v1/catalog.py +184 -0
  150. nucliadb/search/api/v1/feedback.py +17 -25
  151. nucliadb/search/api/v1/find.py +41 -41
  152. nucliadb/search/api/v1/knowledgebox.py +90 -62
  153. nucliadb/search/api/v1/predict_proxy.py +2 -2
  154. nucliadb/search/api/v1/resource/ask.py +66 -117
  155. nucliadb/search/api/v1/resource/search.py +51 -72
  156. nucliadb/search/api/v1/router.py +1 -0
  157. nucliadb/search/api/v1/search.py +50 -197
  158. nucliadb/search/api/v1/suggest.py +40 -54
  159. nucliadb/search/api/v1/summarize.py +9 -5
  160. nucliadb/search/api/v1/utils.py +2 -1
  161. nucliadb/search/app.py +16 -48
  162. nucliadb/search/lifecycle.py +10 -3
  163. nucliadb/search/predict.py +176 -188
  164. nucliadb/search/py.typed +0 -0
  165. nucliadb/search/requesters/utils.py +41 -63
  166. nucliadb/search/search/cache.py +149 -20
  167. nucliadb/search/search/chat/ask.py +918 -0
  168. nucliadb/search/{tests/unit/test_run.py → search/chat/exceptions.py} +14 -13
  169. nucliadb/search/search/chat/images.py +41 -17
  170. nucliadb/search/search/chat/prompt.py +851 -282
  171. nucliadb/search/search/chat/query.py +274 -267
  172. nucliadb/{writer/resource/slug.py → search/search/cut.py} +8 -6
  173. nucliadb/search/search/fetch.py +43 -36
  174. nucliadb/search/search/filters.py +9 -15
  175. nucliadb/search/search/find.py +214 -54
  176. nucliadb/search/search/find_merge.py +408 -391
  177. nucliadb/search/search/hydrator.py +191 -0
  178. nucliadb/search/search/merge.py +198 -234
  179. nucliadb/search/search/metrics.py +73 -2
  180. nucliadb/search/search/paragraphs.py +64 -106
  181. nucliadb/search/search/pgcatalog.py +233 -0
  182. nucliadb/search/search/predict_proxy.py +1 -1
  183. nucliadb/search/search/query.py +386 -257
  184. nucliadb/search/search/query_parser/exceptions.py +22 -0
  185. nucliadb/search/search/query_parser/models.py +101 -0
  186. nucliadb/search/search/query_parser/parser.py +183 -0
  187. nucliadb/search/search/rank_fusion.py +204 -0
  188. nucliadb/search/search/rerankers.py +270 -0
  189. nucliadb/search/search/shards.py +4 -38
  190. nucliadb/search/search/summarize.py +14 -18
  191. nucliadb/search/search/utils.py +27 -4
  192. nucliadb/search/settings.py +15 -1
  193. nucliadb/standalone/api_router.py +4 -10
  194. nucliadb/standalone/app.py +17 -14
  195. nucliadb/standalone/auth.py +7 -21
  196. nucliadb/standalone/config.py +9 -12
  197. nucliadb/standalone/introspect.py +5 -5
  198. nucliadb/standalone/lifecycle.py +26 -25
  199. nucliadb/standalone/migrations.py +58 -0
  200. nucliadb/standalone/purge.py +9 -8
  201. nucliadb/standalone/py.typed +0 -0
  202. nucliadb/standalone/run.py +25 -18
  203. nucliadb/standalone/settings.py +10 -14
  204. nucliadb/standalone/versions.py +15 -5
  205. nucliadb/tasks/consumer.py +8 -12
  206. nucliadb/tasks/producer.py +7 -6
  207. nucliadb/tests/config.py +53 -0
  208. nucliadb/train/__init__.py +1 -3
  209. nucliadb/train/api/utils.py +1 -2
  210. nucliadb/train/api/v1/shards.py +2 -2
  211. nucliadb/train/api/v1/trainset.py +4 -6
  212. nucliadb/train/app.py +14 -47
  213. nucliadb/train/generator.py +10 -19
  214. nucliadb/train/generators/field_classifier.py +7 -19
  215. nucliadb/train/generators/field_streaming.py +156 -0
  216. nucliadb/train/generators/image_classifier.py +12 -18
  217. nucliadb/train/generators/paragraph_classifier.py +5 -9
  218. nucliadb/train/generators/paragraph_streaming.py +6 -9
  219. nucliadb/train/generators/question_answer_streaming.py +19 -20
  220. nucliadb/train/generators/sentence_classifier.py +9 -15
  221. nucliadb/train/generators/token_classifier.py +45 -36
  222. nucliadb/train/generators/utils.py +14 -18
  223. nucliadb/train/lifecycle.py +7 -3
  224. nucliadb/train/nodes.py +23 -32
  225. nucliadb/train/py.typed +0 -0
  226. nucliadb/train/servicer.py +13 -21
  227. nucliadb/train/settings.py +2 -6
  228. nucliadb/train/types.py +13 -10
  229. nucliadb/train/upload.py +3 -6
  230. nucliadb/train/uploader.py +20 -25
  231. nucliadb/train/utils.py +1 -1
  232. nucliadb/writer/__init__.py +1 -3
  233. nucliadb/writer/api/constants.py +0 -5
  234. nucliadb/{ingest/fields/keywordset.py → writer/api/utils.py} +13 -10
  235. nucliadb/writer/api/v1/export_import.py +102 -49
  236. nucliadb/writer/api/v1/field.py +196 -620
  237. nucliadb/writer/api/v1/knowledgebox.py +221 -71
  238. nucliadb/writer/api/v1/learning_config.py +2 -2
  239. nucliadb/writer/api/v1/resource.py +114 -216
  240. nucliadb/writer/api/v1/services.py +64 -132
  241. nucliadb/writer/api/v1/slug.py +61 -0
  242. nucliadb/writer/api/v1/transaction.py +67 -0
  243. nucliadb/writer/api/v1/upload.py +184 -215
  244. nucliadb/writer/app.py +11 -61
  245. nucliadb/writer/back_pressure.py +62 -43
  246. nucliadb/writer/exceptions.py +0 -4
  247. nucliadb/writer/lifecycle.py +21 -15
  248. nucliadb/writer/py.typed +0 -0
  249. nucliadb/writer/resource/audit.py +2 -1
  250. nucliadb/writer/resource/basic.py +48 -62
  251. nucliadb/writer/resource/field.py +45 -135
  252. nucliadb/writer/resource/origin.py +1 -2
  253. nucliadb/writer/settings.py +14 -5
  254. nucliadb/writer/tus/__init__.py +17 -15
  255. nucliadb/writer/tus/azure.py +111 -0
  256. nucliadb/writer/tus/dm.py +17 -5
  257. nucliadb/writer/tus/exceptions.py +1 -3
  258. nucliadb/writer/tus/gcs.py +56 -84
  259. nucliadb/writer/tus/local.py +21 -37
  260. nucliadb/writer/tus/s3.py +28 -68
  261. nucliadb/writer/tus/storage.py +5 -56
  262. nucliadb/writer/vectorsets.py +125 -0
  263. nucliadb-6.2.1.post2777.dist-info/METADATA +148 -0
  264. nucliadb-6.2.1.post2777.dist-info/RECORD +343 -0
  265. {nucliadb-2.46.1.post382.dist-info → nucliadb-6.2.1.post2777.dist-info}/WHEEL +1 -1
  266. nucliadb/common/maindb/redis.py +0 -194
  267. nucliadb/common/maindb/tikv.py +0 -412
  268. nucliadb/ingest/fields/layout.py +0 -58
  269. nucliadb/ingest/tests/conftest.py +0 -30
  270. nucliadb/ingest/tests/fixtures.py +0 -771
  271. nucliadb/ingest/tests/integration/consumer/__init__.py +0 -18
  272. nucliadb/ingest/tests/integration/consumer/test_auditing.py +0 -80
  273. nucliadb/ingest/tests/integration/consumer/test_materializer.py +0 -89
  274. nucliadb/ingest/tests/integration/consumer/test_pull.py +0 -144
  275. nucliadb/ingest/tests/integration/consumer/test_service.py +0 -81
  276. nucliadb/ingest/tests/integration/consumer/test_shard_creator.py +0 -68
  277. nucliadb/ingest/tests/integration/ingest/test_ingest.py +0 -691
  278. nucliadb/ingest/tests/integration/ingest/test_processing_engine.py +0 -95
  279. nucliadb/ingest/tests/integration/ingest/test_relations.py +0 -272
  280. nucliadb/ingest/tests/unit/consumer/__init__.py +0 -18
  281. nucliadb/ingest/tests/unit/consumer/test_auditing.py +0 -140
  282. nucliadb/ingest/tests/unit/consumer/test_consumer.py +0 -69
  283. nucliadb/ingest/tests/unit/consumer/test_pull.py +0 -60
  284. nucliadb/ingest/tests/unit/consumer/test_shard_creator.py +0 -139
  285. nucliadb/ingest/tests/unit/consumer/test_utils.py +0 -67
  286. nucliadb/ingest/tests/unit/orm/__init__.py +0 -19
  287. nucliadb/ingest/tests/unit/orm/test_brain.py +0 -247
  288. nucliadb/ingest/tests/unit/orm/test_processor.py +0 -131
  289. nucliadb/ingest/tests/unit/orm/test_resource.py +0 -275
  290. nucliadb/ingest/tests/unit/test_partitions.py +0 -40
  291. nucliadb/ingest/tests/unit/test_processing.py +0 -171
  292. nucliadb/middleware/transaction.py +0 -117
  293. nucliadb/reader/api/v1/learning_collector.py +0 -63
  294. nucliadb/reader/tests/__init__.py +0 -19
  295. nucliadb/reader/tests/conftest.py +0 -31
  296. nucliadb/reader/tests/fixtures.py +0 -136
  297. nucliadb/reader/tests/test_list_resources.py +0 -75
  298. nucliadb/reader/tests/test_reader_file_download.py +0 -273
  299. nucliadb/reader/tests/test_reader_resource.py +0 -379
  300. nucliadb/reader/tests/test_reader_resource_field.py +0 -219
  301. nucliadb/search/api/v1/chat.py +0 -258
  302. nucliadb/search/api/v1/resource/chat.py +0 -94
  303. nucliadb/search/tests/__init__.py +0 -19
  304. nucliadb/search/tests/conftest.py +0 -33
  305. nucliadb/search/tests/fixtures.py +0 -199
  306. nucliadb/search/tests/node.py +0 -465
  307. nucliadb/search/tests/unit/__init__.py +0 -18
  308. nucliadb/search/tests/unit/api/__init__.py +0 -19
  309. nucliadb/search/tests/unit/api/v1/__init__.py +0 -19
  310. nucliadb/search/tests/unit/api/v1/resource/__init__.py +0 -19
  311. nucliadb/search/tests/unit/api/v1/resource/test_ask.py +0 -67
  312. nucliadb/search/tests/unit/api/v1/resource/test_chat.py +0 -97
  313. nucliadb/search/tests/unit/api/v1/test_chat.py +0 -96
  314. nucliadb/search/tests/unit/api/v1/test_predict_proxy.py +0 -98
  315. nucliadb/search/tests/unit/api/v1/test_summarize.py +0 -93
  316. nucliadb/search/tests/unit/search/__init__.py +0 -18
  317. nucliadb/search/tests/unit/search/requesters/__init__.py +0 -18
  318. nucliadb/search/tests/unit/search/requesters/test_utils.py +0 -210
  319. nucliadb/search/tests/unit/search/search/__init__.py +0 -19
  320. nucliadb/search/tests/unit/search/search/test_shards.py +0 -45
  321. nucliadb/search/tests/unit/search/search/test_utils.py +0 -82
  322. nucliadb/search/tests/unit/search/test_chat_prompt.py +0 -266
  323. nucliadb/search/tests/unit/search/test_fetch.py +0 -108
  324. nucliadb/search/tests/unit/search/test_filters.py +0 -125
  325. nucliadb/search/tests/unit/search/test_paragraphs.py +0 -157
  326. nucliadb/search/tests/unit/search/test_predict_proxy.py +0 -106
  327. nucliadb/search/tests/unit/search/test_query.py +0 -201
  328. nucliadb/search/tests/unit/test_app.py +0 -79
  329. nucliadb/search/tests/unit/test_find_merge.py +0 -112
  330. nucliadb/search/tests/unit/test_merge.py +0 -34
  331. nucliadb/search/tests/unit/test_predict.py +0 -584
  332. nucliadb/standalone/tests/__init__.py +0 -19
  333. nucliadb/standalone/tests/conftest.py +0 -33
  334. nucliadb/standalone/tests/fixtures.py +0 -38
  335. nucliadb/standalone/tests/unit/__init__.py +0 -18
  336. nucliadb/standalone/tests/unit/test_api_router.py +0 -61
  337. nucliadb/standalone/tests/unit/test_auth.py +0 -169
  338. nucliadb/standalone/tests/unit/test_introspect.py +0 -35
  339. nucliadb/standalone/tests/unit/test_versions.py +0 -68
  340. nucliadb/tests/benchmarks/__init__.py +0 -19
  341. nucliadb/tests/benchmarks/test_search.py +0 -99
  342. nucliadb/tests/conftest.py +0 -32
  343. nucliadb/tests/fixtures.py +0 -736
  344. nucliadb/tests/knowledgeboxes/philosophy_books.py +0 -203
  345. nucliadb/tests/knowledgeboxes/ten_dummy_resources.py +0 -109
  346. nucliadb/tests/migrations/__init__.py +0 -19
  347. nucliadb/tests/migrations/test_migration_0017.py +0 -80
  348. nucliadb/tests/tikv.py +0 -240
  349. nucliadb/tests/unit/__init__.py +0 -19
  350. nucliadb/tests/unit/common/__init__.py +0 -19
  351. nucliadb/tests/unit/common/cluster/__init__.py +0 -19
  352. nucliadb/tests/unit/common/cluster/discovery/__init__.py +0 -19
  353. nucliadb/tests/unit/common/cluster/discovery/test_k8s.py +0 -170
  354. nucliadb/tests/unit/common/cluster/standalone/__init__.py +0 -18
  355. nucliadb/tests/unit/common/cluster/standalone/test_service.py +0 -113
  356. nucliadb/tests/unit/common/cluster/standalone/test_utils.py +0 -59
  357. nucliadb/tests/unit/common/cluster/test_cluster.py +0 -399
  358. nucliadb/tests/unit/common/cluster/test_kb_shard_manager.py +0 -178
  359. nucliadb/tests/unit/common/cluster/test_rollover.py +0 -279
  360. nucliadb/tests/unit/common/maindb/__init__.py +0 -18
  361. nucliadb/tests/unit/common/maindb/test_driver.py +0 -127
  362. nucliadb/tests/unit/common/maindb/test_tikv.py +0 -53
  363. nucliadb/tests/unit/common/maindb/test_utils.py +0 -81
  364. nucliadb/tests/unit/common/test_context.py +0 -36
  365. nucliadb/tests/unit/export_import/__init__.py +0 -19
  366. nucliadb/tests/unit/export_import/test_datamanager.py +0 -37
  367. nucliadb/tests/unit/export_import/test_utils.py +0 -294
  368. nucliadb/tests/unit/migrator/__init__.py +0 -19
  369. nucliadb/tests/unit/migrator/test_migrator.py +0 -87
  370. nucliadb/tests/unit/tasks/__init__.py +0 -19
  371. nucliadb/tests/unit/tasks/conftest.py +0 -42
  372. nucliadb/tests/unit/tasks/test_consumer.py +0 -93
  373. nucliadb/tests/unit/tasks/test_producer.py +0 -95
  374. nucliadb/tests/unit/tasks/test_tasks.py +0 -60
  375. nucliadb/tests/unit/test_field_ids.py +0 -49
  376. nucliadb/tests/unit/test_health.py +0 -84
  377. nucliadb/tests/unit/test_kb_slugs.py +0 -54
  378. nucliadb/tests/unit/test_learning_proxy.py +0 -252
  379. nucliadb/tests/unit/test_metrics_exporter.py +0 -77
  380. nucliadb/tests/unit/test_purge.py +0 -138
  381. nucliadb/tests/utils/__init__.py +0 -74
  382. nucliadb/tests/utils/aiohttp_session.py +0 -44
  383. nucliadb/tests/utils/broker_messages/__init__.py +0 -167
  384. nucliadb/tests/utils/broker_messages/fields.py +0 -181
  385. nucliadb/tests/utils/broker_messages/helpers.py +0 -33
  386. nucliadb/tests/utils/entities.py +0 -78
  387. nucliadb/train/api/v1/check.py +0 -60
  388. nucliadb/train/tests/__init__.py +0 -19
  389. nucliadb/train/tests/conftest.py +0 -29
  390. nucliadb/train/tests/fixtures.py +0 -342
  391. nucliadb/train/tests/test_field_classification.py +0 -122
  392. nucliadb/train/tests/test_get_entities.py +0 -80
  393. nucliadb/train/tests/test_get_info.py +0 -51
  394. nucliadb/train/tests/test_get_ontology.py +0 -34
  395. nucliadb/train/tests/test_get_ontology_count.py +0 -63
  396. nucliadb/train/tests/test_image_classification.py +0 -222
  397. nucliadb/train/tests/test_list_fields.py +0 -39
  398. nucliadb/train/tests/test_list_paragraphs.py +0 -73
  399. nucliadb/train/tests/test_list_resources.py +0 -39
  400. nucliadb/train/tests/test_list_sentences.py +0 -71
  401. nucliadb/train/tests/test_paragraph_classification.py +0 -123
  402. nucliadb/train/tests/test_paragraph_streaming.py +0 -118
  403. nucliadb/train/tests/test_question_answer_streaming.py +0 -239
  404. nucliadb/train/tests/test_sentence_classification.py +0 -143
  405. nucliadb/train/tests/test_token_classification.py +0 -136
  406. nucliadb/train/tests/utils.py +0 -108
  407. nucliadb/writer/layouts/__init__.py +0 -51
  408. nucliadb/writer/layouts/v1.py +0 -59
  409. nucliadb/writer/resource/vectors.py +0 -120
  410. nucliadb/writer/tests/__init__.py +0 -19
  411. nucliadb/writer/tests/conftest.py +0 -31
  412. nucliadb/writer/tests/fixtures.py +0 -192
  413. nucliadb/writer/tests/test_fields.py +0 -486
  414. nucliadb/writer/tests/test_files.py +0 -743
  415. nucliadb/writer/tests/test_knowledgebox.py +0 -49
  416. nucliadb/writer/tests/test_reprocess_file_field.py +0 -139
  417. nucliadb/writer/tests/test_resources.py +0 -546
  418. nucliadb/writer/tests/test_service.py +0 -137
  419. nucliadb/writer/tests/test_tus.py +0 -203
  420. nucliadb/writer/tests/utils.py +0 -35
  421. nucliadb/writer/tus/pg.py +0 -125
  422. nucliadb-2.46.1.post382.dist-info/METADATA +0 -134
  423. nucliadb-2.46.1.post382.dist-info/RECORD +0 -451
  424. {nucliadb/ingest/tests → migrations/pg}/__init__.py +0 -0
  425. /nucliadb/{ingest/tests/integration → common/external_index_providers}/__init__.py +0 -0
  426. /nucliadb/{ingest/tests/integration/ingest → common/models_utils}/__init__.py +0 -0
  427. /nucliadb/{ingest/tests/unit → search/search/query_parser}/__init__.py +0 -0
  428. /nucliadb/{ingest/tests → tests}/vectors.py +0 -0
  429. {nucliadb-2.46.1.post382.dist-info → nucliadb-6.2.1.post2777.dist-info}/entry_points.txt +0 -0
  430. {nucliadb-2.46.1.post382.dist-info → nucliadb-6.2.1.post2777.dist-info}/top_level.txt +0 -0
  431. {nucliadb-2.46.1.post382.dist-info → nucliadb-6.2.1.post2777.dist-info}/zip-safe +0 -0
@@ -1,203 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #
20
-
21
- import pytest
22
- from httpx import AsyncClient
23
-
24
-
25
- @pytest.fixture(scope="function")
26
- async def philosophy_books_kb(
27
- nucliadb_manager: AsyncClient,
28
- nucliadb_writer: AsyncClient,
29
- ):
30
- payloads = [
31
- {
32
- "slug": "meditations",
33
- "title": "Meditations",
34
- "summary": (
35
- "Series of personal writings by Marcus Aurelius recording his private notes to "
36
- "himself and ideas on Stoic philosophy"
37
- ),
38
- "usermetadata": {
39
- "relations": [
40
- {
41
- "relation": "ENTITY",
42
- "to": {
43
- "type": "entity",
44
- "value": "Marcus Aurelius",
45
- "group": "PERSON",
46
- },
47
- }
48
- ]
49
- },
50
- },
51
- {
52
- "slug": "nicomachean-ethics",
53
- "title": "Nicomachean Ethics",
54
- "summary": (
55
- "Aristotle's best-known work on ethics, the science of human life"
56
- ),
57
- "usermetadata": {
58
- "relations": [
59
- {
60
- "relation": "ENTITY",
61
- "to": {
62
- "type": "entity",
63
- "value": "Aristotle",
64
- "group": "PERSON",
65
- },
66
- }
67
- ]
68
- },
69
- },
70
- {
71
- "slug": "beyond-good-and-evil",
72
- "title": "Beyond Good and Evil: Prelude to a philosophy of the Future",
73
- "summary": (
74
- "Nietzsche acuse past philosophers of lacking critical sense and blindly accepting "
75
- "dogmatic premises in their consideration of morality"
76
- ),
77
- "usermetadata": {
78
- "relations": [
79
- {
80
- "relation": "ENTITY",
81
- "to": {
82
- "type": "entity",
83
- "value": "Friedrich Nietzsche",
84
- "group": "PERSON",
85
- },
86
- }
87
- ]
88
- },
89
- },
90
- {
91
- "slug": "meditations-on-first-philosophy",
92
- "title": "Meditations on First Philosophy",
93
- "summary": (
94
- "Six meditations in which Descartes first discards all belief in things that are "
95
- "not absolutely certain, and then tries to establish what can be known for sure"
96
- ),
97
- "usermetadata": {
98
- "relations": [
99
- {
100
- "relation": "ENTITY",
101
- "to": {
102
- "type": "entity",
103
- "value": "René Descartes",
104
- "group": "PERSON",
105
- },
106
- }
107
- ]
108
- },
109
- },
110
- {
111
- "slug": "the-principles-of-the-most-ancient-and-modern-philosophy",
112
- "title": "The Principles of the most Ancient and Modern Philosophy",
113
- "summary": (
114
- "Conway's monistic view of the world as created from one substance"
115
- ),
116
- "usermetadata": {
117
- "relations": [
118
- {
119
- "relation": "ENTITY",
120
- "to": {
121
- "type": "entity",
122
- "value": "Anne Conway",
123
- "group": "PERSON",
124
- },
125
- }
126
- ]
127
- },
128
- },
129
- {
130
- "slug": "ethics",
131
- "title": "Ethics",
132
- "summary": (
133
- "Spinoza puts forward a small number of definitions and axioms from which he "
134
- "attempts to derive hundreds of propositions and corollaries"
135
- ),
136
- "usermetadata": {
137
- "relations": [
138
- {
139
- "relation": "ENTITY",
140
- "to": {
141
- "type": "entity",
142
- "value": "Baruch Spinoza",
143
- "group": "PERSON",
144
- },
145
- }
146
- ]
147
- },
148
- },
149
- {
150
- "slug": "critique-of-pure-reason",
151
- "title": "Critique of Pure Reason",
152
- "summary": ("Kant seeks to determine the limits and scope of metaphysics"),
153
- "usermetadata": {
154
- "relations": [
155
- {
156
- "relation": "ENTITY",
157
- "to": {
158
- "type": "entity",
159
- "value": "Immanuel Kant",
160
- "group": "PERSON",
161
- },
162
- }
163
- ]
164
- },
165
- },
166
- {
167
- "slug": "the-human-condition",
168
- "title": "The Human Condition",
169
- "summary": (
170
- "Arendt differentiates political and social concepts, labor and work, and various "
171
- "forms of actions; she then explores the implications of those distinctions"
172
- ),
173
- "usermetadata": {
174
- "relations": [
175
- {
176
- "relation": "ENTITY",
177
- "to": {
178
- "type": "entity",
179
- "value": "Hannah Arendt",
180
- "group": "PERSON",
181
- },
182
- }
183
- ]
184
- },
185
- },
186
- ]
187
-
188
- resp = await nucliadb_manager.post("/kbs", json={"slug": "philosophy-books"})
189
- assert resp.status_code == 201
190
- kbid = resp.json().get("uuid")
191
-
192
- for payload in payloads:
193
- resp = await nucliadb_writer.post(
194
- f"/kb/{kbid}/resources",
195
- headers={"X-Synchronous": "true"},
196
- json=payload,
197
- )
198
- assert resp.status_code == 201
199
-
200
- yield kbid
201
-
202
- resp = await nucliadb_manager.delete(f"/kb/{kbid}")
203
- assert resp.status_code == 200
@@ -1,109 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #
20
- import asyncio
21
-
22
- import pytest
23
- from httpx import AsyncClient
24
-
25
-
26
- @pytest.fixture(scope="function")
27
- async def ten_dummy_resources_kb(
28
- nucliadb_manager: AsyncClient,
29
- nucliadb_reader: AsyncClient,
30
- nucliadb_writer: AsyncClient,
31
- ):
32
- N_RESOURCES = 10
33
-
34
- payloads = [
35
- {
36
- "slug": f"dummy-resource-{i}",
37
- "title": f"Dummy resource {i}",
38
- "summary": f"Dummy resource {i} summary",
39
- }
40
- for i in range(N_RESOURCES)
41
- ]
42
-
43
- resp = await nucliadb_manager.post("/kbs", json={"slug": "ten-dummy-resources"})
44
- assert resp.status_code == 201
45
- kbid = resp.json().get("uuid")
46
-
47
- for payload in payloads:
48
- resp = await nucliadb_writer.post(
49
- f"/kb/{kbid}/resources",
50
- headers={"X-Synchronous": "true"},
51
- json=payload,
52
- )
53
- assert resp.status_code == 201
54
-
55
- await asyncio.sleep(1)
56
-
57
- resp = await nucliadb_reader.get(
58
- f"/kb/{kbid}/resources",
59
- )
60
- assert resp.status_code == 200
61
- body = resp.json()
62
- assert len(body["resources"]) == N_RESOURCES
63
-
64
- yield kbid
65
-
66
- resp = await nucliadb_manager.delete(f"/kb/{kbid}")
67
- assert resp.status_code == 200
68
-
69
-
70
- @pytest.fixture(scope="function")
71
- async def ten_quick_dummy_resources_kb(
72
- nucliadb_manager: AsyncClient,
73
- nucliadb_reader: AsyncClient,
74
- nucliadb_writer: AsyncClient,
75
- ):
76
- N_RESOURCES = 10
77
-
78
- payloads = [
79
- {
80
- "slug": f"dummy-resource-{i}",
81
- "title": f"Dummy resource {i}",
82
- "summary": f"Dummy resource {i} summary",
83
- }
84
- for i in range(N_RESOURCES)
85
- ]
86
-
87
- resp = await nucliadb_manager.post("/kbs", json={"slug": "ten-dummy-resources"})
88
- assert resp.status_code == 201
89
- kbid = resp.json().get("uuid")
90
-
91
- for payload in payloads:
92
- resp = await nucliadb_writer.post(
93
- f"/kb/{kbid}/resources",
94
- headers={"X-Synchronous": "true"},
95
- json=payload,
96
- )
97
- assert resp.status_code == 201
98
-
99
- resp = await nucliadb_reader.get(
100
- f"/kb/{kbid}/resources",
101
- )
102
- assert resp.status_code == 200
103
- body = resp.json()
104
- assert len(body["resources"]) == N_RESOURCES
105
-
106
- yield kbid
107
-
108
- resp = await nucliadb_manager.delete(f"/kb/{kbid}")
109
- assert resp.status_code == 200
@@ -1,19 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #
@@ -1,80 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #
20
- from unittest.mock import Mock
21
-
22
- import pytest
23
-
24
- from nucliadb.common import datamanagers
25
- from nucliadb.common.maindb.driver import Driver
26
- from nucliadb.migrator.models import Migration
27
- from nucliadb.migrator.utils import get_migrations
28
- from nucliadb_protos import writer_pb2
29
-
30
- MIGRATION_UNDER_TEST = 17
31
- migration: Migration = get_migrations(
32
- from_version=MIGRATION_UNDER_TEST - 1, to_version=MIGRATION_UNDER_TEST
33
- )[0]
34
- assert migration.version == MIGRATION_UNDER_TEST
35
-
36
-
37
- @pytest.mark.asyncio
38
- async def test_migration_0017_kb(maindb_driver: Driver):
39
- execution_context = Mock()
40
- execution_context.kv_driver = maindb_driver
41
-
42
- # setup a KB with the old format
43
- kbid = "my-kbid"
44
- async with maindb_driver.transaction() as txn:
45
- shards = writer_pb2.Shards(
46
- kbid=kbid,
47
- shards=[
48
- writer_pb2.ShardObject(
49
- shard="shard-0",
50
- replicas=[
51
- writer_pb2.ShardReplica(),
52
- writer_pb2.ShardReplica(),
53
- ],
54
- ),
55
- writer_pb2.ShardObject(
56
- shard="shard-1",
57
- replicas=[
58
- writer_pb2.ShardReplica(),
59
- writer_pb2.ShardReplica(),
60
- ],
61
- ),
62
- ],
63
- # this field is an index to shards list indicating which is the
64
- # writable shard
65
- actual=1,
66
- )
67
- await datamanagers.cluster.update_kb_shards(txn, kbid=kbid, shards=shards)
68
- await txn.commit()
69
-
70
- await migration.module.migrate_kb(execution_context, kbid)
71
-
72
- async with maindb_driver.transaction(read_only=True) as txn:
73
- migrated = await datamanagers.cluster.get_kb_shards(txn, kbid=kbid)
74
- assert migrated is not None
75
-
76
- # actual is the same
77
- assert shards.actual == 1
78
-
79
- # Writable shard now is pointed by `ShardObject.read_only` field
80
- assert [True, False] == [shard.read_only for shard in migrated.shards]
nucliadb/tests/tikv.py DELETED
@@ -1,240 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #
20
- import os
21
- import platform
22
- import signal
23
- import subprocess
24
- import tarfile
25
- import tempfile
26
- import time
27
- from io import BytesIO
28
-
29
- import pytest
30
- import requests
31
- from tikv_client import TransactionClient # type: ignore
32
-
33
-
34
- class TiKVd(object):
35
- def __init__(
36
- self,
37
- port=20160,
38
- pd_port=2379,
39
- peer_port=2380,
40
- tikv_bin_name="tikv-server",
41
- pd_bin_name="pd-server",
42
- host="127.0.0.1",
43
- path="",
44
- debug=False,
45
- ):
46
- self.port = port
47
- self.pd_port = pd_port
48
- self.peer_port = peer_port
49
- self.tikv_bin_name = tikv_bin_name
50
- self.pd_bin_name = pd_bin_name
51
- self.path = path
52
- self.host = host
53
- self.tmpfolder = None
54
- self.debug = debug
55
- self.proc = None
56
- self.proc2 = None
57
-
58
- def start(self):
59
- self.tmpfolder = tempfile.TemporaryDirectory()
60
-
61
- cmd = [
62
- f"{self.path}/{self.tikv_bin_name}",
63
- f"--pd-endpoints={self.host}:{self.pd_port}",
64
- f"--addr={self.host}:{self.port}",
65
- f"--data-dir={self.tmpfolder.name}/tikv1",
66
- f"--log-file={self.tmpfolder.name}/tikv1.log",
67
- ]
68
-
69
- if self.debug:
70
- self.proc2 = subprocess.Popen(cmd)
71
- else:
72
- self.proc2 = subprocess.Popen(
73
- cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
74
- )
75
-
76
- if self.debug:
77
- if self.proc2 is None:
78
- print(
79
- "[\031[0;33mDEBUG\033[0;0m] Failed to start server listening on port %d started."
80
- % self.port
81
- )
82
- else:
83
- print(
84
- "[\033[0;33mDEBUG\033[0;0m] Server listening on port %d started."
85
- % self.port
86
- )
87
- cmd = [
88
- f"{self.path}/{self.pd_bin_name}",
89
- "--name=pd",
90
- f"--data-dir={self.tmpfolder.name}",
91
- f"--client-urls=http://{self.host}:{self.pd_port}",
92
- f"--peer-urls=http://{self.host}:{self.peer_port}",
93
- f"--initial-cluster=pd=http://{self.host}:{self.peer_port}",
94
- ]
95
-
96
- if self.debug:
97
- self.proc = subprocess.Popen(cmd)
98
- else:
99
- self.proc = subprocess.Popen(
100
- cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL
101
- )
102
-
103
- if self.debug:
104
- if self.proc is None:
105
- print(
106
- "[\031[0;33mDEBUG\033[0;0m] Failed to start server listening on port %d started."
107
- % self.pd_port
108
- )
109
- else:
110
- print(
111
- "[\033[0;33mDEBUG\033[0;0m] Server listening on port %d started."
112
- % self.pd_port
113
- )
114
- return self.proc
115
-
116
- def stop(self):
117
- if self.debug:
118
- print(
119
- "[\033[0;33mDEBUG\033[0;0m] Server listening on %d will stop."
120
- % self.port
121
- )
122
-
123
- if self.debug:
124
- if self.proc is None:
125
- print(
126
- "[\033[0;31mDEBUG\033[0;0m] Failed terminating server listening on port %d"
127
- % self.port
128
- )
129
- if self.proc2 is None:
130
- print(
131
- "[\033[0;31mDEBUG\033[0;0m] Failed terminating server listening on port %d"
132
- % self.port
133
- )
134
-
135
- if self.proc.returncode is not None:
136
- if self.debug:
137
- print(
138
- "[\033[0;31mDEBUG\033[0;0m] Server listening on port {port} finished running already with exit {ret}".format( # noqa
139
- port=self.pd_port, ret=self.proc.returncode
140
- )
141
- )
142
- elif self.proc2.returncode is not None:
143
- if self.debug:
144
- print(
145
- "[\033[0;31mDEBUG\033[0;0m] Server listening on port {port} finished running already with exit {ret}".format( # noqa
146
- port=self.port, ret=self.proc2.returncode
147
- )
148
- )
149
- else:
150
- os.kill(self.proc.pid, signal.SIGKILL)
151
- self.proc.wait()
152
- os.kill(self.proc2.pid, signal.SIGKILL)
153
- self.proc2.wait()
154
- if self.debug:
155
- print(
156
- "[\033[0;33mDEBUG\033[0;0m] Server listening on %d was stopped."
157
- % self.port
158
- )
159
- if self.tmpfolder is not None:
160
- self.tmpfolder.cleanup()
161
- self.tmpfolder = None
162
-
163
-
164
- def start_tikvd(tikvd: TiKVd):
165
- tikvd.start()
166
-
167
- endpoint = "127.0.0.1:{port}".format(port=tikvd.port)
168
- retries = 0
169
- while True:
170
- if retries > 100:
171
- break
172
-
173
- try:
174
- connection = TransactionClient.connect(endpoint)
175
- txn = connection.begin(pessimistic=True)
176
- txn.rollback()
177
- except: # noqa
178
- retries += 1
179
- time.sleep(0.1)
180
-
181
-
182
- @pytest.fixture(scope="session")
183
- def tikvd():
184
- if os.environ.get("TESTING_TIKV_LOCAL", None):
185
- yield "localhost", "XX", "2379"
186
- return
187
-
188
- if not os.path.isfile("tikv-server"):
189
- version = "v5.3.1"
190
- arch = platform.machine()
191
- if arch == "x86_64":
192
- arch = "amd64"
193
- system = platform.system().lower()
194
-
195
- resp = requests.get(
196
- f"https://tiup-mirrors.pingcap.com/tikv-{version}-{system}-{arch}.tar.gz"
197
- )
198
-
199
- zipfile = tarfile.open(fileobj=BytesIO(resp.content), mode="r:gz")
200
-
201
- zipfile.extract(f"tikv-server")
202
- os.chmod("tikv-server", 755)
203
-
204
- if not os.path.isfile("pd-server"):
205
- version = "v5.3.1"
206
- arch = platform.machine()
207
- if arch == "x86_64":
208
- arch = "amd64"
209
- system = platform.system().lower()
210
-
211
- resp = requests.get(
212
- f"https://tiup-mirrors.pingcap.com/pd-{version}-{system}-{arch}.tar.gz"
213
- )
214
-
215
- zipfile = tarfile.open(fileobj=BytesIO(resp.content), mode="r:gz")
216
-
217
- zipfile.extract(f"pd-server")
218
- os.chmod("pd-server", 755)
219
-
220
- server = TiKVd(debug=True)
221
- server.tikv_bin_name = "tikv-server"
222
- server.pd_bin_name = "pd-server"
223
- server.path = os.getcwd()
224
-
225
- start_tikvd(server)
226
- print("Started TiKVd")
227
-
228
- for i in range(100):
229
- resp = requests.get(f"http://{server.host}:{server.pd_port}/pd/api/v1/stores")
230
- if (
231
- resp.status_code == 200
232
- and resp.json()["stores"][0]["store"]["state_name"] == "Up"
233
- ):
234
- break
235
- print(resp.status_code)
236
- print(resp.json())
237
- time.sleep(1)
238
-
239
- yield server.host, server.port, server.pd_port
240
- server.stop()
@@ -1,19 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #
@@ -1,19 +0,0 @@
1
- # Copyright (C) 2021 Bosutech XXI S.L.
2
- #
3
- # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
- # For commercial licensing, contact us at info@nuclia.com.
5
- #
6
- # AGPL:
7
- # This program is free software: you can redistribute it and/or modify
8
- # it under the terms of the GNU Affero General Public License as
9
- # published by the Free Software Foundation, either version 3 of the
10
- # License, or (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU Affero General Public License
18
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
- #