nucliadb 4.0.0.post542__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.
- migrations/0003_allfields_key.py +1 -35
- migrations/0009_upgrade_relations_and_texts_to_v2.py +4 -2
- migrations/0010_fix_corrupt_indexes.py +10 -10
- migrations/0011_materialize_labelset_ids.py +1 -16
- migrations/0012_rollover_shards.py +5 -10
- migrations/0014_rollover_shards.py +4 -5
- migrations/0015_targeted_rollover.py +5 -10
- migrations/0016_upgrade_to_paragraphs_v2.py +25 -28
- migrations/0017_multiple_writable_shards.py +2 -4
- migrations/0018_purge_orphan_kbslugs.py +5 -7
- migrations/0019_upgrade_to_paragraphs_v3.py +25 -28
- migrations/0020_drain_nodes_from_cluster.py +3 -3
- nucliadb/standalone/tests/unit/test_run.py → migrations/0021_overwrite_vectorsets_key.py +16 -19
- nucliadb/tests/unit/test_openapi.py → migrations/0022_fix_paragraph_deletion_bug.py +16 -11
- migrations/0023_backfill_pg_catalog.py +80 -0
- migrations/0025_assign_models_to_kbs_v2.py +113 -0
- migrations/0026_fix_high_cardinality_content_types.py +61 -0
- migrations/0027_rollover_texts3.py +73 -0
- nucliadb/ingest/fields/date.py → migrations/pg/0001_bootstrap.py +10 -12
- migrations/pg/0002_catalog.py +42 -0
- nucliadb/ingest/tests/unit/test_settings.py → migrations/pg/0003_catalog_kbid_index.py +5 -3
- nucliadb/common/cluster/base.py +30 -16
- nucliadb/common/cluster/discovery/base.py +6 -14
- nucliadb/common/cluster/discovery/k8s.py +9 -19
- nucliadb/common/cluster/discovery/manual.py +1 -3
- nucliadb/common/cluster/discovery/utils.py +1 -3
- nucliadb/common/cluster/grpc_node_dummy.py +3 -11
- nucliadb/common/cluster/index_node.py +10 -19
- nucliadb/common/cluster/manager.py +174 -59
- nucliadb/common/cluster/rebalance.py +27 -29
- nucliadb/common/cluster/rollover.py +353 -194
- nucliadb/common/cluster/settings.py +6 -0
- nucliadb/common/cluster/standalone/grpc_node_binding.py +13 -64
- nucliadb/common/cluster/standalone/index_node.py +4 -11
- nucliadb/common/cluster/standalone/service.py +2 -6
- nucliadb/common/cluster/standalone/utils.py +2 -6
- nucliadb/common/cluster/utils.py +29 -22
- nucliadb/common/constants.py +20 -0
- nucliadb/common/context/__init__.py +3 -0
- nucliadb/common/context/fastapi.py +8 -5
- nucliadb/{tests/knowledgeboxes/__init__.py → common/counters.py} +8 -2
- nucliadb/common/datamanagers/__init__.py +7 -1
- nucliadb/common/datamanagers/atomic.py +22 -4
- nucliadb/common/datamanagers/cluster.py +5 -5
- nucliadb/common/datamanagers/entities.py +6 -16
- nucliadb/common/datamanagers/fields.py +84 -0
- nucliadb/common/datamanagers/kb.py +83 -37
- nucliadb/common/datamanagers/labels.py +26 -56
- nucliadb/common/datamanagers/processing.py +2 -6
- nucliadb/common/datamanagers/resources.py +41 -103
- nucliadb/common/datamanagers/rollover.py +76 -15
- nucliadb/common/datamanagers/synonyms.py +1 -1
- nucliadb/common/datamanagers/utils.py +15 -6
- nucliadb/common/datamanagers/vectorsets.py +110 -0
- nucliadb/common/external_index_providers/base.py +257 -0
- nucliadb/{ingest/tests/unit/orm/test_orm_utils.py → common/external_index_providers/exceptions.py} +9 -8
- nucliadb/common/external_index_providers/manager.py +101 -0
- nucliadb/common/external_index_providers/pinecone.py +933 -0
- nucliadb/common/external_index_providers/settings.py +52 -0
- nucliadb/common/http_clients/auth.py +3 -6
- nucliadb/common/http_clients/processing.py +6 -11
- nucliadb/common/http_clients/utils.py +1 -3
- nucliadb/common/ids.py +240 -0
- nucliadb/common/locking.py +29 -7
- nucliadb/common/maindb/driver.py +11 -35
- nucliadb/common/maindb/exceptions.py +3 -0
- nucliadb/common/maindb/local.py +22 -9
- nucliadb/common/maindb/pg.py +206 -111
- nucliadb/common/maindb/utils.py +11 -42
- nucliadb/common/models_utils/from_proto.py +479 -0
- nucliadb/common/models_utils/to_proto.py +60 -0
- nucliadb/common/nidx.py +260 -0
- nucliadb/export_import/datamanager.py +25 -19
- nucliadb/export_import/exporter.py +5 -11
- nucliadb/export_import/importer.py +5 -7
- nucliadb/export_import/models.py +3 -3
- nucliadb/export_import/tasks.py +4 -4
- nucliadb/export_import/utils.py +25 -37
- nucliadb/health.py +1 -3
- nucliadb/ingest/app.py +15 -11
- nucliadb/ingest/consumer/auditing.py +21 -19
- nucliadb/ingest/consumer/consumer.py +82 -47
- nucliadb/ingest/consumer/materializer.py +5 -12
- nucliadb/ingest/consumer/pull.py +12 -27
- nucliadb/ingest/consumer/service.py +19 -17
- nucliadb/ingest/consumer/shard_creator.py +2 -4
- nucliadb/ingest/consumer/utils.py +1 -3
- nucliadb/ingest/fields/base.py +137 -105
- nucliadb/ingest/fields/conversation.py +18 -5
- nucliadb/ingest/fields/exceptions.py +1 -4
- nucliadb/ingest/fields/file.py +7 -16
- nucliadb/ingest/fields/link.py +5 -10
- nucliadb/ingest/fields/text.py +9 -4
- nucliadb/ingest/orm/brain.py +200 -213
- nucliadb/ingest/orm/broker_message.py +181 -0
- nucliadb/ingest/orm/entities.py +36 -51
- nucliadb/ingest/orm/exceptions.py +12 -0
- nucliadb/ingest/orm/knowledgebox.py +322 -197
- nucliadb/ingest/orm/processor/__init__.py +2 -700
- nucliadb/ingest/orm/processor/auditing.py +4 -23
- nucliadb/ingest/orm/processor/data_augmentation.py +164 -0
- nucliadb/ingest/orm/processor/pgcatalog.py +84 -0
- nucliadb/ingest/orm/processor/processor.py +752 -0
- nucliadb/ingest/orm/processor/sequence_manager.py +1 -1
- nucliadb/ingest/orm/resource.py +249 -402
- nucliadb/ingest/orm/utils.py +4 -4
- nucliadb/ingest/partitions.py +3 -9
- nucliadb/ingest/processing.py +64 -73
- nucliadb/ingest/py.typed +0 -0
- nucliadb/ingest/serialize.py +37 -167
- nucliadb/ingest/service/__init__.py +1 -3
- nucliadb/ingest/service/writer.py +185 -412
- nucliadb/ingest/settings.py +10 -20
- nucliadb/ingest/utils.py +3 -6
- nucliadb/learning_proxy.py +242 -55
- nucliadb/metrics_exporter.py +30 -19
- nucliadb/middleware/__init__.py +1 -3
- nucliadb/migrator/command.py +1 -3
- nucliadb/migrator/datamanager.py +13 -13
- nucliadb/migrator/migrator.py +47 -30
- nucliadb/migrator/utils.py +18 -10
- nucliadb/purge/__init__.py +139 -33
- nucliadb/purge/orphan_shards.py +7 -13
- nucliadb/reader/__init__.py +1 -3
- nucliadb/reader/api/models.py +1 -12
- nucliadb/reader/api/v1/__init__.py +0 -1
- nucliadb/reader/api/v1/download.py +21 -88
- nucliadb/reader/api/v1/export_import.py +1 -1
- nucliadb/reader/api/v1/knowledgebox.py +10 -10
- nucliadb/reader/api/v1/learning_config.py +2 -6
- nucliadb/reader/api/v1/resource.py +62 -88
- nucliadb/reader/api/v1/services.py +64 -83
- nucliadb/reader/app.py +12 -29
- nucliadb/reader/lifecycle.py +18 -4
- nucliadb/reader/py.typed +0 -0
- nucliadb/reader/reader/notifications.py +10 -28
- nucliadb/search/__init__.py +1 -3
- nucliadb/search/api/v1/__init__.py +1 -2
- nucliadb/search/api/v1/ask.py +17 -10
- nucliadb/search/api/v1/catalog.py +184 -0
- nucliadb/search/api/v1/feedback.py +16 -24
- nucliadb/search/api/v1/find.py +36 -36
- nucliadb/search/api/v1/knowledgebox.py +89 -60
- nucliadb/search/api/v1/resource/ask.py +2 -8
- nucliadb/search/api/v1/resource/search.py +49 -70
- nucliadb/search/api/v1/search.py +44 -210
- nucliadb/search/api/v1/suggest.py +39 -54
- nucliadb/search/app.py +12 -32
- nucliadb/search/lifecycle.py +10 -3
- nucliadb/search/predict.py +136 -187
- nucliadb/search/py.typed +0 -0
- nucliadb/search/requesters/utils.py +25 -58
- nucliadb/search/search/cache.py +149 -20
- nucliadb/search/search/chat/ask.py +571 -123
- nucliadb/search/{tests/unit/test_run.py → search/chat/exceptions.py} +14 -14
- nucliadb/search/search/chat/images.py +41 -17
- nucliadb/search/search/chat/prompt.py +817 -266
- nucliadb/search/search/chat/query.py +213 -309
- nucliadb/{tests/migrations/__init__.py → search/search/cut.py} +8 -8
- nucliadb/search/search/fetch.py +43 -36
- nucliadb/search/search/filters.py +9 -15
- nucliadb/search/search/find.py +214 -53
- nucliadb/search/search/find_merge.py +408 -391
- nucliadb/search/search/hydrator.py +191 -0
- nucliadb/search/search/merge.py +187 -223
- nucliadb/search/search/metrics.py +73 -2
- nucliadb/search/search/paragraphs.py +64 -106
- nucliadb/search/search/pgcatalog.py +233 -0
- nucliadb/search/search/predict_proxy.py +1 -1
- nucliadb/search/search/query.py +305 -150
- nucliadb/search/search/query_parser/exceptions.py +22 -0
- nucliadb/search/search/query_parser/models.py +101 -0
- nucliadb/search/search/query_parser/parser.py +183 -0
- nucliadb/search/search/rank_fusion.py +204 -0
- nucliadb/search/search/rerankers.py +270 -0
- nucliadb/search/search/shards.py +3 -32
- nucliadb/search/search/summarize.py +7 -18
- nucliadb/search/search/utils.py +27 -4
- nucliadb/search/settings.py +15 -1
- nucliadb/standalone/api_router.py +4 -10
- nucliadb/standalone/app.py +8 -14
- nucliadb/standalone/auth.py +7 -21
- nucliadb/standalone/config.py +7 -10
- nucliadb/standalone/lifecycle.py +26 -25
- nucliadb/standalone/migrations.py +1 -3
- nucliadb/standalone/purge.py +1 -1
- nucliadb/standalone/py.typed +0 -0
- nucliadb/standalone/run.py +3 -6
- nucliadb/standalone/settings.py +9 -16
- nucliadb/standalone/versions.py +15 -5
- nucliadb/tasks/consumer.py +8 -12
- nucliadb/tasks/producer.py +7 -6
- nucliadb/tests/config.py +53 -0
- nucliadb/train/__init__.py +1 -3
- nucliadb/train/api/utils.py +1 -2
- nucliadb/train/api/v1/shards.py +1 -1
- nucliadb/train/api/v1/trainset.py +2 -4
- nucliadb/train/app.py +10 -31
- nucliadb/train/generator.py +10 -19
- nucliadb/train/generators/field_classifier.py +7 -19
- nucliadb/train/generators/field_streaming.py +156 -0
- nucliadb/train/generators/image_classifier.py +12 -18
- nucliadb/train/generators/paragraph_classifier.py +5 -9
- nucliadb/train/generators/paragraph_streaming.py +6 -9
- nucliadb/train/generators/question_answer_streaming.py +19 -20
- nucliadb/train/generators/sentence_classifier.py +9 -15
- nucliadb/train/generators/token_classifier.py +48 -39
- nucliadb/train/generators/utils.py +14 -18
- nucliadb/train/lifecycle.py +7 -3
- nucliadb/train/nodes.py +23 -32
- nucliadb/train/py.typed +0 -0
- nucliadb/train/servicer.py +13 -21
- nucliadb/train/settings.py +2 -6
- nucliadb/train/types.py +13 -10
- nucliadb/train/upload.py +3 -6
- nucliadb/train/uploader.py +19 -23
- nucliadb/train/utils.py +1 -1
- nucliadb/writer/__init__.py +1 -3
- nucliadb/{ingest/fields/keywordset.py → writer/api/utils.py} +13 -10
- nucliadb/writer/api/v1/export_import.py +67 -14
- nucliadb/writer/api/v1/field.py +16 -269
- nucliadb/writer/api/v1/knowledgebox.py +218 -68
- nucliadb/writer/api/v1/resource.py +68 -88
- nucliadb/writer/api/v1/services.py +51 -70
- nucliadb/writer/api/v1/slug.py +61 -0
- nucliadb/writer/api/v1/transaction.py +67 -0
- nucliadb/writer/api/v1/upload.py +114 -113
- nucliadb/writer/app.py +6 -43
- nucliadb/writer/back_pressure.py +16 -38
- nucliadb/writer/exceptions.py +0 -4
- nucliadb/writer/lifecycle.py +21 -15
- nucliadb/writer/py.typed +0 -0
- nucliadb/writer/resource/audit.py +2 -1
- nucliadb/writer/resource/basic.py +48 -46
- nucliadb/writer/resource/field.py +25 -127
- nucliadb/writer/resource/origin.py +1 -2
- nucliadb/writer/settings.py +6 -2
- nucliadb/writer/tus/__init__.py +17 -15
- nucliadb/writer/tus/azure.py +111 -0
- nucliadb/writer/tus/dm.py +17 -5
- nucliadb/writer/tus/exceptions.py +1 -3
- nucliadb/writer/tus/gcs.py +49 -84
- nucliadb/writer/tus/local.py +21 -37
- nucliadb/writer/tus/s3.py +28 -68
- nucliadb/writer/tus/storage.py +5 -56
- nucliadb/writer/vectorsets.py +125 -0
- nucliadb-6.2.1.post2777.dist-info/METADATA +148 -0
- nucliadb-6.2.1.post2777.dist-info/RECORD +343 -0
- {nucliadb-4.0.0.post542.dist-info → nucliadb-6.2.1.post2777.dist-info}/WHEEL +1 -1
- nucliadb/common/maindb/redis.py +0 -194
- nucliadb/common/maindb/tikv.py +0 -433
- nucliadb/ingest/fields/layout.py +0 -58
- nucliadb/ingest/tests/conftest.py +0 -30
- nucliadb/ingest/tests/fixtures.py +0 -764
- nucliadb/ingest/tests/integration/consumer/__init__.py +0 -18
- nucliadb/ingest/tests/integration/consumer/test_auditing.py +0 -78
- nucliadb/ingest/tests/integration/consumer/test_materializer.py +0 -126
- nucliadb/ingest/tests/integration/consumer/test_pull.py +0 -144
- nucliadb/ingest/tests/integration/consumer/test_service.py +0 -81
- nucliadb/ingest/tests/integration/consumer/test_shard_creator.py +0 -68
- nucliadb/ingest/tests/integration/ingest/test_ingest.py +0 -684
- nucliadb/ingest/tests/integration/ingest/test_processing_engine.py +0 -95
- nucliadb/ingest/tests/integration/ingest/test_relations.py +0 -272
- nucliadb/ingest/tests/unit/consumer/__init__.py +0 -18
- nucliadb/ingest/tests/unit/consumer/test_auditing.py +0 -139
- nucliadb/ingest/tests/unit/consumer/test_consumer.py +0 -69
- nucliadb/ingest/tests/unit/consumer/test_pull.py +0 -60
- nucliadb/ingest/tests/unit/consumer/test_shard_creator.py +0 -140
- nucliadb/ingest/tests/unit/consumer/test_utils.py +0 -67
- nucliadb/ingest/tests/unit/orm/__init__.py +0 -19
- nucliadb/ingest/tests/unit/orm/test_brain.py +0 -247
- nucliadb/ingest/tests/unit/orm/test_brain_vectors.py +0 -74
- nucliadb/ingest/tests/unit/orm/test_processor.py +0 -131
- nucliadb/ingest/tests/unit/orm/test_resource.py +0 -331
- nucliadb/ingest/tests/unit/test_cache.py +0 -31
- nucliadb/ingest/tests/unit/test_partitions.py +0 -40
- nucliadb/ingest/tests/unit/test_processing.py +0 -171
- nucliadb/middleware/transaction.py +0 -117
- nucliadb/reader/api/v1/learning_collector.py +0 -63
- nucliadb/reader/tests/__init__.py +0 -19
- nucliadb/reader/tests/conftest.py +0 -31
- nucliadb/reader/tests/fixtures.py +0 -136
- nucliadb/reader/tests/test_list_resources.py +0 -75
- nucliadb/reader/tests/test_reader_file_download.py +0 -273
- nucliadb/reader/tests/test_reader_resource.py +0 -353
- nucliadb/reader/tests/test_reader_resource_field.py +0 -219
- nucliadb/search/api/v1/chat.py +0 -263
- nucliadb/search/api/v1/resource/chat.py +0 -174
- nucliadb/search/tests/__init__.py +0 -19
- nucliadb/search/tests/conftest.py +0 -33
- nucliadb/search/tests/fixtures.py +0 -199
- nucliadb/search/tests/node.py +0 -466
- nucliadb/search/tests/unit/__init__.py +0 -18
- nucliadb/search/tests/unit/api/__init__.py +0 -19
- nucliadb/search/tests/unit/api/v1/__init__.py +0 -19
- nucliadb/search/tests/unit/api/v1/resource/__init__.py +0 -19
- nucliadb/search/tests/unit/api/v1/resource/test_chat.py +0 -98
- nucliadb/search/tests/unit/api/v1/test_ask.py +0 -120
- nucliadb/search/tests/unit/api/v1/test_chat.py +0 -96
- nucliadb/search/tests/unit/api/v1/test_predict_proxy.py +0 -98
- nucliadb/search/tests/unit/api/v1/test_summarize.py +0 -99
- nucliadb/search/tests/unit/search/__init__.py +0 -18
- nucliadb/search/tests/unit/search/requesters/__init__.py +0 -18
- nucliadb/search/tests/unit/search/requesters/test_utils.py +0 -211
- nucliadb/search/tests/unit/search/search/__init__.py +0 -19
- nucliadb/search/tests/unit/search/search/test_shards.py +0 -45
- nucliadb/search/tests/unit/search/search/test_utils.py +0 -82
- nucliadb/search/tests/unit/search/test_chat_prompt.py +0 -270
- nucliadb/search/tests/unit/search/test_fetch.py +0 -108
- nucliadb/search/tests/unit/search/test_filters.py +0 -125
- nucliadb/search/tests/unit/search/test_paragraphs.py +0 -157
- nucliadb/search/tests/unit/search/test_predict_proxy.py +0 -106
- nucliadb/search/tests/unit/search/test_query.py +0 -153
- nucliadb/search/tests/unit/test_app.py +0 -79
- nucliadb/search/tests/unit/test_find_merge.py +0 -112
- nucliadb/search/tests/unit/test_merge.py +0 -34
- nucliadb/search/tests/unit/test_predict.py +0 -525
- nucliadb/standalone/tests/__init__.py +0 -19
- nucliadb/standalone/tests/conftest.py +0 -33
- nucliadb/standalone/tests/fixtures.py +0 -38
- nucliadb/standalone/tests/unit/__init__.py +0 -18
- nucliadb/standalone/tests/unit/test_api_router.py +0 -61
- nucliadb/standalone/tests/unit/test_auth.py +0 -169
- nucliadb/standalone/tests/unit/test_introspect.py +0 -35
- nucliadb/standalone/tests/unit/test_migrations.py +0 -63
- nucliadb/standalone/tests/unit/test_versions.py +0 -68
- nucliadb/tests/benchmarks/__init__.py +0 -19
- nucliadb/tests/benchmarks/test_search.py +0 -99
- nucliadb/tests/conftest.py +0 -32
- nucliadb/tests/fixtures.py +0 -735
- nucliadb/tests/knowledgeboxes/philosophy_books.py +0 -202
- nucliadb/tests/knowledgeboxes/ten_dummy_resources.py +0 -107
- nucliadb/tests/migrations/test_migration_0017.py +0 -76
- nucliadb/tests/migrations/test_migration_0018.py +0 -95
- nucliadb/tests/tikv.py +0 -240
- nucliadb/tests/unit/__init__.py +0 -19
- nucliadb/tests/unit/common/__init__.py +0 -19
- nucliadb/tests/unit/common/cluster/__init__.py +0 -19
- nucliadb/tests/unit/common/cluster/discovery/__init__.py +0 -19
- nucliadb/tests/unit/common/cluster/discovery/test_k8s.py +0 -172
- nucliadb/tests/unit/common/cluster/standalone/__init__.py +0 -18
- nucliadb/tests/unit/common/cluster/standalone/test_service.py +0 -114
- nucliadb/tests/unit/common/cluster/standalone/test_utils.py +0 -61
- nucliadb/tests/unit/common/cluster/test_cluster.py +0 -408
- nucliadb/tests/unit/common/cluster/test_kb_shard_manager.py +0 -173
- nucliadb/tests/unit/common/cluster/test_rebalance.py +0 -38
- nucliadb/tests/unit/common/cluster/test_rollover.py +0 -282
- nucliadb/tests/unit/common/maindb/__init__.py +0 -18
- nucliadb/tests/unit/common/maindb/test_driver.py +0 -127
- nucliadb/tests/unit/common/maindb/test_tikv.py +0 -53
- nucliadb/tests/unit/common/maindb/test_utils.py +0 -92
- nucliadb/tests/unit/common/test_context.py +0 -36
- nucliadb/tests/unit/export_import/__init__.py +0 -19
- nucliadb/tests/unit/export_import/test_datamanager.py +0 -37
- nucliadb/tests/unit/export_import/test_utils.py +0 -301
- nucliadb/tests/unit/migrator/__init__.py +0 -19
- nucliadb/tests/unit/migrator/test_migrator.py +0 -87
- nucliadb/tests/unit/tasks/__init__.py +0 -19
- nucliadb/tests/unit/tasks/conftest.py +0 -42
- nucliadb/tests/unit/tasks/test_consumer.py +0 -92
- nucliadb/tests/unit/tasks/test_producer.py +0 -95
- nucliadb/tests/unit/tasks/test_tasks.py +0 -58
- nucliadb/tests/unit/test_field_ids.py +0 -49
- nucliadb/tests/unit/test_health.py +0 -86
- nucliadb/tests/unit/test_kb_slugs.py +0 -54
- nucliadb/tests/unit/test_learning_proxy.py +0 -252
- nucliadb/tests/unit/test_metrics_exporter.py +0 -77
- nucliadb/tests/unit/test_purge.py +0 -136
- nucliadb/tests/utils/__init__.py +0 -74
- nucliadb/tests/utils/aiohttp_session.py +0 -44
- nucliadb/tests/utils/broker_messages/__init__.py +0 -171
- nucliadb/tests/utils/broker_messages/fields.py +0 -197
- nucliadb/tests/utils/broker_messages/helpers.py +0 -33
- nucliadb/tests/utils/entities.py +0 -78
- nucliadb/train/api/v1/check.py +0 -60
- nucliadb/train/tests/__init__.py +0 -19
- nucliadb/train/tests/conftest.py +0 -29
- nucliadb/train/tests/fixtures.py +0 -342
- nucliadb/train/tests/test_field_classification.py +0 -122
- nucliadb/train/tests/test_get_entities.py +0 -80
- nucliadb/train/tests/test_get_info.py +0 -51
- nucliadb/train/tests/test_get_ontology.py +0 -34
- nucliadb/train/tests/test_get_ontology_count.py +0 -63
- nucliadb/train/tests/test_image_classification.py +0 -221
- nucliadb/train/tests/test_list_fields.py +0 -39
- nucliadb/train/tests/test_list_paragraphs.py +0 -73
- nucliadb/train/tests/test_list_resources.py +0 -39
- nucliadb/train/tests/test_list_sentences.py +0 -71
- nucliadb/train/tests/test_paragraph_classification.py +0 -123
- nucliadb/train/tests/test_paragraph_streaming.py +0 -118
- nucliadb/train/tests/test_question_answer_streaming.py +0 -239
- nucliadb/train/tests/test_sentence_classification.py +0 -143
- nucliadb/train/tests/test_token_classification.py +0 -136
- nucliadb/train/tests/utils.py +0 -101
- nucliadb/writer/layouts/__init__.py +0 -51
- nucliadb/writer/layouts/v1.py +0 -59
- nucliadb/writer/tests/__init__.py +0 -19
- nucliadb/writer/tests/conftest.py +0 -31
- nucliadb/writer/tests/fixtures.py +0 -191
- nucliadb/writer/tests/test_fields.py +0 -475
- nucliadb/writer/tests/test_files.py +0 -740
- nucliadb/writer/tests/test_knowledgebox.py +0 -49
- nucliadb/writer/tests/test_reprocess_file_field.py +0 -133
- nucliadb/writer/tests/test_resources.py +0 -476
- nucliadb/writer/tests/test_service.py +0 -137
- nucliadb/writer/tests/test_tus.py +0 -203
- nucliadb/writer/tests/utils.py +0 -35
- nucliadb/writer/tus/pg.py +0 -125
- nucliadb-4.0.0.post542.dist-info/METADATA +0 -135
- nucliadb-4.0.0.post542.dist-info/RECORD +0 -462
- {nucliadb/ingest/tests → migrations/pg}/__init__.py +0 -0
- /nucliadb/{ingest/tests/integration → common/external_index_providers}/__init__.py +0 -0
- /nucliadb/{ingest/tests/integration/ingest → common/models_utils}/__init__.py +0 -0
- /nucliadb/{ingest/tests/unit → search/search/query_parser}/__init__.py +0 -0
- /nucliadb/{ingest/tests → tests}/vectors.py +0 -0
- {nucliadb-4.0.0.post542.dist-info → nucliadb-6.2.1.post2777.dist-info}/entry_points.txt +0 -0
- {nucliadb-4.0.0.post542.dist-info → nucliadb-6.2.1.post2777.dist-info}/top_level.txt +0 -0
- {nucliadb-4.0.0.post542.dist-info → nucliadb-6.2.1.post2777.dist-info}/zip-safe +0 -0
@@ -1,169 +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 time
|
21
|
-
from unittest.mock import Mock
|
22
|
-
|
23
|
-
import orjson
|
24
|
-
import pytest
|
25
|
-
from jwcrypto import jwe, jwk # type: ignore
|
26
|
-
|
27
|
-
from nucliadb.standalone import auth
|
28
|
-
from nucliadb.standalone.settings import AuthPolicy, NucliaDBRoles, Settings
|
29
|
-
|
30
|
-
|
31
|
-
@pytest.fixture()
|
32
|
-
def http_request():
|
33
|
-
yield Mock(headers={}, query_params={})
|
34
|
-
|
35
|
-
|
36
|
-
def test_get_mapped_roles():
|
37
|
-
settings = Settings(
|
38
|
-
auth_policy_user_default_roles=[NucliaDBRoles.READER],
|
39
|
-
auth_policy_role_mapping={
|
40
|
-
"group": {"managers": [NucliaDBRoles.MANAGER]},
|
41
|
-
"other": {"other": [NucliaDBRoles.READER]},
|
42
|
-
},
|
43
|
-
)
|
44
|
-
|
45
|
-
assert set(
|
46
|
-
auth.get_mapped_roles(settings=settings, data={"group": "managers"})
|
47
|
-
) == set(
|
48
|
-
[
|
49
|
-
NucliaDBRoles.READER.value,
|
50
|
-
NucliaDBRoles.MANAGER.value,
|
51
|
-
]
|
52
|
-
)
|
53
|
-
|
54
|
-
# no values
|
55
|
-
assert (
|
56
|
-
auth.get_mapped_roles(
|
57
|
-
settings=Settings(auth_policy_user_default_roles=[]), data={}
|
58
|
-
)
|
59
|
-
== []
|
60
|
-
)
|
61
|
-
|
62
|
-
|
63
|
-
@pytest.mark.asyncio
|
64
|
-
async def test_auth_header_backend(http_request):
|
65
|
-
backend = auth.get_auth_backend(
|
66
|
-
Settings(
|
67
|
-
auth_policy=AuthPolicy.UPSTREAM_AUTH_HEADER,
|
68
|
-
auth_policy_user_header="X-User",
|
69
|
-
auth_policy_user_default_roles=[NucliaDBRoles.READER],
|
70
|
-
)
|
71
|
-
)
|
72
|
-
|
73
|
-
http_request.headers["X-User"] = "test"
|
74
|
-
auth_creds, nuclia_user = await backend.authenticate(http_request)
|
75
|
-
|
76
|
-
assert nuclia_user.display_name == "test"
|
77
|
-
assert auth_creds.scopes == [NucliaDBRoles.READER.value]
|
78
|
-
|
79
|
-
# no user header
|
80
|
-
http_request.headers = {}
|
81
|
-
assert await backend.authenticate(http_request) is None
|
82
|
-
|
83
|
-
|
84
|
-
@pytest.mark.asyncio
|
85
|
-
async def test_oauth2_backend(http_request):
|
86
|
-
backend = auth.get_auth_backend(
|
87
|
-
settings=Settings(
|
88
|
-
auth_policy=AuthPolicy.UPSTREAM_OAUTH2,
|
89
|
-
auth_policy_user_default_roles=[NucliaDBRoles.READER],
|
90
|
-
)
|
91
|
-
)
|
92
|
-
|
93
|
-
http_request.headers["Authorization"] = (
|
94
|
-
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" # noqa
|
95
|
-
)
|
96
|
-
auth_creds, nuclia_user = await backend.authenticate(http_request)
|
97
|
-
|
98
|
-
assert nuclia_user.display_name == "1234567890"
|
99
|
-
assert auth_creds.scopes == [NucliaDBRoles.READER.value]
|
100
|
-
|
101
|
-
# no auth header
|
102
|
-
http_request.headers = {}
|
103
|
-
assert await backend.authenticate(http_request) is None
|
104
|
-
|
105
|
-
# bad auth header
|
106
|
-
http_request.headers = {"Authorization": "lsdkf"}
|
107
|
-
assert await backend.authenticate(http_request) is None
|
108
|
-
|
109
|
-
# bad jwt header
|
110
|
-
http_request.headers = {"Authorization": "Bearer lsdkf"}
|
111
|
-
assert await backend.authenticate(http_request) is None
|
112
|
-
|
113
|
-
http_request.headers = {"Authorization": "Bearer bad.jwt.token"}
|
114
|
-
assert await backend.authenticate(http_request) is None
|
115
|
-
|
116
|
-
|
117
|
-
@pytest.mark.asyncio
|
118
|
-
async def test_basic_backend(http_request):
|
119
|
-
backend = auth.get_auth_backend(
|
120
|
-
settings=Settings(
|
121
|
-
auth_policy=AuthPolicy.UPSTREAM_BASICAUTH,
|
122
|
-
auth_policy_user_default_roles=[NucliaDBRoles.READER],
|
123
|
-
)
|
124
|
-
)
|
125
|
-
|
126
|
-
http_request.headers["Authorization"] = "Basic am9obkBkb2UuY29tOmxzZGZramxrc2RqZmw="
|
127
|
-
auth_creds, nuclia_user = await backend.authenticate(http_request)
|
128
|
-
|
129
|
-
assert nuclia_user.display_name == "john@doe.com"
|
130
|
-
assert auth_creds.scopes == [NucliaDBRoles.READER.value]
|
131
|
-
|
132
|
-
# no auth header
|
133
|
-
http_request.headers = {}
|
134
|
-
assert await backend.authenticate(http_request) is None
|
135
|
-
|
136
|
-
# bad auth header
|
137
|
-
http_request.headers = {"Authorization": "lsdkf"}
|
138
|
-
assert await backend.authenticate(http_request) is None
|
139
|
-
|
140
|
-
|
141
|
-
@pytest.mark.asyncio
|
142
|
-
async def test_auth_token_backend(http_request):
|
143
|
-
jwk_key = orjson.dumps(jwk.JWK.generate(kty="oct", size=256, kid="dyn")).decode(
|
144
|
-
"utf-8"
|
145
|
-
)
|
146
|
-
backend = auth.get_auth_backend(
|
147
|
-
settings=Settings(
|
148
|
-
auth_policy=AuthPolicy.UPSTREAM_BASICAUTH,
|
149
|
-
auth_policy_user_default_roles=[NucliaDBRoles.READER],
|
150
|
-
jwk_key=jwk_key,
|
151
|
-
)
|
152
|
-
)
|
153
|
-
|
154
|
-
claims = {
|
155
|
-
"iat": int(time.time()),
|
156
|
-
"exp": int(time.time() + 30),
|
157
|
-
"scopes": ["READER"],
|
158
|
-
"username": "display_name",
|
159
|
-
}
|
160
|
-
payload = orjson.dumps(claims)
|
161
|
-
jwetoken = jwe.JWE(payload, orjson.dumps({"alg": "A256KW", "enc": "A256CBC-HS512"}))
|
162
|
-
jwetoken.add_recipient(jwk.JWK(**orjson.loads(jwk_key)))
|
163
|
-
token = jwetoken.serialize(compact=True)
|
164
|
-
|
165
|
-
http_request.query_params["eph-token"] = token
|
166
|
-
auth_creds, nuclia_user = await backend.authenticate(http_request)
|
167
|
-
|
168
|
-
assert nuclia_user.display_name == "display_name"
|
169
|
-
assert auth_creds.scopes == [NucliaDBRoles.READER.value]
|
@@ -1,35 +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 nucliadb.standalone.introspect import remove_sensitive_settings
|
21
|
-
from nucliadb.standalone.settings import Settings
|
22
|
-
|
23
|
-
|
24
|
-
def test_remove_sensitive_settings():
|
25
|
-
sensitive = dict(
|
26
|
-
nua_api_key="secret",
|
27
|
-
jwk_key="secret",
|
28
|
-
gcs_base64_creds="secret",
|
29
|
-
s3_client_secret="secret",
|
30
|
-
driver_pg_url="secret",
|
31
|
-
)
|
32
|
-
settings = Settings(**sensitive)
|
33
|
-
remove_sensitive_settings(settings)
|
34
|
-
for key in sensitive:
|
35
|
-
assert getattr(settings, key) == "********"
|
@@ -1,63 +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 import mock
|
21
|
-
|
22
|
-
import pytest
|
23
|
-
|
24
|
-
from nucliadb.common import locking
|
25
|
-
from nucliadb.standalone.migrations import run_migrations
|
26
|
-
|
27
|
-
STANDALONE_MIGRATIONS = "nucliadb.standalone.migrations"
|
28
|
-
|
29
|
-
|
30
|
-
@pytest.fixture(scope="function")
|
31
|
-
def is_worker_node():
|
32
|
-
with mock.patch(
|
33
|
-
f"{STANDALONE_MIGRATIONS}.is_worker_node", return_value=True
|
34
|
-
) as mocked:
|
35
|
-
yield mocked
|
36
|
-
|
37
|
-
|
38
|
-
@pytest.fixture(scope="function")
|
39
|
-
def run_migrator():
|
40
|
-
with mock.patch(f"{STANDALONE_MIGRATIONS}.run_migrator") as mocked:
|
41
|
-
yield mocked
|
42
|
-
|
43
|
-
|
44
|
-
def test_run_migrations_runs_on_worker_nodes_only(is_worker_node, run_migrator):
|
45
|
-
is_worker_node.return_value = False
|
46
|
-
|
47
|
-
run_migrations()
|
48
|
-
|
49
|
-
run_migrator.assert_not_called()
|
50
|
-
|
51
|
-
is_worker_node.return_value = True
|
52
|
-
|
53
|
-
run_migrations()
|
54
|
-
|
55
|
-
run_migrator.assert_called_once()
|
56
|
-
|
57
|
-
|
58
|
-
def test_run_migrations_waits_for_lock(is_worker_node, run_migrator):
|
59
|
-
run_migrator.side_effect = [locking.ResourceLocked(key="migrations"), None]
|
60
|
-
|
61
|
-
run_migrations()
|
62
|
-
|
63
|
-
assert run_migrator.call_count == 2
|
@@ -1,68 +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 import mock
|
21
|
-
|
22
|
-
import pkg_resources
|
23
|
-
import pytest
|
24
|
-
|
25
|
-
from nucliadb.standalone.versions import (
|
26
|
-
get_latest_version,
|
27
|
-
installed_nucliadb,
|
28
|
-
is_newer_release,
|
29
|
-
latest_nucliadb,
|
30
|
-
)
|
31
|
-
|
32
|
-
|
33
|
-
@pytest.mark.parametrize(
|
34
|
-
"installed,latest,expected",
|
35
|
-
[
|
36
|
-
("1.1.1", "1.1.1.post1", False),
|
37
|
-
("1.1.1", "1.1.1", False),
|
38
|
-
("1.1.1", "1.1.0", False),
|
39
|
-
("1.1.1", "1.0.1", False),
|
40
|
-
("1.1.1", "0.1.1", False),
|
41
|
-
("1.1.1", "1.1.2", True),
|
42
|
-
("1.1.1", "1.2.1", True),
|
43
|
-
("1.1.1", "2.1.1", True),
|
44
|
-
],
|
45
|
-
)
|
46
|
-
def test_is_newer_release(installed, latest, expected):
|
47
|
-
assert is_newer_release(installed, latest) is expected
|
48
|
-
|
49
|
-
|
50
|
-
def test_installed_nucliadb():
|
51
|
-
pkg_resources.parse_version(installed_nucliadb())
|
52
|
-
|
53
|
-
|
54
|
-
@pytest.fixture()
|
55
|
-
def pypi_mock():
|
56
|
-
version = "1.0.0"
|
57
|
-
with mock.patch(
|
58
|
-
"nucliadb.standalone.versions._get_latest_version", return_value=version
|
59
|
-
):
|
60
|
-
yield
|
61
|
-
|
62
|
-
|
63
|
-
async def test_latest_nucliadb(pypi_mock):
|
64
|
-
assert await latest_nucliadb() == "1.0.0"
|
65
|
-
|
66
|
-
|
67
|
-
async def test_get_latest_version(pypi_mock):
|
68
|
-
assert await get_latest_version("foobar") == "1.0.0"
|
@@ -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,99 +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 time
|
21
|
-
from unittest.mock import AsyncMock, Mock
|
22
|
-
|
23
|
-
import pytest
|
24
|
-
from httpx import AsyncClient
|
25
|
-
from nucliadb_protos.writer_pb2_grpc import WriterStub
|
26
|
-
|
27
|
-
from nucliadb.tests.integration.search.test_search import (
|
28
|
-
broker_resource_with_classifications,
|
29
|
-
)
|
30
|
-
from nucliadb.tests.utils import inject_message
|
31
|
-
from nucliadb_utils.tests.asyncbenchmark import AsyncBenchmarkFixture
|
32
|
-
from nucliadb_utils.utilities import Utility, set_utility
|
33
|
-
|
34
|
-
|
35
|
-
@pytest.mark.benchmark(
|
36
|
-
group="search",
|
37
|
-
min_time=0.1,
|
38
|
-
max_time=0.5,
|
39
|
-
min_rounds=5,
|
40
|
-
timer=time.time,
|
41
|
-
disable_gc=True,
|
42
|
-
warmup=False,
|
43
|
-
)
|
44
|
-
@pytest.mark.asyncio
|
45
|
-
@pytest.mark.parametrize("knowledgebox", ["STABLE", "EXPERIMENTAL"], indirect=True)
|
46
|
-
async def test_search_returns_labels(
|
47
|
-
nucliadb_reader: AsyncClient,
|
48
|
-
nucliadb_writer: AsyncClient,
|
49
|
-
nucliadb_grpc: WriterStub,
|
50
|
-
knowledgebox,
|
51
|
-
asyncbenchmark: AsyncBenchmarkFixture,
|
52
|
-
):
|
53
|
-
bm = broker_resource_with_classifications(knowledgebox)
|
54
|
-
await inject_message(nucliadb_grpc, bm)
|
55
|
-
|
56
|
-
resp = await asyncbenchmark(
|
57
|
-
nucliadb_reader.get,
|
58
|
-
f"/kb/{knowledgebox}/search?query=Some&show=extracted&extracted=metadata",
|
59
|
-
)
|
60
|
-
assert resp.status_code == 200
|
61
|
-
|
62
|
-
|
63
|
-
@pytest.mark.benchmark(
|
64
|
-
group="search",
|
65
|
-
min_time=0.1,
|
66
|
-
max_time=0.5,
|
67
|
-
min_rounds=5,
|
68
|
-
timer=time.time,
|
69
|
-
disable_gc=True,
|
70
|
-
warmup=False,
|
71
|
-
)
|
72
|
-
@pytest.mark.asyncio
|
73
|
-
@pytest.mark.parametrize("knowledgebox", ["STABLE", "EXPERIMENTAL"], indirect=True)
|
74
|
-
async def test_search_relations(
|
75
|
-
nucliadb_reader: AsyncClient,
|
76
|
-
nucliadb_writer: AsyncClient,
|
77
|
-
nucliadb_grpc: WriterStub,
|
78
|
-
knowledgebox,
|
79
|
-
knowledge_graph,
|
80
|
-
asyncbenchmark: AsyncBenchmarkFixture,
|
81
|
-
):
|
82
|
-
relation_nodes, relation_edges = knowledge_graph
|
83
|
-
|
84
|
-
predict_mock = Mock()
|
85
|
-
set_utility(Utility.PREDICT, predict_mock)
|
86
|
-
|
87
|
-
predict_mock.detect_entities = AsyncMock(
|
88
|
-
return_value=[relation_nodes["Becquer"], relation_nodes["Newton"]]
|
89
|
-
)
|
90
|
-
|
91
|
-
resp = await asyncbenchmark(
|
92
|
-
nucliadb_reader.get,
|
93
|
-
f"/kb/{knowledgebox}/search",
|
94
|
-
params={
|
95
|
-
"features": "relations",
|
96
|
-
"query": "What relates Newton and Becquer?",
|
97
|
-
},
|
98
|
-
)
|
99
|
-
assert resp.status_code == 200
|
nucliadb/tests/conftest.py
DELETED
@@ -1,32 +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
|
-
pytest_plugins = [
|
21
|
-
"pytest_docker_fixtures",
|
22
|
-
"nucliadb.tests.fixtures",
|
23
|
-
"nucliadb.tests.knowledgeboxes",
|
24
|
-
"nucliadb_utils.tests.asyncbenchmark",
|
25
|
-
"nucliadb_utils.tests.nats",
|
26
|
-
"nucliadb.tests.fixtures",
|
27
|
-
"nucliadb.tests.tikv",
|
28
|
-
"nucliadb.search.tests.node",
|
29
|
-
"nucliadb.ingest.tests.fixtures",
|
30
|
-
"nucliadb_utils.tests.conftest",
|
31
|
-
"nucliadb_utils.tests.gcs",
|
32
|
-
]
|