Copy disabled (too large)
Download .txt
Showing preview only (54,568K chars total). Download the full file to get everything.
Repository: LexPredict/lexpredict-contraxsuite
Branch: master
Commit: 91ca428e3108
Files: 3978
Total size: 76.5 MB
Directory structure:
gitextract_me0jgsil/
├── .gitignore
├── LICENSE
├── README.md
├── contraxsuite_services/
│ ├── .flake8
│ ├── .pylintrc
│ ├── __init__.py
│ ├── apps/
│ │ ├── __init__.py
│ │ ├── analyze/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── app_vars.py
│ │ │ ├── forms.py
│ │ │ ├── management/
│ │ │ │ ├── __init__.py
│ │ │ │ └── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ └── clear_old_transformer_models.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_auto_20170731_0948.py
│ │ │ │ ├── 0003_auto_20170731_0948.py
│ │ │ │ ├── 0004_auto_20171011_1613.py
│ │ │ │ ├── 0005_documenttransformer_documentvector_textunittransformer_textunitvector.py
│ │ │ │ ├── 0006_auto_20191203_0833.py
│ │ │ │ ├── 0007_auto_20191204_1255.py
│ │ │ │ ├── 0008_documentclassification_documentclassifier_documentclassifierassessment_documentclassifiersuggestion_.py
│ │ │ │ ├── 0009_auto_20200127_1252.py
│ │ │ │ ├── 0010_transformer_unique_name.py
│ │ │ │ ├── 0011_denorm_textunit_similarity.py
│ │ │ │ ├── 0012_populate_textunit_similarity_fields.py
│ │ │ │ ├── 0013_vacuum_textunit_similarity.py
│ │ │ │ ├── 0014_textunit_similarity_restore_constraints.py
│ │ │ │ ├── 0015_auto_20201209_1541.py
│ │ │ │ ├── 0016_auto_20201224_0846.py
│ │ │ │ ├── 0017_auto_20201229_0950.py
│ │ │ │ ├── 0018_auto_20210104_1313.py
│ │ │ │ ├── 0019_auto_20210105_0836.py
│ │ │ │ ├── 0020_similarityrun_unit_id.py
│ │ │ │ ├── 0021_auto_20210106_1009.py
│ │ │ │ ├── 0022_load_document_transformer.py
│ │ │ │ ├── 0023_auto_20210323_0714.py
│ │ │ │ ├── 0024_add_mlmodel.py
│ │ │ │ ├── 0025_move_contracttype_classifier.py
│ │ │ │ ├── 0026_auto_20210324_1247.py
│ │ │ │ ├── 0027_create_transformer_db_records.py
│ │ │ │ ├── 0028_similarityrun_distance_type.py
│ │ │ │ ├── 0029_auto_20210416_1250.py
│ │ │ │ ├── 0030_auto_20210505_1344.py
│ │ │ │ ├── 0031_auto_20210514_0722.py
│ │ │ │ ├── 0032_is_contract_migration.py
│ │ │ │ ├── 0033_textunitvector_document.py
│ │ │ │ ├── 0034_textunitvector_unit_type.py
│ │ │ │ └── __init__.py
│ │ │ ├── ml/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── classifier_repository.py
│ │ │ │ ├── classify.py
│ │ │ │ ├── cluster.py
│ │ │ │ ├── contract_type_classifier.py
│ │ │ │ ├── features.py
│ │ │ │ ├── similarity.py
│ │ │ │ ├── sparse_matrix.py
│ │ │ │ ├── tests/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── base_transformer_test.py
│ │ │ │ │ ├── test_classify_doc2vec.py
│ │ │ │ │ ├── test_contract_type_classifier.py
│ │ │ │ │ ├── test_data/
│ │ │ │ │ │ └── models/
│ │ │ │ │ │ └── en/
│ │ │ │ │ │ ├── contract_type_classifier/
│ │ │ │ │ │ │ └── document/
│ │ │ │ │ │ │ └── pipeline_contract_type_classifier.cloudpickle
│ │ │ │ │ │ └── transformer/
│ │ │ │ │ │ └── document/
│ │ │ │ │ │ └── document_doc2vec_dm_1_vector_100_window_10/
│ │ │ │ │ │ └── model.pickle
│ │ │ │ │ ├── test_doc2vec_transformer.py
│ │ │ │ │ ├── test_sparse_matrix.py
│ │ │ │ │ ├── test_utils.py
│ │ │ │ │ └── texts_collection.py
│ │ │ │ ├── transform.py
│ │ │ │ └── utils.py
│ │ │ ├── models.py
│ │ │ ├── notifications.py
│ │ │ ├── similarity_textunit_migration_common.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ └── task_menu_item.html
│ │ │ ├── tests.py
│ │ │ ├── urls.py
│ │ │ └── views.py
│ │ ├── celery.py
│ │ ├── celery_worker_roles.py
│ │ ├── common/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── app_vars.py
│ │ │ ├── archive_file.py
│ │ │ ├── collection_utils.py
│ │ │ ├── context_managers.py
│ │ │ ├── context_processors.py
│ │ │ ├── contraxsuite_urls.py
│ │ │ ├── db_cache/
│ │ │ │ ├── __init__.py
│ │ │ │ └── db_cache.py
│ │ │ ├── debug_utils.py
│ │ │ ├── decorators.py
│ │ │ ├── error_explorer.py
│ │ │ ├── errors.py
│ │ │ ├── expressions.py
│ │ │ ├── fields.py
│ │ │ ├── file_storage/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── file_storage.py
│ │ │ │ ├── filebrowser_webdav_file_storage.py
│ │ │ │ ├── local_file_adapter.py
│ │ │ │ ├── local_file_storage.py
│ │ │ │ ├── tests/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── test_file_storage.py
│ │ │ │ │ ├── test_local_file_storage.py
│ │ │ │ │ ├── test_webdav_file_storage.py
│ │ │ │ │ └── webdav_propfind_response_example.xml
│ │ │ │ └── webdav_file_storage.py
│ │ │ ├── forms.py
│ │ │ ├── loaders.py
│ │ │ ├── log_utils.py
│ │ │ ├── logger.py
│ │ │ ├── management/
│ │ │ │ ├── __init__.py
│ │ │ │ └── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── create_superuser.py
│ │ │ │ ├── download_s3_models.py
│ │ │ │ ├── force_migrate.py
│ │ │ │ ├── force_refill_migrations.py
│ │ │ │ ├── force_reinitiate_migrations.py
│ │ │ │ ├── generate_graph_models.py
│ │ │ │ ├── get_openapi_schema.py
│ │ │ │ ├── init_app_vars.py
│ │ │ │ ├── init_cache.py
│ │ │ │ ├── load_review_status_groups.py
│ │ │ │ ├── load_review_statuses.py
│ │ │ │ ├── loadnewdata.py
│ │ │ │ ├── rp.py
│ │ │ │ ├── set_app_var.py
│ │ │ │ ├── set_site.py
│ │ │ │ ├── sp.py
│ │ │ │ └── unsafe_fix_catastrophic_backtracking.py
│ │ │ ├── managers.py
│ │ │ ├── middleware.py
│ │ │ ├── migration_manager.py
│ │ │ ├── migration_utils.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_reviewstatus.py
│ │ │ │ ├── 0003_reviewstatus_is_active.py
│ │ │ │ ├── 0004_auto_20180622_1138.py
│ │ │ │ ├── 0005_reviewstatusgroup.py
│ │ │ │ ├── 0006_create_review_status_groups_20180713_1341.py
│ │ │ │ ├── 0007_reviewstatus_group.py
│ │ │ │ ├── 0008_migrate_groups_20180713_1351.py
│ │ │ │ ├── 0009_objectstorage.py
│ │ │ │ ├── 0010_action.py
│ │ │ │ ├── 0011_auto_20180828_0418.py
│ │ │ │ ├── 0012_auto_20181012_0643.py
│ │ │ │ ├── 0013_customapirequestlog.py
│ │ │ │ ├── 0014_appvar_description.py
│ │ │ │ ├── 0015_methodstats.py
│ │ │ │ ├── 0016_auto_20190906_0727.py
│ │ │ │ ├── 0017_methodstatscollectorplugin.py
│ │ │ │ ├── 0018_auto_20190916_0730.py
│ │ │ │ ├── 0019_menugroup_menuitem.py
│ │ │ │ ├── 0020_auto_20191016_1549.py
│ │ │ │ ├── 0021_auto_20191017_1457.py
│ │ │ │ ├── 0022_threaddumprecord.py
│ │ │ │ ├── 0023_auto_20191101_1021.py
│ │ │ │ ├── 0024_auto_20191101_1028.py
│ │ │ │ ├── 0025_auto_20200110_1354.py
│ │ │ │ ├── 0026_set_appvar_categories.py
│ │ │ │ ├── 0027_historicalappvar.py
│ │ │ │ ├── 0028_exportfile.py
│ │ │ │ ├── 0029_exportfile_email_sent.py
│ │ │ │ ├── 0030_smtp_backend_appvar.py
│ │ │ │ ├── 0031_auto_20210108_1934.py
│ │ │ │ ├── 0031_smtp_backend_appvar_description.py
│ │ │ │ ├── 0032_move_strict_date_parse_appvar.py
│ │ │ │ ├── 0033_merge_20210127_0828.py
│ │ │ │ ├── 0034_auto_20210127_1536.py
│ │ │ │ ├── 0035_auto_20210128_0922.py
│ │ │ │ ├── 0036_auto_20210204_0833.py
│ │ │ │ ├── 0037_expire_appvars.py
│ │ │ │ ├── 0038_auto_20210309_1324.py
│ │ │ │ ├── 0039_auto_20210311_0543.py
│ │ │ │ ├── 0040_document_locale_appvar.py
│ │ │ │ ├── 0041_remove_appvar_duplicates.py
│ │ │ │ ├── 0042_fix_appvar_indexes.py
│ │ │ │ ├── 0043_update_appvar_helptext.py
│ │ │ │ ├── 0044_update_appvar_duplicate_docs.py
│ │ │ │ ├── 0045_change_email_backend.py
│ │ │ │ ├── 0046_update_old_project_actions.py
│ │ │ │ ├── 0047_create_appvar_detect_contract_type_settings.py
│ │ │ │ └── __init__.py
│ │ │ ├── mixins.py
│ │ │ ├── model_utils/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── hr_django_json_encoder.py
│ │ │ │ ├── improved_django_json_encoder.py
│ │ │ │ ├── model_bulk_delete.py
│ │ │ │ ├── model_class_dictionary.py
│ │ │ │ ├── model_stats_sets_manager.py
│ │ │ │ ├── safe_bulk_create.py
│ │ │ │ ├── table_deps.py
│ │ │ │ ├── table_deps_builder.py
│ │ │ │ └── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_bulk_delete.py
│ │ │ │ ├── test_hr_django_json_encoder.py
│ │ │ │ ├── test_improved_django_json_encoder.py
│ │ │ │ ├── test_model_class_dictionary.py
│ │ │ │ ├── test_safe_bulk_delete.py
│ │ │ │ └── test_singleton.py
│ │ │ ├── models.py
│ │ │ ├── pandas_excel_formatter.py
│ │ │ ├── permissions.py
│ │ │ ├── plugins.py
│ │ │ ├── processes.py
│ │ │ ├── querysets.py
│ │ │ ├── redis.py
│ │ │ ├── s3/
│ │ │ │ ├── __init__.py
│ │ │ │ └── s3_browser.py
│ │ │ ├── schemas.py
│ │ │ ├── script_utils.py
│ │ │ ├── serializers.py
│ │ │ ├── signals.py
│ │ │ ├── singleton.py
│ │ │ ├── sql_commons.py
│ │ │ ├── streaming_utils.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ └── task_menu_item.html
│ │ │ ├── templatetags/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── debug_tags.py
│ │ │ │ └── project_tags.py
│ │ │ ├── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_appvar_cache.py
│ │ │ │ ├── test_check_timeout.py
│ │ │ │ ├── test_collection_utils.py
│ │ │ │ ├── test_download_s3_models.py
│ │ │ │ ├── test_expressions.py
│ │ │ │ ├── test_log_utils.py
│ │ │ │ ├── test_map.py
│ │ │ │ ├── test_sql_commons.py
│ │ │ │ ├── test_url_utils.py
│ │ │ │ └── test_utils.py
│ │ │ ├── time_limit.py
│ │ │ ├── topological_sort.py
│ │ │ ├── url_utils.py
│ │ │ ├── urls.py
│ │ │ ├── utils.py
│ │ │ ├── validators.py
│ │ │ ├── views.py
│ │ │ └── widgets.py
│ │ ├── datascience/
│ │ │ ├── __init__.py
│ │ │ ├── api_wrapper.py
│ │ │ └── pprint_queryset.py
│ │ ├── deployment/
│ │ │ ├── __init__.py
│ │ │ ├── app_data.py
│ │ │ ├── app_vars.py
│ │ │ ├── management/
│ │ │ │ ├── __init__.py
│ │ │ │ └── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── init_app_data.py
│ │ │ │ └── init_deployment_object.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ └── tasks.py
│ │ ├── document/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── annotator_error.py
│ │ │ │ ├── field_value_views.py
│ │ │ │ └── v1.py
│ │ │ ├── app_vars.py
│ │ │ ├── apps.py
│ │ │ ├── async_notifications.py
│ │ │ ├── async_tasks/
│ │ │ │ ├── __init__.py
│ │ │ │ └── detect_field_values_task.py
│ │ │ ├── constants.py
│ │ │ ├── document_class.py
│ │ │ ├── document_interface.py
│ │ │ ├── field_detection/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── csv_regexps_field_detection_strategy.py
│ │ │ │ ├── detect_field_values_params.py
│ │ │ │ ├── detector_field_matcher.py
│ │ │ │ ├── field_based_ml_field_detection.py
│ │ │ │ ├── field_classifier_suggestion.py
│ │ │ │ ├── field_detection.py
│ │ │ │ ├── field_detection_celery_api.py
│ │ │ │ ├── field_detection_repository.py
│ │ │ │ ├── fields_detection_abstractions.py
│ │ │ │ ├── formula_based_field_detection.py
│ │ │ │ ├── mlflow_field_detection.py
│ │ │ │ ├── regexps_and_text_based_ml_field_detection.py
│ │ │ │ ├── regexps_field_detection.py
│ │ │ │ ├── tests/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── test_csv_regexps_detection_cache.py
│ │ │ │ │ ├── test_document_field_multiline_regex_detector.py
│ │ │ │ │ ├── test_formula_error_detector.py
│ │ │ │ │ ├── test_pre_process_regexp_option.py
│ │ │ │ │ ├── test_regex_only_detection_strategy.py
│ │ │ │ │ └── test_regexps_field_detection.py
│ │ │ │ └── text_based_ml.py
│ │ │ ├── field_processing/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── document_vectorizers.py
│ │ │ │ ├── field_processing_utils.py
│ │ │ │ ├── tests/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── test_fields_processing_utils.py
│ │ │ │ │ ├── test_number_vectorizer.py
│ │ │ │ │ ├── test_recurring_date_vectorizer.py
│ │ │ │ │ └── test_serial_date_vectorizer.py
│ │ │ │ └── vectorizers.py
│ │ │ ├── field_type_registry.py
│ │ │ ├── field_types.py
│ │ │ ├── forms.py
│ │ │ ├── management/
│ │ │ │ ├── __init__.py
│ │ │ │ └── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── create_document_type.py
│ │ │ │ ├── delete_documents.py
│ │ │ │ └── load_annotation_statuses.py
│ │ │ ├── migration/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── document_export.py
│ │ │ │ ├── document_import.py
│ │ │ │ └── table_export_map.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_auto_20170731_0948.py
│ │ │ │ ├── 0003_auto_20170818_0632.py
│ │ │ │ ├── 0004_document_title.py
│ │ │ │ ├── 0005_document_full_text.py
│ │ │ │ ├── 0006_document_data.py
│ │ │ │ ├── 0007_historicaldocument.py
│ │ │ │ ├── 0008_auto_20180213_0739.py
│ │ │ │ ├── 0009_auto_20180213_0746.py
│ │ │ │ ├── 0010_auto_20180213_0818.py
│ │ │ │ ├── 0011_auto_20180213_0825.py
│ │ │ │ ├── 0012_auto_20180213_0829.py
│ │ │ │ ├── 00136_delete_pending.py
│ │ │ │ ├── 00137_historical_document_delete_pending.py
│ │ │ │ ├── 0013_auto_20180213_2001.py
│ │ │ │ ├── 0014_auto_20180215_0848.py
│ │ │ │ ├── 0015_auto_20180219_0034.py
│ │ │ │ ├── 0016_auto_20180219_1215.py
│ │ │ │ ├── 0017_auto_20180223_1512.py
│ │ │ │ ├── 0018_auto_20180223_1512.py
│ │ │ │ ├── 0019_auto_20180223_1728.py
│ │ │ │ ├── 0020_auto_20180305_1404.py
│ │ │ │ ├── 0021_auto_20180305_1947.py
│ │ │ │ ├── 0022_auto_20180306_1128.py
│ │ │ │ ├── 0023_auto_20180306_1208.py
│ │ │ │ ├── 0024_auto_20180306_1209.py
│ │ │ │ ├── 0025_auto_20180306_1959.py
│ │ │ │ ├── 0025_auto_20180307_0653.py
│ │ │ │ ├── 0026_auto_20180307_0655.py
│ │ │ │ ├── 0026_auto_20180308_0801.py
│ │ │ │ ├── 0027_auto_20180307_1345.py
│ │ │ │ ├── 0028_merge_20180308_1136.py
│ │ │ │ ├── 0029_auto_20180309_1732.py
│ │ │ │ ├── 0030_auto_20180314_1447.py
│ │ │ │ ├── 0031_auto_20180315_1458.py
│ │ │ │ ├── 0032_auto_20180330_1305.py
│ │ │ │ ├── 0033_auto_20180401_0739.py
│ │ │ │ ├── 0034_auto_20180401_0739.py
│ │ │ │ ├── 0035_auto_20180404_1559.py
│ │ │ │ ├── 0036_document_status.py
│ │ │ │ ├── 0037_auto_20180405_1710.py
│ │ │ │ ├── 0038_auto_20180406_1945.py
│ │ │ │ ├── 0039_auto_20180407_1217.py
│ │ │ │ ├── 0040_auto_20180420_1142.py
│ │ │ │ ├── 0041_auto_20180420_1528.py
│ │ │ │ ├── 0042_auto_20180426_1551.py
│ │ │ │ ├── 0043_auto_20180426_1943.py
│ │ │ │ ├── 0044_auto_20180426_1954.py
│ │ │ │ ├── 0045_auto_20180615_1050.py
│ │ │ │ ├── 0046_auto_20180622_1138.py
│ │ │ │ ├── 0047_auto_20180628_1116.py
│ │ │ │ ├── 0048_auto_20180705_1411.py
│ │ │ │ ├── 0049_auto_20180706_0553.py
│ │ │ │ ├── 0050_migrate_doc_size_20180706_0608.py
│ │ │ │ ├── 0051_auto_20180718_0713.py
│ │ │ │ ├── 0052_documentfield_description.py
│ │ │ │ ├── 0053_custom_document_type_field_relation.py
│ │ │ │ ├── 0054_auto_20180730_1013.py
│ │ │ │ ├── 0055_auto_20180730_1433.py
│ │ │ │ ├── 0056_auto_20180731_1435.py
│ │ │ │ ├── 0056_externalfieldvalue.py
│ │ │ │ ├── 0057_merge_20180802_0716.py
│ │ │ │ ├── 0058_documentfield_value_regexp.py
│ │ │ │ ├── 0059_auto_20180816_0457.py
│ │ │ │ ├── 0060_auto_20180819_0534.py
│ │ │ │ ├── 0061_auto_20180822_1708.py
│ │ │ │ ├── 0062_fix_catastrophic_backtracking.py
│ │ │ │ ├── 0063_fix_catastrophic_backtracking_for_all_detectors.py
│ │ │ │ ├── 0064_auto_20180827_1330.py
│ │ │ │ ├── 0065_auto_20180828_0757.py
│ │ │ │ ├── 0066_fix_catastrophic_backtracking.py
│ │ │ │ ├── 0067_auto_20180830_1347.py
│ │ │ │ ├── 0068_auto_20180902_1951.py
│ │ │ │ ├── 0069_documenttypefieldcategory.py
│ │ │ │ ├── 0070_auto_20180911_0648.py
│ │ │ │ ├── 0071_auto_20180911_0821.py
│ │ │ │ ├── 0072_auto_20180914_0907.py
│ │ │ │ ├── 0073_auto_20180919_0715.py
│ │ │ │ ├── 0074_documentfield_require_text_annotations.py
│ │ │ │ ├── 0075_auto_20180924_1728.py
│ │ │ │ ├── 0076_auto_20180925_1232.py
│ │ │ │ ├── 0077_auto_20180925_1626.py
│ │ │ │ ├── 0078_auto_20180926_1702.py
│ │ │ │ ├── 0079_documenttypefield_order.py
│ │ │ │ ├── 0080_auto_20181002_1716.py
│ │ │ │ ├── 0081_auto_20181003_2032.py
│ │ │ │ ├── 0082_auto_20181003_2335.py
│ │ │ │ ├── 0083_auto_20181003_2350.py
│ │ │ │ ├── 0084_documenttype_editor_type.py
│ │ │ │ ├── 0085_clean_dependends_on.py
│ │ │ │ ├── 0086_textunit_metadata.py
│ │ │ │ ├── 0087_documentfield_text_unit_type.py
│ │ │ │ ├── 0088_documenttype_metadata.py
│ │ │ │ ├── 0089_documentfield_metadata.py
│ │ │ │ ├── 0090_auto_20181009_1149.py
│ │ │ │ ├── 0091_auto_20181012_0827.py
│ │ │ │ ├── 0092_auto_20181012_2155.py
│ │ │ │ ├── 0093_auto_20181014_1748.py
│ │ │ │ ├── 0094_documenttype_field_code_aliases.py
│ │ │ │ ├── 0095_auto_20181019_2329.py
│ │ │ │ ├── 0096_auto_20181022_0811.py
│ │ │ │ ├── 0097_auto_20181022_0813.py
│ │ │ │ ├── 0098_fix_geography_field_serialization.py
│ │ │ │ ├── 0099_auto_20181025_1253.py
│ │ │ │ ├── 0100_fix_date_field_serialization.py
│ │ │ │ ├── 0101_auto_20181105_1144.py
│ │ │ │ ├── 0102_auto_20181106_2359.py
│ │ │ │ ├── 0103_documentfield_classifier_init_script.py
│ │ │ │ ├── 0104_auto_20181123_1122.py
│ │ │ │ ├── 0105_auto_20181128_1238.py
│ │ │ │ ├── 0106_new_schema_document_type_fields_to_1_n.py
│ │ │ │ ├── 0107_data_document_type_fields_to_1_n.py
│ │ │ │ ├── 0108_apply_new_schema.py
│ │ │ │ ├── 0109_fix_cached_fields.py
│ │ │ │ ├── 0110_remove_temporary_fields.py
│ │ │ │ ├── 0111_documentfielddetector_text_part.py
│ │ │ │ ├── 0112_auto_20181222_1630.py
│ │ │ │ ├── 0113_auto_20190104_1605.py
│ │ │ │ ├── 0114_documentfield_allow_adding_choices.py
│ │ │ │ ├── 0115_auto_20190116_1413.py
│ │ │ │ ├── 0116_documentfield_default_value.py
│ │ │ │ ├── 0117_auto_20190118_1214.py
│ │ │ │ ├── 0118_auto_20190125_1551.py
│ │ │ │ ├── 0119_auto_20190129_1253.py
│ │ │ │ ├── 0120_auto_20190209_1201.py
│ │ │ │ ├── 0121_auto_20190213_0952.py
│ │ │ │ ├── 0122_auto_20190215_1040.py
│ │ │ │ ├── 0123_auto_20190218_1341.py
│ │ │ │ ├── 0124_auto_20190311_0855.py
│ │ │ │ ├── 0125_auto_20190325_1530.py
│ │ │ │ ├── 0125_documentfieldcategory_export_key.py
│ │ │ │ ├── 0126_merge_20190327_1150.py
│ │ │ │ ├── 0127_auto_20190405_0747.py
│ │ │ │ ├── 0127_auto_20190408_1009.py
│ │ │ │ ├── 0128_auto_20190409_1443.py
│ │ │ │ ├── 0129_auto_20190418_1355.py
│ │ │ │ ├── 0130_auto_20190419_1038.py
│ │ │ │ ├── 0131_auto_20190419_1134.py
│ │ │ │ ├── 0132_auto_20190419_1144.py
│ │ │ │ ├── 0133_auto_20190424_1038.py
│ │ │ │ ├── 0134_docfield_default_value.py
│ │ │ │ ├── 0135_auto_20190510_0727.py
│ │ │ │ ├── 0138_auto_20190527_1446.py
│ │ │ │ ├── 0139_auto_20190527_1622.py
│ │ │ │ ├── 0140_auto_20190530_0845.py
│ │ │ │ ├── 0141_auto_20190531_0709.py
│ │ │ │ ├── 0142_auto_20190531_1437.py
│ │ │ │ ├── 0143_auto_20190716_1807.py
│ │ │ │ ├── 0144_auto_20190725_0832.py
│ │ │ │ ├── 0145_drop_index_20190731_1305.py
│ │ │ │ ├── 0146_drop_index_20190731_1325.py
│ │ │ │ ├── 0147_auto_20190823_1140.py
│ │ │ │ ├── 0150_auto_20190902_1400.py
│ │ │ │ ├── 0151_move_document_table.py
│ │ │ │ ├── 0152_auto_20190902_1549.py
│ │ │ │ ├── 0155_auto_20190924_0822.py
│ │ │ │ ├── 0156_auto_20190930_1245.py
│ │ │ │ ├── 0156_auto_20191002_0835.py
│ │ │ │ ├── 0157_migrate_fieldvalues.py
│ │ │ │ ├── 0158_update_processed.py
│ │ │ │ ├── 0159_auto_20191004_0608.py
│ │ │ │ ├── 0160_remove_docfieldval.py
│ │ │ │ ├── 0161_auto_20191024_0903.py
│ │ │ │ ├── 0162_auto_20191025_0412.py
│ │ │ │ ├── 0163_auto_20191101_0752.py
│ │ │ │ ├── 0164_auto_20191107_0831.py
│ │ │ │ ├── 0165_fill_documenttext_metadata.py
│ │ │ │ ├── 0166_auto_20191107_1047.py
│ │ │ │ ├── 0167_remove_textunit_metadata.py
│ │ │ │ ├── 0168_auto_20191114_1808.py
│ │ │ │ ├── 0169_documentfield_vectorizer_stop_words.py
│ │ │ │ ├── 0170_textunittext.py
│ │ │ │ ├── 0171_migrate_textunit_text.py
│ │ │ │ ├── 0172_auto_20191206_0650.py
│ │ │ │ ├── 0173_auto_20191223_0908.py
│ │ │ │ ├── 0174_auto_20200115_0823.py
│ │ │ │ ├── 0175_auto_20200115_0828.py
│ │ │ │ ├── 0176_auto_20200115_0829.py
│ │ │ │ ├── 0177_auto_20200113_2143.py
│ │ │ │ ├── 0178_documentfield_mlflow_detect_on_document_level.py
│ │ │ │ ├── 0178_fieldannotationsavedfilter.py
│ │ │ │ ├── 0179_auto_20200123_1327.py
│ │ │ │ ├── 0180_auto_20200123_1330.py
│ │ │ │ ├── 0181_merge_20200123_2008.py
│ │ │ │ ├── 0182_auto_20200130_0752.py
│ │ │ │ ├── 0183_auto_20200210_1427.py
│ │ │ │ ├── 0184_auto_20200218_1714.py
│ │ │ │ ├── 0185_auto_20200219_0706.py
│ │ │ │ ├── 0186_auto_20200303_0857.py
│ │ │ │ ├── 0187_auto_20200318_1430.py
│ │ │ │ ├── 0188_auto_20200323_1551.py
│ │ │ │ ├── 0189_auto_20200323_1551.py
│ │ │ │ ├── 0190_auto_20200323_1551.py
│ │ │ │ ├── 0191_auto_20200323_1551.py
│ │ │ │ ├── 0192_auto_20200403_1148.py
│ │ │ │ ├── 0193_auto_20200406_0833.py
│ │ │ │ ├── 0194_auto_20200415_1545.py
│ │ │ │ ├── 0195_auto_20200420_0936.py
│ │ │ │ ├── 0196_auto_20200422_1059.py
│ │ │ │ ├── 0197_auto_20200512_0940.py
│ │ │ │ ├── 0198_auto_20200512_1157.py
│ │ │ │ ├── 0199_auto_20200115_0828.py
│ │ │ │ ├── 0200_auto_20200512_1815.py
│ │ │ │ ├── 0201_auto_20200513_1844.py
│ │ │ │ ├── 0202_auto_20200610_0917.py
│ │ │ │ ├── 0203_auto_20200617_1327.py
│ │ │ │ ├── 0204_auto_20200629_0743.py
│ │ │ │ ├── 0205_add_dock_page.py
│ │ │ │ ├── 0206_auto_20200713_1430.py
│ │ │ │ ├── 0207_auto_20200718_1606.py
│ │ │ │ ├── 0208_auto_20200805_1622.py
│ │ │ │ ├── 0209_auto_20200818_1011.py
│ │ │ │ ├── 0210_fill_note_user.py
│ │ │ │ ├── 0211_set_rel_info_20200821_1030.py
│ │ │ │ ├── 0212_detect_limit_count.py
│ │ │ │ ├── 0213_field_category_per_document.py
│ │ │ │ ├── 0214_auto_20200910_0719.py
│ │ │ │ ├── 0215_auto_20200914_1449.py
│ │ │ │ ├── 0216_ocr_rating.py
│ │ │ │ ├── 0217_auto_20201111_2137.py
│ │ │ │ ├── 0218_auto_20201118_1104.py
│ │ │ │ ├── 0218_b_auto_20201117_0429.py
│ │ │ │ ├── 0218_permissions.py
│ │ │ │ ├── 0219_auto_20201119_0645.py
│ │ │ │ ├── 0220_merge_20201119_1037.py
│ │ │ │ ├── 0221_auto_20201216_1437.py
│ │ │ │ ├── 0222_auto_20201224_1533.py
│ │ │ │ ├── 0223_document_contract_class.py
│ │ │ │ ├── 0224_auto_20210106_1234.py
│ │ │ │ ├── 0225_auto_20210128_1213.py
│ │ │ │ ├── 0226_remove_documentfield_stop_words.py
│ │ │ │ ├── 0227_remove_fields_dirty_flag.py
│ │ │ │ ├── 0228_auto_20210210_1241.py
│ │ │ │ ├── 0229_add_mod_hist_rawdb_fields.py
│ │ │ │ ├── 0230_auto_20210212_2324.py
│ │ │ │ ├── 0231_move_detecting_limits.py
│ │ │ │ ├── 0232_document_pdf_presentation_binary.py
│ │ │ │ ├── 0233_auto_20210222_0851.py
│ │ │ │ ├── 0234_boolean_to_related_type.py
│ │ │ │ ├── 0235_amount_to_float_type.py
│ │ │ │ ├── 0236_auto_20210330_1150.py
│ │ │ │ ├── 0237_auto_20210330_1327.py
│ │ │ │ ├── 0238_replace_removed_value_detection_strategies.py
│ │ │ │ ├── 0239_auto_20210402_1120.py
│ │ │ │ ├── 0240_auto_20210419_1117.py
│ │ │ │ ├── 0241_documenttable_bounding_rect.py
│ │ │ │ ├── 0242_auto_20210426_1209.py
│ │ │ │ ├── 0243_remove_orphan_fields.py
│ │ │ │ ├── 0244_obligatory_field_doc_type.py
│ │ │ │ ├── 0245_fix_decimal_format.py
│ │ │ │ ├── 0246_auto_20210722_0711.py
│ │ │ │ ├── 0247_auto_20210722_1001.py
│ │ │ │ ├── 0248_textunittext_document.py
│ │ │ │ ├── 0249_document_field_detector_update.py
│ │ │ │ ├── 0250_auto_20210830_0843.py
│ │ │ │ ├── 0251_merge_textunit.py
│ │ │ │ ├── 0252_remove_textunittext.py
│ │ │ │ ├── 0253_modify_textunit_trigger.py
│ │ │ │ ├── 0254_auto_20220511_1444.py
│ │ │ │ ├── 0255_auto_20220617_0913.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── notifications.py
│ │ │ ├── pdf_coordinates/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── pdf_coords_commons.py
│ │ │ │ ├── tests/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── pdf_test_common.py
│ │ │ │ │ └── test_coords_location.py
│ │ │ │ └── text_coord_map.py
│ │ │ ├── repository/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_document_repository.py
│ │ │ │ ├── base_field_detector_repository.py
│ │ │ │ ├── base_text_unit_repository.py
│ │ │ │ ├── document_bulk_delete.py
│ │ │ │ ├── document_field_repository.py
│ │ │ │ ├── document_repository.py
│ │ │ │ ├── dto.py
│ │ │ │ ├── field_detector_repository.py
│ │ │ │ └── text_unit_repository.py
│ │ │ ├── schemas.py
│ │ │ ├── scheme_migrations/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_scheme_migration.py
│ │ │ │ ├── document_scheme_migration.py
│ │ │ │ ├── scheme_migration.py
│ │ │ │ └── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ └── test_scheme_migration.py
│ │ │ ├── signals.py
│ │ │ ├── sync_tasks/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── document_files_cleaner.py
│ │ │ │ ├── ensure_new_paths_unique_task.py
│ │ │ │ ├── rename_old_documents_task.py
│ │ │ │ └── soft_delete_document_task.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ ├── documentfield_admin_select.html
│ │ │ │ └── task_menu_item.html
│ │ │ ├── tests.py
│ │ │ ├── unit_tests/
│ │ │ │ ├── __init__.py
│ │ │ │ └── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ └── test_models.py
│ │ │ ├── urls.py
│ │ │ ├── utils.py
│ │ │ ├── value_extraction_hints.py
│ │ │ └── views.py
│ │ ├── dump/
│ │ │ ├── __init__.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── app_dump.py
│ │ │ ├── apps.py
│ │ │ ├── document_type_import.py
│ │ │ ├── management/
│ │ │ │ ├── __init__.py
│ │ │ │ └── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── dump_data.py
│ │ │ │ └── dump_field_values.py
│ │ │ └── urls.py
│ │ ├── extract/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── app_vars.py
│ │ │ ├── apps.py
│ │ │ ├── companies_extractor.py
│ │ │ ├── company_types.py
│ │ │ ├── dict_data_cache.py
│ │ │ ├── locating_performance_meter.py
│ │ │ ├── locators.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_auto_20170805_0955.py
│ │ │ │ ├── 0003_auto_20170805_1140.py
│ │ │ │ ├── 0004_auto_20170807_1327.py
│ │ │ │ ├── 0005_auto_20170810_2015.py
│ │ │ │ ├── 0006_auto_20170831_1607.py
│ │ │ │ ├── 0007_auto_20170831_1611.py
│ │ │ │ ├── 0008_auto_20170906_0735.py
│ │ │ │ ├── 0009_auto_20170920_1515.py
│ │ │ │ ├── 0010_auto_20170920_1523.py
│ │ │ │ ├── 0011_auto_20170920_1523.py
│ │ │ │ ├── 0012_remove_currencyusage_amount0.py
│ │ │ │ ├── 0013_auto_20170920_2012.py
│ │ │ │ ├── 0014_auto_20170920_2023.py
│ │ │ │ ├── 0015_amountusage.py
│ │ │ │ ├── 0016_distanceusage.py
│ │ │ │ ├── 0017_ratiousage.py
│ │ │ │ ├── 0018_percentusage.py
│ │ │ │ ├── 0019_auto_20170923_0833.py
│ │ │ │ ├── 0020_auto_20170923_0833.py
│ │ │ │ ├── 0021_auto_20170923_0848.py
│ │ │ │ ├── 0022_auto_20170923_0849.py
│ │ │ │ ├── 0023_auto_20170923_0850.py
│ │ │ │ ├── 0024_definitionusage_definition_str.py
│ │ │ │ ├── 0025_dateusage_date_str.py
│ │ │ │ ├── 0026_auto_20170924_0824.py
│ │ │ │ ├── 0027_auto_20170924_0850.py
│ │ │ │ ├── 0028_citationusage.py
│ │ │ │ ├── 0029_auto_20171031_0849.py
│ │ │ │ ├── 0030_auto_20171031_0924.py
│ │ │ │ ├── 0031_auto_20171031_1553.py
│ │ │ │ ├── 0032_auto_20171031_1610.py
│ │ │ │ ├── 0033_auto_20171103_1131.py
│ │ │ │ ├── 0034_auto_20171108_1200.py
│ │ │ │ ├── 0035_auto_20171110_1239.py
│ │ │ │ ├── 0036_auto_20171110_1419.py
│ │ │ │ ├── 0037_geoentity_priority.py
│ │ │ │ ├── 0038_cache_locate_configs.py
│ │ │ │ ├── 0039_auto_20190204_1246.py
│ │ │ │ ├── 0040_auto_20190204_1301.py
│ │ │ │ ├── 0041_auto_20190209_1201.py
│ │ │ │ ├── 0042_auto_20190212_1337.py
│ │ │ │ ├── 0043_auto_20190227_1952.py
│ │ │ │ ├── 0044_cache_locate_configs.py
│ │ │ │ ├── 0045_documenttermusage.py
│ │ │ │ ├── 0046_auto_20200321_1322.py
│ │ │ │ ├── 0047_documentdefinitionusage.py
│ │ │ │ ├── 0048_auto_20200323_1702.py
│ │ │ │ ├── 0053_auto_20200402_0909.py
│ │ │ │ ├── 0054_systemwidedefinitionusage_systemwidegeoentityusage_systemwidepartyusage_systemwidetermusage.py
│ │ │ │ ├── 0055_project_mat_views.py
│ │ │ │ ├── 0056_auto_20200515_1323.py
│ │ │ │ ├── 0057_blacklistrecord.py
│ │ │ │ ├── 0058_auto_20200713_1430.py
│ │ │ │ ├── 0059_add_matviews_index.py
│ │ │ │ ├── 0060_typed_dict_entities.py
│ │ │ │ ├── 0061_auto_20200826_0719.py
│ │ │ │ ├── 0062_auto_20201207_1241.py
│ │ │ │ ├── 0063_companytype_companytypetag.py
│ │ │ │ ├── 0064_auto_20210222_0747.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── signals.py
│ │ │ ├── term_stems.py
│ │ │ ├── tests.py
│ │ │ ├── urls.py
│ │ │ └── views.py
│ │ ├── highq_integration/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── apps.py
│ │ │ ├── dto.py
│ │ │ ├── forms.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_auto_20201224_1533.py
│ │ │ │ ├── 0003_auto_20210106_1923.py
│ │ │ │ ├── 0004_auto_20210402_1913.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ ├── column_mapping_form.html
│ │ │ │ └── task_menu_item.html
│ │ │ ├── urls.py
│ │ │ ├── utils.py
│ │ │ └── views.py
│ │ ├── imanage_integration/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── apps.py
│ │ │ ├── debug/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── data/
│ │ │ │ │ └── .gitignore
│ │ │ │ └── mock_imanage_server.py
│ │ │ ├── forms.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_imanagedocument_imanage_doc_number.py
│ │ │ │ ├── 0003_auto_20190206_1353.py
│ │ │ │ ├── 0004_imanagedocument_import_problem.py
│ │ │ │ ├── 0005_imanagedocument_import_problem_false.py
│ │ │ │ ├── 0006_auto_20190325_1530.py
│ │ │ │ ├── 0007_auto_20190424_1047.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ └── task_menu_item.html
│ │ │ ├── urls.py
│ │ │ └── views.py
│ │ ├── logging/
│ │ │ ├── __init__.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ └── app_vars.py
│ │ ├── materialized_views/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── app_vars.py
│ │ │ ├── forms.py
│ │ │ ├── mat_views.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_materializedview_status.py
│ │ │ │ ├── 0003_remove_materializedview_last_update_duration.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ └── task_menu_item.html
│ │ │ ├── urls.py
│ │ │ └── views.py
│ │ ├── mlflow/
│ │ │ ├── .gitignore
│ │ │ ├── __init__.py
│ │ │ ├── app_vars.py
│ │ │ ├── mlflow_model_client.py
│ │ │ ├── mlflow_model_manager.py
│ │ │ ├── mlflow_socket_server_script.py
│ │ │ └── tasks.py
│ │ ├── notifications/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── app_vars.py
│ │ │ ├── apps.py
│ │ │ ├── document_notification.py
│ │ │ ├── forms.py
│ │ │ ├── mail_server_config.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_auto_20190311_0855.py
│ │ │ │ ├── 0003_auto_20190315_0901.py
│ │ │ │ ├── 0004_auto_20190319_1455.py
│ │ │ │ ├── 0005_documentnotificationsubscription_recipients_cc.py
│ │ │ │ ├── 0006_auto_20190424_1047.py
│ │ │ │ ├── 0007_auto_20190724_1238.py
│ │ │ │ ├── 0008_documentnotificationsubscription_max_stack.py
│ │ │ │ ├── 0009_auto_20191003_0546.py
│ │ │ │ ├── 0010_auto_20201007_0926.py
│ │ │ │ ├── 0011_auto_20201224_1533.py
│ │ │ │ ├── 0012_update_mail_appvar.py
│ │ │ │ ├── 0013_webnotification_webnotificationmessage.py
│ │ │ │ ├── 0014_webnotificationmessage_notification_type.py
│ │ │ │ ├── 0015_remove_webnotificationmessage_redirect_link.py
│ │ │ │ ├── 0016_webnotificationmessage_redirect_link.py
│ │ │ │ ├── 0017_auto_20210805_1238.py
│ │ │ │ ├── 0018_webnotificationmessage_message.py
│ │ │ │ ├── 0019_update_web_notifications_message_field.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── notification_renderer.py
│ │ │ ├── notification_templates/
│ │ │ │ ├── document_digest/
│ │ │ │ │ ├── template.html
│ │ │ │ │ └── template.txt
│ │ │ │ └── document_notification/
│ │ │ │ ├── template.html
│ │ │ │ ├── template.txt
│ │ │ │ ├── template_pack.html
│ │ │ │ └── template_pack.txt
│ │ │ ├── notifications.py
│ │ │ ├── schemas.py
│ │ │ ├── signals.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ ├── notifications/
│ │ │ │ │ └── digest_config_change.html
│ │ │ │ └── task_menu_item.html
│ │ │ ├── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_send_email.py
│ │ │ │ ├── test_values_look_equal.py
│ │ │ │ └── test_web_notifications.py
│ │ │ ├── urls.py
│ │ │ └── views.py
│ │ ├── project/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── constants.py
│ │ │ ├── context_processors.py
│ │ │ ├── forms.py
│ │ │ ├── management/
│ │ │ │ ├── __init__.py
│ │ │ │ └── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ └── delete_projects.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_auto_20170731_0948.py
│ │ │ │ ├── 0003_auto_20180302_0904.py
│ │ │ │ ├── 0004_auto_20180305_1915.py
│ │ │ │ ├── 0005_projectupload.py
│ │ │ │ ├── 0006_auto_20180306_1208.py
│ │ │ │ ├── 0007_auto_20180307_0653.py
│ │ │ │ ├── 0008_uploadsession_completed.py
│ │ │ │ ├── 0009_auto_20180313_1330.py
│ │ │ │ ├── 0010_projectclustering.py
│ │ │ │ ├── 0011_auto_20180324_0503.py
│ │ │ │ ├── 0012_auto_20180401_2046.py
│ │ │ │ ├── 0013_auto_20180405_1710.py
│ │ │ │ ├── 0014_auto_20180406_0522.py
│ │ │ │ ├── 0015_auto_20180406_1103.py
│ │ │ │ ├── 0016_auto_20180406_1945.py
│ │ │ │ ├── 0017_delete_reviewstatus.py
│ │ │ │ ├── 0018_auto_20180510_1105.py
│ │ │ │ ├── 0019_auto_20180630_0807.py
│ │ │ │ ├── 0020_fix_projectclustering_task_id_type_20180706_0858.py
│ │ │ │ ├── 0021_auto_20180725_1829.py
│ │ │ │ ├── 0022_project_super_reviewers.py
│ │ │ │ ├── 0023_auto_20180730_1013.py
│ │ │ │ ├── 0024_project_send_email_notification.py
│ │ │ │ ├── 0025_auto_20181010_1739.py
│ │ │ │ ├── 0026_auto_20181013_0730.py
│ │ │ │ ├── 0027_documentfilter_created_by.py
│ │ │ │ ├── 0028_projectdocumentsfilter.py
│ │ │ │ ├── 0029_auto_20181102_1910.py
│ │ │ │ ├── 0030_auto_20190424_1047.py
│ │ │ │ ├── 0031_delete_pending_field.py
│ │ │ │ ├── 0032_auto_20190527_1446.py
│ │ │ │ ├── 0033_auto_20190916_1356.py
│ │ │ │ ├── 0034_auto_20191016_0857.py
│ │ │ │ ├── 0035_projecttermconfiguration.py
│ │ │ │ ├── 0036_auto_20191112_1039.py
│ │ │ │ ├── 0037_auto_20191113_1208.py
│ │ │ │ ├── 0038_project_hide_clause_review.py
│ │ │ │ ├── 0039_userprojectssavedfilter.py
│ │ │ │ ├── 0040_auto_20200512_1829.py
│ │ │ │ ├── 0041_auto_20200522_0811.py
│ │ │ │ ├── 0042_auto_20200713_1518.py
│ │ │ │ ├── 0043_permissions.py
│ │ │ │ ├── 0044_auto_20201201_0954.py
│ │ │ │ ├── 0045_auto_20201209_1541.py
│ │ │ │ ├── 0045_project_term_tags.py
│ │ │ │ ├── 0046_delete_projecttermconfiguration.py
│ │ │ │ ├── 0047_merge_20201218_0901.py
│ │ │ │ ├── 0048_project_companytype_tags.py
│ │ │ │ ├── 0049_project_default_tags.py
│ │ │ │ ├── 0050_auto_20210222_0851.py
│ │ │ │ ├── 0051_clear_project_transformers.py
│ │ │ │ ├── 0052_retarget_project_transformers.py
│ │ │ │ ├── 0053_auto_20211104_1244.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── notifications.py
│ │ │ ├── repository/
│ │ │ │ ├── __init__.py
│ │ │ │ └── project_repository.py
│ │ │ ├── schemas.py
│ │ │ ├── signals.py
│ │ │ ├── sync_tasks/
│ │ │ │ ├── __init__.py
│ │ │ │ └── soft_delete_project_task.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ └── email/
│ │ │ │ ├── notify_upload_completed.html
│ │ │ │ ├── notify_upload_completed.txt
│ │ │ │ ├── notify_upload_started.html
│ │ │ │ └── notify_upload_started.txt
│ │ │ ├── tests.py
│ │ │ ├── urls.py
│ │ │ ├── utils/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── tests/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── test_unique_name_builder.py
│ │ │ │ └── unique_name.py
│ │ │ └── views.py
│ │ ├── rawdb/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── app_dump_models.py
│ │ │ ├── app_vars.py
│ │ │ ├── apps.py
│ │ │ ├── constants.py
│ │ │ ├── field_value_tables.py
│ │ │ ├── forms.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_auto_20181207_0817.py
│ │ │ │ ├── 0003_auto_20181211_1034.py
│ │ │ │ ├── 0004_savedfilter.py
│ │ │ │ ├── 0005_remove_savedfilter_document_sort_order.py
│ │ │ │ ├── 0006_remove_savedfilter_filter_sql.py
│ │ │ │ ├── 0007_auto_20181219_2013.py
│ │ │ │ ├── 0008_auto_20181219_2122.py
│ │ │ │ ├── 0009_auto_20181219_2124.py
│ │ │ │ ├── 0010_auto_20181226_1111.py
│ │ │ │ ├── 0011_savedfilter_filter_type.py
│ │ │ │ ├── 0012_add_postgres_index_extension.py
│ │ │ │ ├── 0013_add_app_vars_descriptions.py
│ │ │ │ ├── 0014_auto_20190104_1605.py
│ │ │ │ ├── 0015_auto_20190319_1501.py
│ │ │ │ ├── 0016_auto_20190705_1123.py
│ │ │ │ ├── 0017_auto_20190710_1314.py
│ │ │ │ ├── 0018_initiate_reindex.py
│ │ │ │ ├── 0019_auto_20191024_1632.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── notifications.py
│ │ │ ├── rawdb/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── errors.py
│ │ │ │ ├── query_parsing.py
│ │ │ │ ├── rawdb_field_handlers.py
│ │ │ │ └── system_rawdb_config.py
│ │ │ ├── repository/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base_raw_db_repository.py
│ │ │ │ ├── raw_db_migrations.py
│ │ │ │ └── raw_db_repository.py
│ │ │ ├── schemas.py
│ │ │ ├── signals.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ └── task_menu_item.html
│ │ │ ├── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ └── test_calc_doctype_cache_columns.py
│ │ │ ├── urls.py
│ │ │ └── views.py
│ │ ├── similarity/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── chunk_similarity_task.py
│ │ │ ├── forms.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_remove_documentsimilarityconfig_project.py
│ │ │ │ ├── 0003_auto_20190530_0845.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── notifications.py
│ │ │ ├── signals.py
│ │ │ ├── similarity_metrics.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ └── task_menu_item.html
│ │ │ ├── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_document_chunk_similarity_processor.py
│ │ │ │ └── test_similatiry_processor.py
│ │ │ ├── urls.py
│ │ │ └── views.py
│ │ ├── task/
│ │ │ ├── __init__.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── app_vars.py
│ │ │ ├── celery_backend/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── advanced_celery.py
│ │ │ │ ├── autoscaler.py
│ │ │ │ ├── constants.py
│ │ │ │ ├── database.py
│ │ │ │ ├── managers.py
│ │ │ │ ├── task_utils.py
│ │ │ │ └── utils.py
│ │ │ ├── forms.py
│ │ │ ├── management/
│ │ │ │ ├── __init__.py
│ │ │ │ └── commands/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── load_documents.py
│ │ │ │ ├── load_entities.py
│ │ │ │ ├── load_terms.py
│ │ │ │ ├── locate_entities.py
│ │ │ │ ├── locate_parties.py
│ │ │ │ ├── locate_terms.py
│ │ │ │ └── total_cleanup.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_task_user.py
│ │ │ │ ├── 0003_task_metadata.py
│ │ │ │ ├── 0004_task_celery_task_result.py
│ │ │ │ ├── 0005_task_visible.py
│ │ │ │ ├── 0006_auto_20180315_1759.py
│ │ │ │ ├── 0007_auto_20180330_1305.py
│ │ │ │ ├── 0008_auto_20180330_1522.py
│ │ │ │ ├── 0009_auto_20180404_0851.py
│ │ │ │ ├── 0010_auto_20180510_1105.py
│ │ │ │ ├── 0011_taskconfig.py
│ │ │ │ ├── 0012_auto_20180606_1630.py
│ │ │ │ ├── 0013_auto_20180606_1928.py
│ │ │ │ ├── 0014_auto_20180606_1956.py
│ │ │ │ ├── 0015_auto_20180610_2212.py
│ │ │ │ ├── 0016_auto_20180613_1529.py
│ │ │ │ ├── 0017_auto_20180615_1400.py
│ │ │ │ ├── 0018_auto_20180615_1423.py
│ │ │ │ ├── 0019_remove_task_duration_at_last_update_time.py
│ │ │ │ ├── 0020_remove_task_progress.py
│ │ │ │ ├── 0021_remove_task_date_done.py
│ │ │ │ ├── 0022_auto_20180619_1629.py
│ │ │ │ ├── 0023_task_description.py
│ │ │ │ ├── 0024_auto_20180621_0845.py
│ │ │ │ ├── 0025_auto_20180622_1528.py
│ │ │ │ ├── 0026_auto_20180624_1632.py
│ │ │ │ ├── 0027_auto_20180624_1633.py
│ │ │ │ ├── 0028_auto_20180624_2227.py
│ │ │ │ ├── 0029_task_log_extra.py
│ │ │ │ ├── 0030_create_undex_20180712_1131.py
│ │ │ │ ├── 0031_auto_20180725_1416.py
│ │ │ │ ├── 0032_data_migration_20180725_1417.py
│ │ │ │ ├── 0033_task_completed.py
│ │ │ │ ├── 0034_data_migration_20180725_1445.py
│ │ │ │ ├── 0035_auto_20180816_1249.py
│ │ │ │ ├── 0036_task_run_count.py
│ │ │ │ ├── 0037_auto_20180822_1258.py
│ │ │ │ ├── 0038_remove_task_own_date_work_start.py
│ │ │ │ ├── 0039_task_worker.py
│ │ │ │ ├── 0040_auto_20180910_0913.py
│ │ │ │ ├── 0040_task_run_after_sub_tasks_finished.py
│ │ │ │ ├── 0041_merge_20180911_0538.py
│ │ │ │ ├── 0042_task_args.py
│ │ │ │ ├── 0043_create_document_soft_time_limit.py
│ │ │ │ ├── 0044_fix_document_soft_time_limit.py
│ │ │ │ ├── 0045_fix_document_soft_time_limit.py
│ │ │ │ ├── 0046_fix_document_soft_time_limit.py
│ │ │ │ ├── 0047_task_priority.py
│ │ │ │ ├── 0048_task_call_stack.py
│ │ │ │ ├── 0049_auto_20190911_1646.py
│ │ │ │ ├── 0050_task_run_after_sub_tasks_failed.py
│ │ │ │ ├── 0051_auto_20191113_1825.py
│ │ │ │ ├── 0052_task_has_sub_tasks.py
│ │ │ │ ├── 0053_auto_20191114_0825.py
│ │ │ │ ├── 0054_auto_remove_args_index.py
│ │ │ │ ├── 0055_auto_20200113_2143.py
│ │ │ │ ├── 0056_auto_20200206_1030.py
│ │ │ │ ├── 0057_add_task_display_name.py
│ │ │ │ ├── 0058_auto_20200323_1529.py
│ │ │ │ ├── 0059_auto_20200420_1504.py
│ │ │ │ ├── 0060_auto_20200424_1121.py
│ │ │ │ ├── 0061_auto_20200424_1341.py
│ │ │ │ ├── 0062_auto_20200609_0914.py
│ │ │ │ ├── 0063_auto_20200630_1353.py
│ │ │ │ ├── 0064_task_spawned_processes.py
│ │ │ │ ├── 0065_raise_failure_status_order.py
│ │ │ │ ├── 0066_taskstatentry.py
│ │ │ │ ├── 0067_task_bad_health_check_num.py
│ │ │ │ ├── 0068_task_queue.py
│ │ │ │ ├── 0069_auto_20201208_0911.py
│ │ │ │ ├── 0070_auto_20201208_1813.py
│ │ │ │ ├── 0071_add_reindex_task.py
│ │ │ │ ├── 0072_auto_20210402_1120.py
│ │ │ │ ├── 0073_remove_dirty_from_task_names.py
│ │ │ │ ├── 0075_task_weight.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── ocr_rating/
│ │ │ │ ├── __init__.py
│ │ │ │ └── ocr_rating_calculator.py
│ │ │ ├── schemas.py
│ │ │ ├── signals.py
│ │ │ ├── static/
│ │ │ │ └── moment-duration-format.js
│ │ │ ├── task_health_check/
│ │ │ │ ├── __init__.py
│ │ │ │ └── task_health_check.py
│ │ │ ├── task_monitor.py
│ │ │ ├── task_visibility.py
│ │ │ ├── tasks.py
│ │ │ ├── templates/
│ │ │ │ └── task/
│ │ │ │ ├── task_detail.html
│ │ │ │ ├── task_form.html
│ │ │ │ └── task_list.html
│ │ │ ├── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ └── test_calc_task_status.py
│ │ │ ├── urls.py
│ │ │ ├── utils/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── task_utils.py
│ │ │ │ └── tests/
│ │ │ │ └── __init__.py
│ │ │ └── views.py
│ │ ├── tus/
│ │ │ ├── __init__.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── schemas.py
│ │ │ └── storage.py
│ │ ├── users/
│ │ │ ├── __init__.py
│ │ │ ├── adapters.py
│ │ │ ├── admin.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ └── v1.py
│ │ │ ├── app_vars.py
│ │ │ ├── authentication.py
│ │ │ ├── forms.py
│ │ │ ├── management/
│ │ │ │ ├── __init__.py
│ │ │ │ └── commands/
│ │ │ │ └── __init__.py
│ │ │ ├── migrations/
│ │ │ │ ├── 0001_initial.py
│ │ │ │ ├── 0002_auto_20180522_0810.py
│ │ │ │ ├── 0003_role.py
│ │ │ │ ├── 0004_load_roles_20180626_1435.py
│ │ │ │ ├── 0005_migrate_users_20180626_1514.py
│ │ │ │ ├── 0006_auto_20180626_1523.py
│ │ │ │ ├── 0007_user_photo.py
│ │ │ │ ├── 0008_auto_20180919_0715.py
│ │ │ │ ├── 0009_user_timezone.py
│ │ │ │ ├── 0010_auto_20190424_1047.py
│ │ │ │ ├── 0011_auto_20200113_2143.py
│ │ │ │ ├── 0012_auto_20200706_0907.py
│ │ │ │ ├── 0013_auto_20200706_0912.py
│ │ │ │ ├── 0014_auto_20200713_1531.py
│ │ │ │ ├── 0015_socialappuri.py
│ │ │ │ ├── 0016_user_origin.py
│ │ │ │ ├── 0017_permissions.py
│ │ │ │ ├── 0017_user_name.py
│ │ │ │ ├── 0018_permissions.py
│ │ │ │ ├── 0019_merge_20201119_1037.py
│ │ │ │ ├── 0020_auto_20201218_0759.py
│ │ │ │ ├── 0021_auto_20201224_1533.py
│ │ │ │ ├── 0022_unique_email.py
│ │ │ │ ├── 0023_user_initials.py
│ │ │ │ ├── 0024_add_doctype_manager_permissions.py
│ │ │ │ ├── 0025_user_uid.py
│ │ │ │ ├── 0026_add_task_permissions_to_project_creator_group.py
│ │ │ │ ├── 0027_add_task_perms_to_project_and_doc_type_creator_group.py
│ │ │ │ ├── 0028_auto_20220615_1302.py
│ │ │ │ └── __init__.py
│ │ │ ├── models.py
│ │ │ ├── permissions.py
│ │ │ ├── rest_auth_urls.py
│ │ │ ├── schemas.py
│ │ │ ├── serializers.py
│ │ │ ├── signals.py
│ │ │ ├── social/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── adapters.py
│ │ │ │ ├── clients.py
│ │ │ │ ├── custom_auxilary.py
│ │ │ │ ├── custom_uris.py
│ │ │ │ ├── elevate/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── adapters.py
│ │ │ │ │ ├── clients.py
│ │ │ │ │ ├── provider.py
│ │ │ │ │ ├── schemas.py
│ │ │ │ │ └── views.py
│ │ │ │ ├── google/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── adapters.py
│ │ │ │ │ ├── provider.py
│ │ │ │ │ └── views.py
│ │ │ │ ├── office365/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── adapters.py
│ │ │ │ │ ├── provider.py
│ │ │ │ │ └── views.py
│ │ │ │ ├── okta/
│ │ │ │ │ ├── adapters.py
│ │ │ │ │ ├── provider.py
│ │ │ │ │ └── views.py
│ │ │ │ ├── provider.py
│ │ │ │ ├── serializers.py
│ │ │ │ └── urls.py
│ │ │ ├── tests.py
│ │ │ ├── unit_tests/
│ │ │ │ ├── __init__.py
│ │ │ │ └── tests/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── factories.py
│ │ │ │ ├── manual_test_admin.py
│ │ │ │ ├── manual_test_models.py
│ │ │ │ ├── manual_test_urls.py
│ │ │ │ ├── manual_test_views.py
│ │ │ │ ├── test_adapters.py
│ │ │ │ └── test_auxilary.py
│ │ │ ├── urls.py
│ │ │ ├── user_utils.py
│ │ │ └── views.py
│ │ └── websocket/
│ │ ├── __init__.py
│ │ ├── channel_message.py
│ │ ├── channel_message_types.py
│ │ ├── routing.py
│ │ └── websockets.py
│ ├── asgi.py
│ ├── contraxsuite_logging.py
│ ├── data/
│ │ └── README.md
│ ├── deploy/
│ │ ├── README.md
│ │ └── base/
│ │ ├── debian-requirements.txt
│ │ ├── notes.txt
│ │ ├── python-requirements-all-3.8.txt
│ │ ├── python-requirements-all.txt
│ │ ├── python-requirements-ignore-conflicts.txt
│ │ ├── python-requirements-lexnlp.txt
│ │ ├── python-requirements-text-extraction.txt
│ │ ├── python-unwanted-requirements.txt
│ │ └── supported_locales.txt
│ ├── fixtures/
│ │ ├── additional/
│ │ │ ├── .gitignore
│ │ │ └── README.md
│ │ ├── common/
│ │ │ ├── 2_ReviewStatusGroup.json
│ │ │ ├── 3_ReviewStatus.json
│ │ │ └── 4_FieldAnnotationStatus.json
│ │ └── demo/
│ │ └── document_data/
│ │ └── LeaseDemo.json
│ ├── jars/
│ │ └── .keep
│ ├── local_settings.py.example
│ ├── manage.py
│ ├── nodb_settings.py
│ ├── notebooks/
│ │ └── demo/
│ │ ├── accessing_field_values_sql.ipynb
│ │ ├── api_usage_example.ipynb
│ │ ├── clone_document_type.ipynb
│ │ ├── clustering.ipynb
│ │ ├── delete_user.ipynb
│ │ ├── doc_type_export_csv.ipynb
│ │ ├── download_imanage_document_files.ipynb
│ │ ├── field_value_rename.ipynb
│ │ ├── migrate_field.ipynb
│ │ ├── remove_extra_terms.ipynb
│ │ └── replace_field_code_in_formulas.ipynb
│ ├── run_celery.sh
│ ├── runpylint.sh
│ ├── settings.py
│ ├── smtp.py
│ ├── swagger_view.py
│ ├── task_names.py
│ ├── templates/
│ │ ├── 400.html
│ │ ├── 403.html
│ │ ├── 403_csrf.html
│ │ ├── 404.html
│ │ ├── 405.html
│ │ ├── 500.html
│ │ ├── _base_grid_buttons_block.html
│ │ ├── _base_jqxgrid_block.html
│ │ ├── _django_ql_searchbox.html
│ │ ├── _form_field.html
│ │ ├── _jq_imports_block.html
│ │ ├── about.html
│ │ ├── account/
│ │ │ ├── account_inactive.html
│ │ │ ├── base.html
│ │ │ ├── email/
│ │ │ │ ├── password_reset_key_message.html
│ │ │ │ └── password_reset_key_subject.txt
│ │ │ ├── email.html
│ │ │ ├── email_confirm.html
│ │ │ ├── login.html
│ │ │ ├── logout.html
│ │ │ ├── old_templates/
│ │ │ │ ├── login_old.html
│ │ │ │ ├── password_reset_done.html
│ │ │ │ ├── password_reset_from_key.html
│ │ │ │ ├── password_reset_from_key_done.html
│ │ │ │ └── password_reset_old.html
│ │ │ ├── password_change.html
│ │ │ ├── password_reset.html
│ │ │ ├── password_reset_done.html
│ │ │ ├── password_reset_from_key.html
│ │ │ ├── password_reset_from_key_done.html
│ │ │ ├── password_set.html
│ │ │ ├── signup.html
│ │ │ ├── signup_closed.html
│ │ │ ├── verification_sent.html
│ │ │ └── verified_email_required.html
│ │ ├── admin/
│ │ │ ├── actions.html
│ │ │ ├── analyze/
│ │ │ │ └── mlmodel/
│ │ │ │ └── change_form.html
│ │ │ ├── base.html
│ │ │ ├── base_site.html
│ │ │ ├── common/
│ │ │ │ └── confirm_delete_view.html
│ │ │ ├── document/
│ │ │ │ ├── document/
│ │ │ │ │ └── change_list.html
│ │ │ │ ├── documentfield/
│ │ │ │ │ ├── change_form.html
│ │ │ │ │ ├── confirm_newchoices_view.html
│ │ │ │ │ ├── delete_confirmation.html
│ │ │ │ │ └── delete_selected_confirmation.html
│ │ │ │ ├── documentfieldmultilineregexdetector/
│ │ │ │ │ └── change_form.html
│ │ │ │ ├── documenttype/
│ │ │ │ │ ├── change_form.html
│ │ │ │ │ ├── delete_confirmation.html
│ │ │ │ │ └── delete_selected_confirmation.html
│ │ │ │ ├── field_combobox.html
│ │ │ │ ├── field_values_warning_save_form.html
│ │ │ │ ├── ql_searchbox.html
│ │ │ │ ├── softdeletedocument/
│ │ │ │ │ ├── change_list.html
│ │ │ │ │ └── confirm_delete_view.html
│ │ │ │ ├── text_unit/
│ │ │ │ │ └── change_list.html
│ │ │ │ ├── users_tasks_warning.html
│ │ │ │ └── users_tasks_warning_save_form.html
│ │ │ ├── extract/
│ │ │ │ ├── companytype/
│ │ │ │ │ ├── change_list.html
│ │ │ │ │ └── companytypes_csv_import.html
│ │ │ │ └── term/
│ │ │ │ ├── change_list.html
│ │ │ │ └── terms_csv_import.html
│ │ │ ├── ms_exchange_integration/
│ │ │ │ └── mailboxmessage/
│ │ │ │ ├── change_list.html
│ │ │ │ └── confirm_delete_view.html
│ │ │ ├── notifications/
│ │ │ │ └── documentnotificationsubscription/
│ │ │ │ └── change_form.html
│ │ │ ├── project/
│ │ │ │ └── softdeleteproject/
│ │ │ │ ├── change_list.html
│ │ │ │ └── confirm_delete_view.html
│ │ │ └── task/
│ │ │ └── reindexroutine/
│ │ │ └── change_form.html
│ │ ├── allauth_2fa/
│ │ │ ├── authenticate.html
│ │ │ ├── backup_tokens.html
│ │ │ ├── remove.html
│ │ │ └── setup.html
│ │ ├── analyze/
│ │ │ ├── document_classification_list.html
│ │ │ ├── document_classifier_list.html
│ │ │ ├── document_classifier_suggestion_list.html
│ │ │ ├── document_cluster_list.html
│ │ │ ├── document_similarity_list.html
│ │ │ ├── text_unit_classification_list.html
│ │ │ ├── text_unit_classifier_list.html
│ │ │ ├── text_unit_classifier_suggestion_list.html
│ │ │ ├── text_unit_cluster_list.html
│ │ │ └── text_unit_similarity_list.html
│ │ ├── base.html
│ │ ├── base_delete.html
│ │ ├── base_detail.html
│ │ ├── base_error.html
│ │ ├── base_form.html
│ │ ├── base_list.html
│ │ ├── base_list_ajax.html
│ │ ├── common/
│ │ │ ├── db_schema_visualization/
│ │ │ │ ├── input.html
│ │ │ │ └── output.html
│ │ │ ├── db_stats.html
│ │ │ ├── docker_stats.html
│ │ │ └── method_stats_overview.html
│ │ ├── django_extensions/
│ │ │ └── graph_models/
│ │ │ ├── contraxsuite/
│ │ │ │ ├── digraph.dot
│ │ │ │ ├── label.dot
│ │ │ │ └── relation.dot
│ │ │ └── contraxsuite_with_repository_permalinks/
│ │ │ ├── digraph.dot
│ │ │ ├── label.dot
│ │ │ └── relation.dot
│ │ ├── document/
│ │ │ ├── _document_lang_popup_js.html
│ │ │ ├── _document_property_popup_js.html
│ │ │ ├── _document_tables.html
│ │ │ ├── _document_tasks.html
│ │ │ ├── _note_js.html
│ │ │ ├── document_action_list.html
│ │ │ ├── document_detail.html
│ │ │ ├── document_enhanced_view.html
│ │ │ ├── document_list.html
│ │ │ ├── document_note_list.html
│ │ │ ├── document_property_list.html
│ │ │ ├── document_relation_list.html
│ │ │ ├── document_source.html
│ │ │ ├── document_tag_list.html
│ │ │ ├── stats.html
│ │ │ ├── text_unit_detail.html
│ │ │ ├── text_unit_lang_list.html
│ │ │ ├── text_unit_list.html
│ │ │ ├── text_unit_note_list.html
│ │ │ ├── text_unit_property_list.html
│ │ │ ├── text_unit_ref_usage_list.html
│ │ │ └── text_unit_tag_list.html
│ │ ├── email/
│ │ │ ├── email_base.html
│ │ │ ├── logo_new.html
│ │ │ ├── logo_old.html
│ │ │ └── logo_svg.html
│ │ ├── extract/
│ │ │ ├── amount_usage_list.html
│ │ │ ├── citation_usage_list.html
│ │ │ ├── copyright_usage_list.html
│ │ │ ├── court_usage_list.html
│ │ │ ├── currency_usage_list.html
│ │ │ ├── date_duration_usage_list.html
│ │ │ ├── date_usage_calendar.html
│ │ │ ├── date_usage_list.html
│ │ │ ├── date_usage_timeline.html
│ │ │ ├── definition_usage_list.html
│ │ │ ├── distance_usage_list.html
│ │ │ ├── geo_entity_list.html
│ │ │ ├── geo_entity_usage_chart.html
│ │ │ ├── geo_entity_usage_list.html
│ │ │ ├── geo_entity_usage_map.html
│ │ │ ├── party_network_chart.html
│ │ │ ├── party_summary.html
│ │ │ ├── party_usage_list.html
│ │ │ ├── percent_usage_list.html
│ │ │ ├── ratio_usage_list.html
│ │ │ ├── regulation_usage_list.html
│ │ │ ├── term_usage_list.html
│ │ │ ├── top_amount_usage_list.html
│ │ │ ├── top_citation_usage_list.html
│ │ │ ├── top_copyright_usage_list.html
│ │ │ ├── top_court_usage_list.html
│ │ │ ├── top_currency_usage_list.html
│ │ │ ├── top_date_duration_usage_list.html
│ │ │ ├── top_date_usage_list.html
│ │ │ ├── top_definition_usage_list.html
│ │ │ ├── top_distance_usage_list.html
│ │ │ ├── top_geo_entity_usage_list.html
│ │ │ ├── top_party_usage_list.html
│ │ │ ├── top_percent_usage_list.html
│ │ │ ├── top_ratio_usage_list.html
│ │ │ ├── top_regulation_usage_list.html
│ │ │ ├── top_term_usage_list.html
│ │ │ ├── top_trademark_usage_list.html
│ │ │ ├── top_url_usage_list.html
│ │ │ ├── trademark_usage_list.html
│ │ │ └── url_usage_list.html
│ │ ├── filebrowser/
│ │ │ ├── base.html
│ │ │ ├── createdir.html
│ │ │ ├── delete_confirm.html
│ │ │ ├── detail.html
│ │ │ ├── include/
│ │ │ │ ├── breadcrumbs.html
│ │ │ │ └── tableheader.html
│ │ │ ├── index.html
│ │ │ └── upload.html
│ │ ├── home.html
│ │ ├── layout/
│ │ │ ├── breadcrumbs.html
│ │ │ ├── header.html
│ │ │ └── left_sidebar.html
│ │ ├── pdf_export.html
│ │ ├── project/
│ │ │ ├── dashboard.html
│ │ │ ├── project_action_list.html
│ │ │ ├── project_list.html
│ │ │ └── task_queue_list.html
│ │ ├── registration/
│ │ │ ├── password_reset_email.html
│ │ │ └── password_reset_subject.txt
│ │ ├── social_app/
│ │ │ └── index.html
│ │ ├── socialaccount/
│ │ │ └── authentication_error.html
│ │ ├── swagger_ui/
│ │ │ └── base.html
│ │ └── users/
│ │ ├── user_detail.html
│ │ ├── user_form.html
│ │ ├── user_list.html
│ │ └── user_object_permissions.html
│ ├── tests/
│ │ ├── __init__.py
│ │ ├── django_db_mock.py
│ │ ├── django_test_case.py
│ │ ├── nodb_runner.py
│ │ ├── resources/
│ │ │ └── documents/
│ │ │ ├── ocr/
│ │ │ │ └── wordx/
│ │ │ │ ├── doc_table_01.docx
│ │ │ │ ├── doc_table_02.docx
│ │ │ │ ├── hyperlink.docx
│ │ │ │ ├── lists.docx
│ │ │ │ ├── numbered_headings.docx
│ │ │ │ ├── tables_only.docx
│ │ │ │ ├── template_01.docx
│ │ │ │ ├── template_02.docx
│ │ │ │ └── text_headings.docx
│ │ │ ├── parsing/
│ │ │ │ ├── heading_doc_paragraphs.csv
│ │ │ │ ├── heading_doc_sections.txt
│ │ │ │ ├── heading_doc_sentences.txt
│ │ │ │ ├── heading_document.txt
│ │ │ │ ├── parsed_mixed_pdf.xhtml
│ │ │ │ ├── pdf_malformat_parsed_default.txt
│ │ │ │ ├── pdf_malformat_parsed_stripper.txt
│ │ │ │ ├── text_abusing_headers.txt
│ │ │ │ ├── word_table.docx
│ │ │ │ ├── xhtml_ocr_emptyimages.xhtml
│ │ │ │ ├── xhtml_ocr_mixed.xhtml
│ │ │ │ ├── xhtml_ocr_mixed_long.xhtml
│ │ │ │ ├── xhtml_ocr_mixed_short.xhtml
│ │ │ │ └── xhtml_pdf.xhtml
│ │ │ ├── pdf_coordinates/
│ │ │ │ ├── page_boxes.json
│ │ │ │ ├── page_fragment.txt
│ │ │ │ ├── rendered/
│ │ │ │ │ └── empty
│ │ │ │ ├── three_pages_boxes.json
│ │ │ │ ├── three_pages_pages.json
│ │ │ │ └── three_pages_text.txt
│ │ │ └── scheme_migrations/
│ │ │ ├── doc_type_v_16.json
│ │ │ └── doc_type_v_17.json
│ │ └── testutils.py
│ ├── urls.py
│ └── util/
│ ├── create_release_branch.sh
│ ├── setenv.sh
│ └── unify_py_file_structure.py
├── docker/
│ ├── .gitignore
│ ├── README.md
│ ├── build/
│ │ ├── .gitignore
│ │ ├── build_setenv.sh
│ │ ├── contraxsuite-app/
│ │ │ ├── .gitignore
│ │ │ ├── Dockerfile.template
│ │ │ ├── check_celery.sh
│ │ │ ├── dump.sh
│ │ │ ├── install_ssl_certs_to_python.sh
│ │ │ ├── prepare-image-app.sh
│ │ │ ├── start.template.sh
│ │ │ └── webdav_upload.sh
│ │ └── prepare-docker-images.sh
│ ├── deploy/
│ │ ├── .gitignore
│ │ ├── config-templates/
│ │ │ ├── backup-cron.conf
│ │ │ ├── db-backup.sh.template
│ │ │ ├── elastalert-config.yaml.template
│ │ │ ├── elastalert-examples/
│ │ │ │ ├── elastalert-bad-gateway-error.yaml
│ │ │ │ ├── elastalert-disk-usage.yaml
│ │ │ │ ├── elastalert-down-docker-services.yaml
│ │ │ │ └── elastalert-task-failed.yaml
│ │ │ ├── elastalert-server-config.json.template
│ │ │ ├── elastalert-smtp-auth.yaml
│ │ │ ├── elasticsearch.yml.template
│ │ │ ├── filebeat-backend-dev.template.yml
│ │ │ ├── filebeat.template.yml
│ │ │ ├── jupyter_notebook_config.py.template
│ │ │ ├── kibana.yml.template
│ │ │ ├── local_settings_celery.py.template
│ │ │ ├── local_settings_websrv.py.template
│ │ │ ├── metricbeat.yml.template
│ │ │ ├── nginx/
│ │ │ │ ├── cors_disable
│ │ │ │ ├── cors_enable
│ │ │ │ ├── mime.types
│ │ │ │ └── uwsgi_params
│ │ │ ├── nginx-customer.conf.template
│ │ │ ├── nginx-external-routes.conf.template
│ │ │ ├── nginx-frontend-routes.conf.template
│ │ │ ├── nginx-http.conf.template
│ │ │ ├── nginx-https.conf.template
│ │ │ ├── nginx-internal.conf.template
│ │ │ ├── nginx-powa.conf.template
│ │ │ ├── nginx.conf.template
│ │ │ ├── pg_hba.conf
│ │ │ ├── pgbouncer.celery.template.ini
│ │ │ ├── pgbouncer.userlist.template.txt
│ │ │ ├── pgbouncer.websrv.template.ini
│ │ │ ├── postgres_init.sql.template
│ │ │ ├── postgresql.template.conf
│ │ │ ├── powa-web.conf.template
│ │ │ ├── rabbitmq.template.conf
│ │ │ └── uwsgi.ini.template
│ │ ├── dependencies/
│ │ │ └── README.md
│ │ ├── deploy-contraxsuite-to-swarm-cluster.sh
│ │ ├── docker-compose-templates/
│ │ │ ├── docker-compose-backend-develop-mini.yml
│ │ │ ├── docker-compose-backend-develop.yml
│ │ │ ├── docker-compose-single-host-db-open.yml
│ │ │ ├── docker-compose-single-host.yml
│ │ │ └── docker-compose-single-master-many-workers.yml
│ │ ├── k8s/
│ │ │ ├── .gitignore
│ │ │ ├── aks/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── README.md
│ │ │ │ ├── aks_setenv.sh
│ │ │ │ └── scripts/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── az_01_login_use_device_code.sh
│ │ │ │ ├── az_02_get_k8s_versions.sh
│ │ │ │ ├── az_03_create_cluster.sh
│ │ │ │ ├── az_04_connect_kubectl_to_cluster.sh
│ │ │ │ ├── ceph_add_nodepool.sh
│ │ │ │ ├── ceph_cephblockpool_cs.yaml
│ │ │ │ ├── ceph_cluster_cs.yaml
│ │ │ │ ├── ceph_operator_cs.yaml
│ │ │ │ ├── ceph_remove_nodepool.sh
│ │ │ │ ├── ceph_rook_common.yaml
│ │ │ │ ├── ceph_rook_install.sh
│ │ │ │ ├── ceph_storageclass_cs.yaml
│ │ │ │ ├── certmanager_install.sh
│ │ │ │ ├── dockerhub_01_authenticate.sh
│ │ │ │ ├── helm_01_install.sh
│ │ │ │ ├── helm_02_init_with_service_acc_run_once.sh
│ │ │ │ ├── kubeapps_01_install.sh
│ │ │ │ ├── kubeapps_02_open_dashboard.sh
│ │ │ │ ├── kubeapps_03_retrieve_token.sh
│ │ │ │ ├── kubectl_create_dashboard_rolebinding.sh
│ │ │ │ ├── kubectl_get_nodes.sh
│ │ │ │ ├── prometheus_grafana_del_dns_records.sh
│ │ │ │ ├── prometheus_grafana_get_ip.sh
│ │ │ │ ├── prometheus_grafana_install.sh
│ │ │ │ └── prometheuscert.template.yml
│ │ │ ├── azure-file-sc.yaml
│ │ │ ├── contraxsuite/
│ │ │ │ ├── .helmignore
│ │ │ │ ├── Chart.template.yaml
│ │ │ │ ├── templates/
│ │ │ │ │ ├── _helpers.tpl
│ │ │ │ │ ├── configmap.yaml
│ │ │ │ │ ├── daemonset.yaml
│ │ │ │ │ ├── deployment.yaml
│ │ │ │ │ ├── horizontalpodautoscaler.yaml
│ │ │ │ │ ├── ingress.yaml
│ │ │ │ │ ├── issuer.yaml
│ │ │ │ │ ├── job.yaml
│ │ │ │ │ ├── keda.yaml
│ │ │ │ │ ├── pdb.yaml
│ │ │ │ │ ├── pvcs.yaml
│ │ │ │ │ ├── secret.yaml
│ │ │ │ │ ├── service.yaml
│ │ │ │ │ ├── statefulset.yaml
│ │ │ │ │ └── tests/
│ │ │ │ │ └── storage.yaml
│ │ │ │ └── values.template.yaml
│ │ │ ├── helm_setenv.sh
│ │ │ ├── prepare_helm_configs.sh
│ │ │ ├── pvc.yaml
│ │ │ └── values.yaml
│ │ ├── nginx-error-pages/
│ │ │ ├── 404.html
│ │ │ └── 502.html
│ │ ├── prepare_configs.sh
│ │ ├── registry/
│ │ │ ├── deploy-registry.sh
│ │ │ ├── docker-compose.yml
│ │ │ ├── registry_hard_reset.sh
│ │ │ ├── registry_list_contents.sh
│ │ │ └── registry_rm_prev_versions.sh
│ │ └── undeploy-contraxsuite-from-swarm-cluster.sh
│ ├── init_local_env.sh
│ ├── link_media_to_docker_volume.sh
│ ├── setenv.sh
│ ├── setup_local_contraxsuite_ubuntu_18_04.sh
│ ├── util/
│ │ ├── allow-insecure-registry.sh
│ │ ├── change_apt_sources_to_https.sh
│ │ ├── check_rabbit_queues.sh
│ │ ├── collect_docker_stats.sh
│ │ ├── commons.sh
│ │ ├── configure_host.sh
│ │ ├── configure_proxy.sh
│ │ ├── docker-prune-worker.sh
│ │ ├── docker-prune-workers.sh
│ │ ├── docker_volumes_full_backup.sh
│ │ ├── es_recovery.sh
│ │ ├── fix_nginx_logs.sh
│ │ ├── gen_self_signed_nginx_certs.sh
│ │ ├── gen_worker_init_script.sh
│ │ ├── install-docker-shared-user.sh
│ │ ├── install-docker-swarm.sh
│ │ ├── install-docker-ubuntu-20-04.sh
│ │ ├── install-docker-ubuntu.sh
│ │ ├── install-swarmpit.sh
│ │ ├── install_powa.sh
│ │ ├── load_dict_data.sh
│ │ ├── monitor_disk_usage.sh
│ │ ├── monitor_docker_services.sh
│ │ ├── postgres_external_backup.sh
│ │ ├── postgres_s3_backup.sh
│ │ ├── reboot-worker.sh
│ │ ├── reboot-workers.sh
│ │ ├── remove_down_nodes.sh
│ │ ├── set-docker-target-dir.sh
│ │ ├── thread_dump_worker.sh
│ │ ├── thread_dump_workers.sh
│ │ ├── total_cleanup.sh
│ │ ├── update-nginx-certificates-no-input.sh
│ │ ├── update-nginx-certificates.sh
│ │ ├── worker-init-script.sh.template
│ │ └── write-crontab-cert-script.sh
│ └── volumes.sh
├── documentation/
│ └── docs/
│ ├── Makefile
│ ├── README.md
│ ├── contraxsuite_documentation_center/
│ │ ├── assets/
│ │ │ └── css/
│ │ │ └── contraxsuite_documentation_center.css
│ │ └── index.html
│ ├── docstring_coverage_skipmagic.txt
│ ├── make.bat
│ ├── make.py
│ ├── requirements.txt
│ ├── source/
│ │ ├── _ext/
│ │ │ └── formfield_extension.py
│ │ ├── _static/
│ │ │ └── css/
│ │ │ └── custom_styles.css
│ │ ├── _templates/
│ │ │ └── layout.html
│ │ ├── api/
│ │ │ └── contraxsuite_orm/
│ │ │ ├── analyze.rst
│ │ │ ├── common.rst
│ │ │ ├── datascience.rst
│ │ │ ├── deployment.rst
│ │ │ ├── document.rst
│ │ │ ├── extract.rst
│ │ │ ├── highq_integration.rst
│ │ │ ├── imanage_integration.rst
│ │ │ ├── materialized_views.rst
│ │ │ ├── mlflow.rst
│ │ │ ├── notifications.rst
│ │ │ ├── project.rst
│ │ │ ├── rawdb.rst
│ │ │ ├── similarity.rst
│ │ │ ├── task.rst
│ │ │ └── users.rst
│ │ ├── conf.py
│ │ ├── configuration/
│ │ │ ├── core_concepts.md
│ │ │ ├── install.rst
│ │ │ └── setup.rst
│ │ ├── developer_documentation_schema.yaml
│ │ ├── index.rst
│ │ ├── introduction/
│ │ │ ├── intro_legal_analytics.rst
│ │ │ ├── overview.md
│ │ │ └── pricing_support.md
│ │ └── user_guides/
│ │ ├── doc_exp/
│ │ │ ├── admin.md
│ │ │ ├── custom_project_terms.md
│ │ │ ├── doc_type_migration.md
│ │ │ ├── documents.md
│ │ │ ├── intro.md
│ │ │ ├── locators.md
│ │ │ ├── pass_notif.md
│ │ │ └── text_units.md
│ │ ├── power_users/
│ │ │ ├── create_document_field.md
│ │ │ ├── create_document_type.md
│ │ │ ├── create_field_detectors.md
│ │ │ ├── import_jupyter_notebooks.md
│ │ │ ├── integration_highq.rst
│ │ │ ├── user_roles.md
│ │ │ └── writing_formulas.md
│ │ └── reviewers/
│ │ ├── batch_analysis.md
│ │ ├── contract_analysis.md
│ │ ├── contract_clause_analysis.md
│ │ ├── create_manage.md
│ │ └── stats.md
│ └── utils/
│ ├── __init__.py
│ ├── autodoc_rst_maker.py
│ └── strip_license.py
├── notebook-examples/
│ ├── clustering.ipynb
│ ├── custom_ocr_workflow.ipynb
│ ├── document_model_tutorial.ipynb
│ ├── example_image.tif
│ ├── example_image_messy.tif
│ ├── topic_modeling_lda.ipynb
│ └── topic_modeling_word2vec.ipynb
├── scripts/
│ ├── init_empty_dev_db.sh
│ ├── init_lexnlp_private_models.sh
│ ├── run_tests_nodb.sh
│ ├── run_uwsgi.sh
│ └── sub_project_utils.sh
├── sdk/
│ ├── README
│ ├── csharp/
│ │ └── sdk/
│ │ ├── .gitignore
│ │ ├── .openapi-generator/
│ │ │ ├── FILES
│ │ │ └── VERSION
│ │ ├── .openapi-generator-ignore
│ │ ├── .travis.yml
│ │ ├── Org.OpenAPITools.sln
│ │ ├── README.md
│ │ ├── build.bat
│ │ ├── build.sh
│ │ ├── docs/
│ │ │ ├── AccessTokenSchema.md
│ │ │ ├── Action.md
│ │ │ ├── AmountUsage.md
│ │ │ ├── AnalyzeApi.md
│ │ │ ├── Annotation.md
│ │ │ ├── AnnotationBatchRequest.md
│ │ │ ├── AnnotationBatchResponse.md
│ │ │ ├── AnnotationInDocument.md
│ │ │ ├── AnnotationSuggestRequest.md
│ │ │ ├── AnnotationUpdateResponse.md
│ │ │ ├── ApiApi.md
│ │ │ ├── AppVar.md
│ │ │ ├── AssignProjectAnnotationsRequest.md
│ │ │ ├── AssignProjectDocumentRequest.md
│ │ │ ├── AssignProjectDocumentsRequest.md
│ │ │ ├── CheckDocumentFieldFormulaRequest.md
│ │ │ ├── CheckNewDocumentFieldFormulaRequest.md
│ │ │ ├── CitationUsage.md
│ │ │ ├── CleanupProjectRequest.md
│ │ │ ├── CloneDocumentFieldRequest.md
│ │ │ ├── CloneDocumentTypeRequest.md
│ │ │ ├── ClusterProjectRequest.md
│ │ │ ├── ClusterProjectResponse.md
│ │ │ ├── Code.md
│ │ │ ├── CommonApi.md
│ │ │ ├── CopyrightUsage.md
│ │ │ ├── CountSuccessResponse.md
│ │ │ ├── CourtUsage.md
│ │ │ ├── CurrencyUsage.md
│ │ │ ├── CustomPasswordChange.md
│ │ │ ├── CustomPasswordReset.md
│ │ │ ├── CustomPasswordResetConfirm.md
│ │ │ ├── DateDurationUsage.md
│ │ │ ├── DateUsage.md
│ │ │ ├── DateUsageCalendar.md
│ │ │ ├── DateUsageTimeline.md
│ │ │ ├── DefinitionUsage.md
│ │ │ ├── DetectProjectFieldValuesRequest.md
│ │ │ ├── DistanceUsage.md
│ │ │ ├── DocumentApi.md
│ │ │ ├── DocumentCluster.md
│ │ │ ├── DocumentClusterDocumentData.md
│ │ │ ├── DocumentClusterDocumentDataInner.md
│ │ │ ├── DocumentClusterUpdate.md
│ │ │ ├── DocumentDefinitions.md
│ │ │ ├── DocumentDetail.md
│ │ │ ├── DocumentDetailAssigneeData.md
│ │ │ ├── DocumentDetailAvailableAssigneesData.md
│ │ │ ├── DocumentDetailAvailableAssigneesDataInner.md
│ │ │ ├── DocumentDetailNotes.md
│ │ │ ├── DocumentDetailStatusData.md
│ │ │ ├── DocumentDetailUser.md
│ │ │ ├── DocumentDocumentsDownloadZipGET404Response.md
│ │ │ ├── DocumentDownloadZipResponse.md
│ │ │ ├── DocumentFieldAnnotation.md
│ │ │ ├── DocumentFieldCategoryCreate.md
│ │ │ ├── DocumentFieldCategoryList.md
│ │ │ ├── DocumentFieldCategoryListFields.md
│ │ │ ├── DocumentFieldCategoryListFieldsInner.md
│ │ │ ├── DocumentFieldCreate.md
│ │ │ ├── DocumentFieldDetail.md
│ │ │ ├── DocumentFieldDetectorCreate.md
│ │ │ ├── DocumentFieldDetectorDetail.md
│ │ │ ├── DocumentFieldList.md
│ │ │ ├── DocumentFieldListCategory.md
│ │ │ ├── DocumentFieldListFamily.md
│ │ │ ├── DocumentFieldStatsResponse.md
│ │ │ ├── DocumentFieldValue.md
│ │ │ ├── DocumentNoteCreate.md
│ │ │ ├── DocumentNoteDetail.md
│ │ │ ├── DocumentNoteDetailUser.md
│ │ │ ├── DocumentNoteUpdate.md
│ │ │ ├── DocumentPDFRepr.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.md
│ │ │ ├── DocumentSimilarity.md
│ │ │ ├── DocumentSimilarityByFeaturesForm.md
│ │ │ ├── DocumentSimilarityRun.md
│ │ │ ├── DocumentTypeCreate.md
│ │ │ ├── DocumentTypeDetail.md
│ │ │ ├── DocumentTypeDetailCategories.md
│ │ │ ├── DocumentTypeDetailCategoriesInner.md
│ │ │ ├── DocumentTypeDetailFieldsData.md
│ │ │ ├── DocumentTypeDetailFieldsDataInner.md
│ │ │ ├── DocumentTypeForStats.md
│ │ │ ├── DocumentTypeImportRequest.md
│ │ │ ├── DocumentTypeImportResponse.md
│ │ │ ├── DocumentTypeStats.md
│ │ │ ├── DocumentTypeStatsData.md
│ │ │ ├── DocumentsForUser.md
│ │ │ ├── DocumentsForUserResponse.md
│ │ │ ├── DocumentsForUserResponseData.md
│ │ │ ├── DocumentsForUserResponseDataInner.md
│ │ │ ├── DumpApi.md
│ │ │ ├── DumpDocumentConfigGET200Response.md
│ │ │ ├── DumpFixture.md
│ │ │ ├── DumpPUTErrorResponse.md
│ │ │ ├── ExtractApi.md
│ │ │ ├── FieldAnnotationStatus.md
│ │ │ ├── GeoAliasUsage.md
│ │ │ ├── GeoEntityList.md
│ │ │ ├── GeoEntityUpdate.md
│ │ │ ├── GeoEntityUsage.md
│ │ │ ├── InlineResponse400.md
│ │ │ ├── InlineResponse404.md
│ │ │ ├── InlineResponse4041.md
│ │ │ ├── LoadFixture.md
│ │ │ ├── LocateItemsRequest.md
│ │ │ ├── LoggingAPIViewRequest.md
│ │ │ ├── LoggingApi.md
│ │ │ ├── Login.md
│ │ │ ├── LoginResponse.md
│ │ │ ├── MLModel.md
│ │ │ ├── MarkForSeenWebNotificationRequest.md
│ │ │ ├── MarkForSeenWebNotificationResponse.md
│ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.md
│ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.md
│ │ │ ├── MarkUnmarkForDeleteProjectsReponse.md
│ │ │ ├── MarkUnmarkForDeleteProjectsRequest.md
│ │ │ ├── MediaDataApi.md
│ │ │ ├── MenuGroup.md
│ │ │ ├── MenuItem.md
│ │ │ ├── NotificationsApi.md
│ │ │ ├── Party.md
│ │ │ ├── PartySimilarity.md
│ │ │ ├── PartySimilarityForm.md
│ │ │ ├── PartyUsage.md
│ │ │ ├── PercentUsage.md
│ │ │ ├── ProjectActiveTasks.md
│ │ │ ├── ProjectActiveTasksTasks.md
│ │ │ ├── ProjectAnnotationsAssigneesResponse.md
│ │ │ ├── ProjectApi.md
│ │ │ ├── ProjectAppVar.md
│ │ │ ├── ProjectClustering.md
│ │ │ ├── ProjectClusteringDocumentClusters.md
│ │ │ ├── ProjectClusteringDocumentClustersInner.md
│ │ │ ├── ProjectClusteringStatusResponse.md
│ │ │ ├── ProjectCreate.md
│ │ │ ├── ProjectDetail.md
│ │ │ ├── ProjectDetailOwnersData.md
│ │ │ ├── ProjectDetailOwnersDataInner.md
│ │ │ ├── ProjectDocumentSimilarity.md
│ │ │ ├── ProjectDocumentSimilarityResponse.md
│ │ │ ├── ProjectDocumentSimilarityResponseData.md
│ │ │ ├── ProjectDocumentSimilarityResponseDataInner.md
│ │ │ ├── ProjectDocumentsAssigneesResponse.md
│ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.md
│ │ │ ├── ProjectList.md
│ │ │ ├── ProjectListStatusData.md
│ │ │ ├── ProjectListTypeData.md
│ │ │ ├── ProjectProgressResponse.md
│ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.md
│ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.md
│ │ │ ├── ProjectSearchSimilarDocumentsRequest.md
│ │ │ ├── ProjectSearchSimilarTextUnitsRequest.md
│ │ │ ├── ProjectStats.md
│ │ │ ├── ProjectTasks.md
│ │ │ ├── ProjectTextUnitSimilarity.md
│ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.md
│ │ │ ├── ProjectUpdate.md
│ │ │ ├── ProjectUploadSessionFilesResponse.md
│ │ │ ├── ProjectUploadSessionPOSTResponse.md
│ │ │ ├── ProjectUploadSessionProgressResponse.md
│ │ │ ├── RatioUsage.md
│ │ │ ├── RawdbApi.md
│ │ │ ├── RawdbDocumentsPOSTRequest.md
│ │ │ ├── Register.md
│ │ │ ├── RegulationUsage.md
│ │ │ ├── RestAuthApi.md
│ │ │ ├── RestAuthCommonResponse.md
│ │ │ ├── ReviewStatus.md
│ │ │ ├── ReviewStatusDetail.md
│ │ │ ├── ReviewStatusDetailGroupData.md
│ │ │ ├── ReviewStatusGroup.md
│ │ │ ├── SelectProjectsRequest.md
│ │ │ ├── SelectProjectsResponse.md
│ │ │ ├── SendClusterToProjectRequest.md
│ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.md
│ │ │ ├── SetProjectAnnotationsStatusRequest.md
│ │ │ ├── SetProjectDocumentsStatusRequest.md
│ │ │ ├── SimilarProjectTextUnitsRequest.md
│ │ │ ├── SimilarityApi.md
│ │ │ ├── SimilarityForm.md
│ │ │ ├── SimilarityPOSTObjectResponse.md
│ │ │ ├── SimilarityRun.md
│ │ │ ├── SocialAccountsResponse.md
│ │ │ ├── SocialAccountsResponseSocialAccounts.md
│ │ │ ├── SocialClientList.md
│ │ │ ├── SocialClientListUrls.md
│ │ │ ├── SocialLogin.md
│ │ │ ├── Task.md
│ │ │ ├── TaskApi.md
│ │ │ ├── TaskIdResponse.md
│ │ │ ├── TaskLogResponse.md
│ │ │ ├── TaskLogResponseRecords.md
│ │ │ ├── TaskQueue.md
│ │ │ ├── TaskQueueDocumentsData.md
│ │ │ ├── TaskQueueDocumentsDataInner.md
│ │ │ ├── TaskQueueReviewersData.md
│ │ │ ├── TaskQueueReviewersDataInner.md
│ │ │ ├── TermTag.md
│ │ │ ├── TermUsage.md
│ │ │ ├── TextUnitClassification.md
│ │ │ ├── TextUnitClassificationCreate.md
│ │ │ ├── TextUnitClassifier.md
│ │ │ ├── TextUnitClassifierSuggestion.md
│ │ │ ├── TextUnitCluster.md
│ │ │ ├── TextUnitDjangoQL.md
│ │ │ ├── TextUnitSimilarity.md
│ │ │ ├── TextUnitSimilarityByFeaturesForm.md
│ │ │ ├── TrademarkUsage.md
│ │ │ ├── Transformer.md
│ │ │ ├── TusApi.md
│ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.md
│ │ │ ├── Typeahead.md
│ │ │ ├── UpdateProjectDocumentsFieldsRequest.md
│ │ │ ├── UpdateProjectDocumentsFieldsResponse.md
│ │ │ ├── Upload.md
│ │ │ ├── UploadSessionBatchUploadRequest.md
│ │ │ ├── UploadSessionCreate.md
│ │ │ ├── UploadSessionDeleteFileRequest.md
│ │ │ ├── UploadSessionDetail.md
│ │ │ ├── UploadSessionUpdate.md
│ │ │ ├── UrlUsage.md
│ │ │ ├── User.md
│ │ │ ├── UserProfile.md
│ │ │ ├── UserStats.md
│ │ │ ├── UsersApi.md
│ │ │ ├── V1Api.md
│ │ │ ├── VarApi.md
│ │ │ ├── VerifyAuthTokenRequest.md
│ │ │ ├── VerifyAuthTokenResponse.md
│ │ │ ├── VerifyEmail.md
│ │ │ ├── WebNotificationDetail.md
│ │ │ └── WebNotificationDetailNotification.md
│ │ ├── git_push.sh
│ │ ├── mono_nunit_test.sh
│ │ └── src/
│ │ ├── Org.OpenAPITools/
│ │ │ ├── Api/
│ │ │ │ ├── AnalyzeApi.cs
│ │ │ │ ├── ApiApi.cs
│ │ │ │ ├── CommonApi.cs
│ │ │ │ ├── DocumentApi.cs
│ │ │ │ ├── DumpApi.cs
│ │ │ │ ├── ExtractApi.cs
│ │ │ │ ├── LoggingApi.cs
│ │ │ │ ├── MediaDataApi.cs
│ │ │ │ ├── NotificationsApi.cs
│ │ │ │ ├── ProjectApi.cs
│ │ │ │ ├── RawdbApi.cs
│ │ │ │ ├── RestAuthApi.cs
│ │ │ │ ├── SimilarityApi.cs
│ │ │ │ ├── TaskApi.cs
│ │ │ │ ├── TusApi.cs
│ │ │ │ ├── UsersApi.cs
│ │ │ │ ├── V1Api.cs
│ │ │ │ └── VarApi.cs
│ │ │ ├── Client/
│ │ │ │ ├── ApiClient.cs
│ │ │ │ ├── ApiException.cs
│ │ │ │ ├── ApiResponse.cs
│ │ │ │ ├── Configuration.cs
│ │ │ │ ├── ExceptionFactory.cs
│ │ │ │ ├── GlobalConfiguration.cs
│ │ │ │ ├── IApiAccessor.cs
│ │ │ │ ├── IReadableConfiguration.cs
│ │ │ │ └── OpenAPIDateConverter.cs
│ │ │ ├── Model/
│ │ │ │ ├── AccessTokenSchema.cs
│ │ │ │ ├── Action.cs
│ │ │ │ ├── AmountUsage.cs
│ │ │ │ ├── Annotation.cs
│ │ │ │ ├── AnnotationBatchRequest.cs
│ │ │ │ ├── AnnotationBatchResponse.cs
│ │ │ │ ├── AnnotationInDocument.cs
│ │ │ │ ├── AnnotationSuggestRequest.cs
│ │ │ │ ├── AnnotationUpdateResponse.cs
│ │ │ │ ├── AppVar.cs
│ │ │ │ ├── AssignProjectAnnotationsRequest.cs
│ │ │ │ ├── AssignProjectDocumentRequest.cs
│ │ │ │ ├── AssignProjectDocumentsRequest.cs
│ │ │ │ ├── CheckDocumentFieldFormulaRequest.cs
│ │ │ │ ├── CheckNewDocumentFieldFormulaRequest.cs
│ │ │ │ ├── CitationUsage.cs
│ │ │ │ ├── CleanupProjectRequest.cs
│ │ │ │ ├── CloneDocumentFieldRequest.cs
│ │ │ │ ├── CloneDocumentTypeRequest.cs
│ │ │ │ ├── ClusterProjectRequest.cs
│ │ │ │ ├── ClusterProjectResponse.cs
│ │ │ │ ├── Code.cs
│ │ │ │ ├── CopyrightUsage.cs
│ │ │ │ ├── CountSuccessResponse.cs
│ │ │ │ ├── CourtUsage.cs
│ │ │ │ ├── CurrencyUsage.cs
│ │ │ │ ├── CustomPasswordChange.cs
│ │ │ │ ├── CustomPasswordReset.cs
│ │ │ │ ├── CustomPasswordResetConfirm.cs
│ │ │ │ ├── DateDurationUsage.cs
│ │ │ │ ├── DateUsage.cs
│ │ │ │ ├── DateUsageCalendar.cs
│ │ │ │ ├── DateUsageTimeline.cs
│ │ │ │ ├── DefinitionUsage.cs
│ │ │ │ ├── DetectProjectFieldValuesRequest.cs
│ │ │ │ ├── DistanceUsage.cs
│ │ │ │ ├── DocumentCluster.cs
│ │ │ │ ├── DocumentClusterDocumentData.cs
│ │ │ │ ├── DocumentClusterDocumentDataInner.cs
│ │ │ │ ├── DocumentClusterUpdate.cs
│ │ │ │ ├── DocumentDefinitions.cs
│ │ │ │ ├── DocumentDetail.cs
│ │ │ │ ├── DocumentDetailAssigneeData.cs
│ │ │ │ ├── DocumentDetailAvailableAssigneesData.cs
│ │ │ │ ├── DocumentDetailAvailableAssigneesDataInner.cs
│ │ │ │ ├── DocumentDetailNotes.cs
│ │ │ │ ├── DocumentDetailStatusData.cs
│ │ │ │ ├── DocumentDetailUser.cs
│ │ │ │ ├── DocumentDocumentsDownloadZipGET404Response.cs
│ │ │ │ ├── DocumentDownloadZipResponse.cs
│ │ │ │ ├── DocumentFieldAnnotation.cs
│ │ │ │ ├── DocumentFieldCategoryCreate.cs
│ │ │ │ ├── DocumentFieldCategoryList.cs
│ │ │ │ ├── DocumentFieldCategoryListFields.cs
│ │ │ │ ├── DocumentFieldCategoryListFieldsInner.cs
│ │ │ │ ├── DocumentFieldCreate.cs
│ │ │ │ ├── DocumentFieldDetail.cs
│ │ │ │ ├── DocumentFieldDetectorCreate.cs
│ │ │ │ ├── DocumentFieldDetectorDetail.cs
│ │ │ │ ├── DocumentFieldList.cs
│ │ │ │ ├── DocumentFieldListCategory.cs
│ │ │ │ ├── DocumentFieldListFamily.cs
│ │ │ │ ├── DocumentFieldStatsResponse.cs
│ │ │ │ ├── DocumentFieldValue.cs
│ │ │ │ ├── DocumentNoteCreate.cs
│ │ │ │ ├── DocumentNoteDetail.cs
│ │ │ │ ├── DocumentNoteDetailUser.cs
│ │ │ │ ├── DocumentNoteUpdate.cs
│ │ │ │ ├── DocumentPDFRepr.cs
│ │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.cs
│ │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.cs
│ │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.cs
│ │ │ │ ├── DocumentSimilarity.cs
│ │ │ │ ├── DocumentSimilarityByFeaturesForm.cs
│ │ │ │ ├── DocumentSimilarityRun.cs
│ │ │ │ ├── DocumentTypeCreate.cs
│ │ │ │ ├── DocumentTypeDetail.cs
│ │ │ │ ├── DocumentTypeDetailCategories.cs
│ │ │ │ ├── DocumentTypeDetailCategoriesInner.cs
│ │ │ │ ├── DocumentTypeDetailFieldsData.cs
│ │ │ │ ├── DocumentTypeDetailFieldsDataInner.cs
│ │ │ │ ├── DocumentTypeForStats.cs
│ │ │ │ ├── DocumentTypeImportRequest.cs
│ │ │ │ ├── DocumentTypeImportResponse.cs
│ │ │ │ ├── DocumentTypeStats.cs
│ │ │ │ ├── DocumentTypeStatsData.cs
│ │ │ │ ├── DocumentsForUser.cs
│ │ │ │ ├── DocumentsForUserResponse.cs
│ │ │ │ ├── DocumentsForUserResponseData.cs
│ │ │ │ ├── DocumentsForUserResponseDataInner.cs
│ │ │ │ ├── DumpDocumentConfigGET200Response.cs
│ │ │ │ ├── DumpFixture.cs
│ │ │ │ ├── DumpPUTErrorResponse.cs
│ │ │ │ ├── FieldAnnotationStatus.cs
│ │ │ │ ├── GeoAliasUsage.cs
│ │ │ │ ├── GeoEntityList.cs
│ │ │ │ ├── GeoEntityUpdate.cs
│ │ │ │ ├── GeoEntityUsage.cs
│ │ │ │ ├── InlineResponse400.cs
│ │ │ │ ├── InlineResponse404.cs
│ │ │ │ ├── InlineResponse4041.cs
│ │ │ │ ├── LoadFixture.cs
│ │ │ │ ├── LocateItemsRequest.cs
│ │ │ │ ├── LoggingAPIViewRequest.cs
│ │ │ │ ├── Login.cs
│ │ │ │ ├── LoginResponse.cs
│ │ │ │ ├── MLModel.cs
│ │ │ │ ├── MarkForSeenWebNotificationRequest.cs
│ │ │ │ ├── MarkForSeenWebNotificationResponse.cs
│ │ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.cs
│ │ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.cs
│ │ │ │ ├── MarkUnmarkForDeleteProjectsReponse.cs
│ │ │ │ ├── MarkUnmarkForDeleteProjectsRequest.cs
│ │ │ │ ├── MenuGroup.cs
│ │ │ │ ├── MenuItem.cs
│ │ │ │ ├── Party.cs
│ │ │ │ ├── PartySimilarity.cs
│ │ │ │ ├── PartySimilarityForm.cs
│ │ │ │ ├── PartyUsage.cs
│ │ │ │ ├── PercentUsage.cs
│ │ │ │ ├── ProjectActiveTasks.cs
│ │ │ │ ├── ProjectActiveTasksTasks.cs
│ │ │ │ ├── ProjectAnnotationsAssigneesResponse.cs
│ │ │ │ ├── ProjectAppVar.cs
│ │ │ │ ├── ProjectClustering.cs
│ │ │ │ ├── ProjectClusteringDocumentClusters.cs
│ │ │ │ ├── ProjectClusteringDocumentClustersInner.cs
│ │ │ │ ├── ProjectClusteringStatusResponse.cs
│ │ │ │ ├── ProjectCreate.cs
│ │ │ │ ├── ProjectDetail.cs
│ │ │ │ ├── ProjectDetailOwnersData.cs
│ │ │ │ ├── ProjectDetailOwnersDataInner.cs
│ │ │ │ ├── ProjectDocumentSimilarity.cs
│ │ │ │ ├── ProjectDocumentSimilarityResponse.cs
│ │ │ │ ├── ProjectDocumentSimilarityResponseData.cs
│ │ │ │ ├── ProjectDocumentSimilarityResponseDataInner.cs
│ │ │ │ ├── ProjectDocumentsAssigneesResponse.cs
│ │ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.cs
│ │ │ │ ├── ProjectList.cs
│ │ │ │ ├── ProjectListStatusData.cs
│ │ │ │ ├── ProjectListTypeData.cs
│ │ │ │ ├── ProjectProgressResponse.cs
│ │ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.cs
│ │ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.cs
│ │ │ │ ├── ProjectSearchSimilarDocumentsRequest.cs
│ │ │ │ ├── ProjectSearchSimilarTextUnitsRequest.cs
│ │ │ │ ├── ProjectStats.cs
│ │ │ │ ├── ProjectTasks.cs
│ │ │ │ ├── ProjectTextUnitSimilarity.cs
│ │ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.cs
│ │ │ │ ├── ProjectUpdate.cs
│ │ │ │ ├── ProjectUploadSessionFilesResponse.cs
│ │ │ │ ├── ProjectUploadSessionPOSTResponse.cs
│ │ │ │ ├── ProjectUploadSessionProgressResponse.cs
│ │ │ │ ├── RatioUsage.cs
│ │ │ │ ├── RawdbDocumentsPOSTRequest.cs
│ │ │ │ ├── Register.cs
│ │ │ │ ├── RegulationUsage.cs
│ │ │ │ ├── RestAuthCommonResponse.cs
│ │ │ │ ├── ReviewStatus.cs
│ │ │ │ ├── ReviewStatusDetail.cs
│ │ │ │ ├── ReviewStatusDetailGroupData.cs
│ │ │ │ ├── ReviewStatusGroup.cs
│ │ │ │ ├── SelectProjectsRequest.cs
│ │ │ │ ├── SelectProjectsResponse.cs
│ │ │ │ ├── SendClusterToProjectRequest.cs
│ │ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.cs
│ │ │ │ ├── SetProjectAnnotationsStatusRequest.cs
│ │ │ │ ├── SetProjectDocumentsStatusRequest.cs
│ │ │ │ ├── SimilarProjectTextUnitsRequest.cs
│ │ │ │ ├── SimilarityForm.cs
│ │ │ │ ├── SimilarityPOSTObjectResponse.cs
│ │ │ │ ├── SimilarityRun.cs
│ │ │ │ ├── SocialAccountsResponse.cs
│ │ │ │ ├── SocialAccountsResponseSocialAccounts.cs
│ │ │ │ ├── SocialClientList.cs
│ │ │ │ ├── SocialClientListUrls.cs
│ │ │ │ ├── SocialLogin.cs
│ │ │ │ ├── Task.cs
│ │ │ │ ├── TaskIdResponse.cs
│ │ │ │ ├── TaskLogResponse.cs
│ │ │ │ ├── TaskLogResponseRecords.cs
│ │ │ │ ├── TaskQueue.cs
│ │ │ │ ├── TaskQueueDocumentsData.cs
│ │ │ │ ├── TaskQueueDocumentsDataInner.cs
│ │ │ │ ├── TaskQueueReviewersData.cs
│ │ │ │ ├── TaskQueueReviewersDataInner.cs
│ │ │ │ ├── TermTag.cs
│ │ │ │ ├── TermUsage.cs
│ │ │ │ ├── TextUnitClassification.cs
│ │ │ │ ├── TextUnitClassificationCreate.cs
│ │ │ │ ├── TextUnitClassifier.cs
│ │ │ │ ├── TextUnitClassifierSuggestion.cs
│ │ │ │ ├── TextUnitCluster.cs
│ │ │ │ ├── TextUnitDjangoQL.cs
│ │ │ │ ├── TextUnitSimilarity.cs
│ │ │ │ ├── TextUnitSimilarityByFeaturesForm.cs
│ │ │ │ ├── TrademarkUsage.cs
│ │ │ │ ├── Transformer.cs
│ │ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.cs
│ │ │ │ ├── Typeahead.cs
│ │ │ │ ├── UpdateProjectDocumentsFieldsRequest.cs
│ │ │ │ ├── UpdateProjectDocumentsFieldsResponse.cs
│ │ │ │ ├── Upload.cs
│ │ │ │ ├── UploadSessionBatchUploadRequest.cs
│ │ │ │ ├── UploadSessionCreate.cs
│ │ │ │ ├── UploadSessionDeleteFileRequest.cs
│ │ │ │ ├── UploadSessionDetail.cs
│ │ │ │ ├── UploadSessionUpdate.cs
│ │ │ │ ├── UrlUsage.cs
│ │ │ │ ├── User.cs
│ │ │ │ ├── UserProfile.cs
│ │ │ │ ├── UserStats.cs
│ │ │ │ ├── VerifyAuthTokenRequest.cs
│ │ │ │ ├── VerifyAuthTokenResponse.cs
│ │ │ │ ├── VerifyEmail.cs
│ │ │ │ ├── WebNotificationDetail.cs
│ │ │ │ └── WebNotificationDetailNotification.cs
│ │ │ ├── Org.OpenAPITools.csproj
│ │ │ ├── Org.OpenAPITools.nuspec
│ │ │ ├── Properties/
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ └── Org.OpenAPITools.Test/
│ │ ├── Api/
│ │ │ ├── AnalyzeApiTests.cs
│ │ │ ├── ApiApiTests.cs
│ │ │ ├── CommonApiTests.cs
│ │ │ ├── DocumentApiTests.cs
│ │ │ ├── DumpApiTests.cs
│ │ │ ├── ExtractApiTests.cs
│ │ │ ├── LoggingApiTests.cs
│ │ │ ├── MediaDataApiTests.cs
│ │ │ ├── NotificationsApiTests.cs
│ │ │ ├── ProjectApiTests.cs
│ │ │ ├── RawdbApiTests.cs
│ │ │ ├── RestAuthApiTests.cs
│ │ │ ├── SimilarityApiTests.cs
│ │ │ ├── TaskApiTests.cs
│ │ │ ├── TusApiTests.cs
│ │ │ ├── UsersApiTests.cs
│ │ │ ├── V1ApiTests.cs
│ │ │ └── VarApiTests.cs
│ │ ├── Model/
│ │ │ ├── AccessTokenSchemaTests.cs
│ │ │ ├── ActionTests.cs
│ │ │ ├── AmountUsageTests.cs
│ │ │ ├── AnnotationBatchRequestTests.cs
│ │ │ ├── AnnotationBatchResponseTests.cs
│ │ │ ├── AnnotationInDocumentTests.cs
│ │ │ ├── AnnotationSuggestRequestTests.cs
│ │ │ ├── AnnotationTests.cs
│ │ │ ├── AnnotationUpdateResponseTests.cs
│ │ │ ├── AppVarTests.cs
│ │ │ ├── AssignProjectAnnotationsRequestTests.cs
│ │ │ ├── AssignProjectDocumentRequestTests.cs
│ │ │ ├── AssignProjectDocumentsRequestTests.cs
│ │ │ ├── CheckDocumentFieldFormulaRequestTests.cs
│ │ │ ├── CheckNewDocumentFieldFormulaRequestTests.cs
│ │ │ ├── CitationUsageTests.cs
│ │ │ ├── CleanupProjectRequestTests.cs
│ │ │ ├── CloneDocumentFieldRequestTests.cs
│ │ │ ├── CloneDocumentTypeRequestTests.cs
│ │ │ ├── ClusterProjectRequestTests.cs
│ │ │ ├── ClusterProjectResponseTests.cs
│ │ │ ├── CodeTests.cs
│ │ │ ├── CopyrightUsageTests.cs
│ │ │ ├── CountSuccessResponseTests.cs
│ │ │ ├── CourtUsageTests.cs
│ │ │ ├── CurrencyUsageTests.cs
│ │ │ ├── CustomPasswordChangeTests.cs
│ │ │ ├── CustomPasswordResetConfirmTests.cs
│ │ │ ├── CustomPasswordResetTests.cs
│ │ │ ├── DateDurationUsageTests.cs
│ │ │ ├── DateUsageCalendarTests.cs
│ │ │ ├── DateUsageTests.cs
│ │ │ ├── DateUsageTimelineTests.cs
│ │ │ ├── DefinitionUsageTests.cs
│ │ │ ├── DetectProjectFieldValuesRequestTests.cs
│ │ │ ├── DistanceUsageTests.cs
│ │ │ ├── DocumentClusterDocumentDataInnerTests.cs
│ │ │ ├── DocumentClusterDocumentDataTests.cs
│ │ │ ├── DocumentClusterTests.cs
│ │ │ ├── DocumentClusterUpdateTests.cs
│ │ │ ├── DocumentDefinitionsTests.cs
│ │ │ ├── DocumentDetailAssigneeDataTests.cs
│ │ │ ├── DocumentDetailAvailableAssigneesDataInnerTests.cs
│ │ │ ├── DocumentDetailAvailableAssigneesDataTests.cs
│ │ │ ├── DocumentDetailNotesTests.cs
│ │ │ ├── DocumentDetailStatusDataTests.cs
│ │ │ ├── DocumentDetailTests.cs
│ │ │ ├── DocumentDetailUserTests.cs
│ │ │ ├── DocumentDocumentsDownloadZipGET404ResponseTests.cs
│ │ │ ├── DocumentDownloadZipResponseTests.cs
│ │ │ ├── DocumentFieldAnnotationTests.cs
│ │ │ ├── DocumentFieldCategoryCreateTests.cs
│ │ │ ├── DocumentFieldCategoryListFieldsInnerTests.cs
│ │ │ ├── DocumentFieldCategoryListFieldsTests.cs
│ │ │ ├── DocumentFieldCategoryListTests.cs
│ │ │ ├── DocumentFieldCreateTests.cs
│ │ │ ├── DocumentFieldDetailTests.cs
│ │ │ ├── DocumentFieldDetectorCreateTests.cs
│ │ │ ├── DocumentFieldDetectorDetailTests.cs
│ │ │ ├── DocumentFieldListCategoryTests.cs
│ │ │ ├── DocumentFieldListFamilyTests.cs
│ │ │ ├── DocumentFieldListTests.cs
│ │ │ ├── DocumentFieldStatsResponseTests.cs
│ │ │ ├── DocumentFieldValueTests.cs
│ │ │ ├── DocumentNoteCreateTests.cs
│ │ │ ├── DocumentNoteDetailTests.cs
│ │ │ ├── DocumentNoteDetailUserTests.cs
│ │ │ ├── DocumentNoteUpdateTests.cs
│ │ │ ├── DocumentPDFReprTests.cs
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInnerTests.cs
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestTests.cs
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponseTests.cs
│ │ │ ├── DocumentSimilarityByFeaturesFormTests.cs
│ │ │ ├── DocumentSimilarityRunTests.cs
│ │ │ ├── DocumentSimilarityTests.cs
│ │ │ ├── DocumentTypeCreateTests.cs
│ │ │ ├── DocumentTypeDetailCategoriesInnerTests.cs
│ │ │ ├── DocumentTypeDetailCategoriesTests.cs
│ │ │ ├── DocumentTypeDetailFieldsDataInnerTests.cs
│ │ │ ├── DocumentTypeDetailFieldsDataTests.cs
│ │ │ ├── DocumentTypeDetailTests.cs
│ │ │ ├── DocumentTypeForStatsTests.cs
│ │ │ ├── DocumentTypeImportRequestTests.cs
│ │ │ ├── DocumentTypeImportResponseTests.cs
│ │ │ ├── DocumentTypeStatsDataTests.cs
│ │ │ ├── DocumentTypeStatsTests.cs
│ │ │ ├── DocumentsForUserResponseDataInnerTests.cs
│ │ │ ├── DocumentsForUserResponseDataTests.cs
│ │ │ ├── DocumentsForUserResponseTests.cs
│ │ │ ├── DocumentsForUserTests.cs
│ │ │ ├── DumpDocumentConfigGET200ResponseTests.cs
│ │ │ ├── DumpFixtureTests.cs
│ │ │ ├── DumpPUTErrorResponseTests.cs
│ │ │ ├── FieldAnnotationStatusTests.cs
│ │ │ ├── GeoAliasUsageTests.cs
│ │ │ ├── GeoEntityListTests.cs
│ │ │ ├── GeoEntityUpdateTests.cs
│ │ │ ├── GeoEntityUsageTests.cs
│ │ │ ├── InlineResponse400Tests.cs
│ │ │ ├── InlineResponse4041Tests.cs
│ │ │ ├── InlineResponse404Tests.cs
│ │ │ ├── LoadFixtureTests.cs
│ │ │ ├── LocateItemsRequestTests.cs
│ │ │ ├── LoggingAPIViewRequestTests.cs
│ │ │ ├── LoginResponseTests.cs
│ │ │ ├── LoginTests.cs
│ │ │ ├── MLModelTests.cs
│ │ │ ├── MarkForSeenWebNotificationRequestTests.cs
│ │ │ ├── MarkForSeenWebNotificationResponseTests.cs
│ │ │ ├── MarkUnmarkForDeleteDocumentsRequestTests.cs
│ │ │ ├── MarkUnmarkForDeleteDocumentsResponseTests.cs
│ │ │ ├── MarkUnmarkForDeleteProjectsReponseTests.cs
│ │ │ ├── MarkUnmarkForDeleteProjectsRequestTests.cs
│ │ │ ├── MenuGroupTests.cs
│ │ │ ├── MenuItemTests.cs
│ │ │ ├── PartySimilarityFormTests.cs
│ │ │ ├── PartySimilarityTests.cs
│ │ │ ├── PartyTests.cs
│ │ │ ├── PartyUsageTests.cs
│ │ │ ├── PercentUsageTests.cs
│ │ │ ├── ProjectActiveTasksTasksTests.cs
│ │ │ ├── ProjectActiveTasksTests.cs
│ │ │ ├── ProjectAnnotationsAssigneesResponseTests.cs
│ │ │ ├── ProjectAppVarTests.cs
│ │ │ ├── ProjectClusteringDocumentClustersInnerTests.cs
│ │ │ ├── ProjectClusteringDocumentClustersTests.cs
│ │ │ ├── ProjectClusteringStatusResponseTests.cs
│ │ │ ├── ProjectClusteringTests.cs
│ │ │ ├── ProjectCreateTests.cs
│ │ │ ├── ProjectDetailOwnersDataInnerTests.cs
│ │ │ ├── ProjectDetailOwnersDataTests.cs
│ │ │ ├── ProjectDetailTests.cs
│ │ │ ├── ProjectDocumentSimilarityResponseDataInnerTests.cs
│ │ │ ├── ProjectDocumentSimilarityResponseDataTests.cs
│ │ │ ├── ProjectDocumentSimilarityResponseTests.cs
│ │ │ ├── ProjectDocumentSimilarityTests.cs
│ │ │ ├── ProjectDocumentsAssigneesResponseTests.cs
│ │ │ ├── ProjectDocumentsSimilarityByVectorsFormTests.cs
│ │ │ ├── ProjectListStatusDataTests.cs
│ │ │ ├── ProjectListTests.cs
│ │ │ ├── ProjectListTypeDataTests.cs
│ │ │ ├── ProjectProgressResponseTests.cs
│ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404ResponseTests.cs
│ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200ResponseTests.cs
│ │ │ ├── ProjectSearchSimilarDocumentsRequestTests.cs
│ │ │ ├── ProjectSearchSimilarTextUnitsRequestTests.cs
│ │ │ ├── ProjectStatsTests.cs
│ │ │ ├── ProjectTasksTests.cs
│ │ │ ├── ProjectTextUnitSimilarityTests.cs
│ │ │ ├── ProjectTextUnitsSimilarityByVectorsFormTests.cs
│ │ │ ├── ProjectUpdateTests.cs
│ │ │ ├── ProjectUploadSessionFilesResponseTests.cs
│ │ │ ├── ProjectUploadSessionPOSTResponseTests.cs
│ │ │ ├── ProjectUploadSessionProgressResponseTests.cs
│ │ │ ├── RatioUsageTests.cs
│ │ │ ├── RawdbDocumentsPOSTRequestTests.cs
│ │ │ ├── RegisterTests.cs
│ │ │ ├── RegulationUsageTests.cs
│ │ │ ├── RestAuthCommonResponseTests.cs
│ │ │ ├── ReviewStatusDetailGroupDataTests.cs
│ │ │ ├── ReviewStatusDetailTests.cs
│ │ │ ├── ReviewStatusGroupTests.cs
│ │ │ ├── ReviewStatusTests.cs
│ │ │ ├── SelectProjectsRequestTests.cs
│ │ │ ├── SelectProjectsResponseTests.cs
│ │ │ ├── SendClusterToProjectRequestTests.cs
│ │ │ ├── SetProjectAnnotationsStatusAsyncResponseTests.cs
│ │ │ ├── SetProjectAnnotationsStatusRequestTests.cs
│ │ │ ├── SetProjectDocumentsStatusRequestTests.cs
│ │ │ ├── SimilarProjectTextUnitsRequestTests.cs
│ │ │ ├── SimilarityFormTests.cs
│ │ │ ├── SimilarityPOSTObjectResponseTests.cs
│ │ │ ├── SimilarityRunTests.cs
│ │ │ ├── SocialAccountsResponseSocialAccountsTests.cs
│ │ │ ├── SocialAccountsResponseTests.cs
│ │ │ ├── SocialClientListTests.cs
│ │ │ ├── SocialClientListUrlsTests.cs
│ │ │ ├── SocialLoginTests.cs
│ │ │ ├── TaskIdResponseTests.cs
│ │ │ ├── TaskLogResponseRecordsTests.cs
│ │ │ ├── TaskLogResponseTests.cs
│ │ │ ├── TaskQueueDocumentsDataInnerTests.cs
│ │ │ ├── TaskQueueDocumentsDataTests.cs
│ │ │ ├── TaskQueueReviewersDataInnerTests.cs
│ │ │ ├── TaskQueueReviewersDataTests.cs
│ │ │ ├── TaskQueueTests.cs
│ │ │ ├── TaskTests.cs
│ │ │ ├── TermTagTests.cs
│ │ │ ├── TermUsageTests.cs
│ │ │ ├── TextUnitClassificationCreateTests.cs
│ │ │ ├── TextUnitClassificationTests.cs
│ │ │ ├── TextUnitClassifierSuggestionTests.cs
│ │ │ ├── TextUnitClassifierTests.cs
│ │ │ ├── TextUnitClusterTests.cs
│ │ │ ├── TextUnitDjangoQLTests.cs
│ │ │ ├── TextUnitSimilarityByFeaturesFormTests.cs
│ │ │ ├── TextUnitSimilarityTests.cs
│ │ │ ├── TrademarkUsageTests.cs
│ │ │ ├── TransformerTests.cs
│ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400ResponseTests.cs
│ │ │ ├── TypeaheadTests.cs
│ │ │ ├── UpdateProjectDocumentsFieldsRequestTests.cs
│ │ │ ├── UpdateProjectDocumentsFieldsResponseTests.cs
│ │ │ ├── UploadSessionBatchUploadRequestTests.cs
│ │ │ ├── UploadSessionCreateTests.cs
│ │ │ ├── UploadSessionDeleteFileRequestTests.cs
│ │ │ ├── UploadSessionDetailTests.cs
│ │ │ ├── UploadSessionUpdateTests.cs
│ │ │ ├── UploadTests.cs
│ │ │ ├── UrlUsageTests.cs
│ │ │ ├── UserProfileTests.cs
│ │ │ ├── UserStatsTests.cs
│ │ │ ├── UserTests.cs
│ │ │ ├── VerifyAuthTokenRequestTests.cs
│ │ │ ├── VerifyAuthTokenResponseTests.cs
│ │ │ ├── VerifyEmailTests.cs
│ │ │ ├── WebNotificationDetailNotificationTests.cs
│ │ │ └── WebNotificationDetailTests.cs
│ │ ├── Org.OpenAPITools.Test.csproj
│ │ └── packages.config
│ ├── java/
│ │ ├── java.conf
│ │ └── sdk/
│ │ ├── .github/
│ │ │ └── workflows/
│ │ │ └── maven.yml
│ │ ├── .gitignore
│ │ ├── .openapi-generator/
│ │ │ ├── FILES
│ │ │ └── VERSION
│ │ ├── .openapi-generator-ignore
│ │ ├── .travis.yml
│ │ ├── README.md
│ │ ├── api/
│ │ │ └── openapi.yaml
│ │ ├── build.gradle
│ │ ├── build.sbt
│ │ ├── docs/
│ │ │ ├── AccessTokenSchema.md
│ │ │ ├── Action.md
│ │ │ ├── AmountUsage.md
│ │ │ ├── AnalyzeApi.md
│ │ │ ├── Annotation.md
│ │ │ ├── AnnotationBatchRequest.md
│ │ │ ├── AnnotationBatchResponse.md
│ │ │ ├── AnnotationInDocument.md
│ │ │ ├── AnnotationSuggestRequest.md
│ │ │ ├── AnnotationUpdateResponse.md
│ │ │ ├── ApiApi.md
│ │ │ ├── AppVar.md
│ │ │ ├── AssignProjectAnnotationsRequest.md
│ │ │ ├── AssignProjectDocumentRequest.md
│ │ │ ├── AssignProjectDocumentsRequest.md
│ │ │ ├── CheckDocumentFieldFormulaRequest.md
│ │ │ ├── CheckNewDocumentFieldFormulaRequest.md
│ │ │ ├── CitationUsage.md
│ │ │ ├── CleanupProjectRequest.md
│ │ │ ├── CloneDocumentFieldRequest.md
│ │ │ ├── CloneDocumentTypeRequest.md
│ │ │ ├── ClusterProjectRequest.md
│ │ │ ├── ClusterProjectResponse.md
│ │ │ ├── Code.md
│ │ │ ├── CommonApi.md
│ │ │ ├── CopyrightUsage.md
│ │ │ ├── CountSuccessResponse.md
│ │ │ ├── CourtUsage.md
│ │ │ ├── CurrencyUsage.md
│ │ │ ├── CustomPasswordChange.md
│ │ │ ├── CustomPasswordReset.md
│ │ │ ├── CustomPasswordResetConfirm.md
│ │ │ ├── DateDurationUsage.md
│ │ │ ├── DateUsage.md
│ │ │ ├── DateUsageCalendar.md
│ │ │ ├── DateUsageTimeline.md
│ │ │ ├── DefinitionUsage.md
│ │ │ ├── DetectProjectFieldValuesRequest.md
│ │ │ ├── DistanceUsage.md
│ │ │ ├── DocumentApi.md
│ │ │ ├── DocumentCluster.md
│ │ │ ├── DocumentClusterDocumentData.md
│ │ │ ├── DocumentClusterDocumentDataInner.md
│ │ │ ├── DocumentClusterUpdate.md
│ │ │ ├── DocumentDefinitions.md
│ │ │ ├── DocumentDetail.md
│ │ │ ├── DocumentDetailAssigneeData.md
│ │ │ ├── DocumentDetailAvailableAssigneesData.md
│ │ │ ├── DocumentDetailAvailableAssigneesDataInner.md
│ │ │ ├── DocumentDetailNotes.md
│ │ │ ├── DocumentDetailStatusData.md
│ │ │ ├── DocumentDetailUser.md
│ │ │ ├── DocumentDocumentsDownloadZipGET404Response.md
│ │ │ ├── DocumentDownloadZipResponse.md
│ │ │ ├── DocumentFieldAnnotation.md
│ │ │ ├── DocumentFieldCategoryCreate.md
│ │ │ ├── DocumentFieldCategoryList.md
│ │ │ ├── DocumentFieldCategoryListFields.md
│ │ │ ├── DocumentFieldCategoryListFieldsInner.md
│ │ │ ├── DocumentFieldCreate.md
│ │ │ ├── DocumentFieldDetail.md
│ │ │ ├── DocumentFieldDetectorCreate.md
│ │ │ ├── DocumentFieldDetectorDetail.md
│ │ │ ├── DocumentFieldList.md
│ │ │ ├── DocumentFieldListCategory.md
│ │ │ ├── DocumentFieldListFamily.md
│ │ │ ├── DocumentFieldStatsResponse.md
│ │ │ ├── DocumentFieldValue.md
│ │ │ ├── DocumentNoteCreate.md
│ │ │ ├── DocumentNoteDetail.md
│ │ │ ├── DocumentNoteDetailUser.md
│ │ │ ├── DocumentNoteUpdate.md
│ │ │ ├── DocumentPDFRepr.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.md
│ │ │ ├── DocumentSimilarity.md
│ │ │ ├── DocumentSimilarityByFeaturesForm.md
│ │ │ ├── DocumentSimilarityRun.md
│ │ │ ├── DocumentTypeCreate.md
│ │ │ ├── DocumentTypeDetail.md
│ │ │ ├── DocumentTypeDetailCategories.md
│ │ │ ├── DocumentTypeDetailCategoriesInner.md
│ │ │ ├── DocumentTypeDetailFieldsData.md
│ │ │ ├── DocumentTypeDetailFieldsDataInner.md
│ │ │ ├── DocumentTypeForStats.md
│ │ │ ├── DocumentTypeImportRequest.md
│ │ │ ├── DocumentTypeImportResponse.md
│ │ │ ├── DocumentTypeStats.md
│ │ │ ├── DocumentTypeStatsData.md
│ │ │ ├── DocumentsForUser.md
│ │ │ ├── DocumentsForUserResponse.md
│ │ │ ├── DocumentsForUserResponseData.md
│ │ │ ├── DocumentsForUserResponseDataInner.md
│ │ │ ├── DumpApi.md
│ │ │ ├── DumpDocumentConfigGET200Response.md
│ │ │ ├── DumpFixture.md
│ │ │ ├── DumpPUTErrorResponse.md
│ │ │ ├── ExtractApi.md
│ │ │ ├── FieldAnnotationStatus.md
│ │ │ ├── GeoAliasUsage.md
│ │ │ ├── GeoEntityList.md
│ │ │ ├── GeoEntityUpdate.md
│ │ │ ├── GeoEntityUsage.md
│ │ │ ├── InlineResponse400.md
│ │ │ ├── InlineResponse404.md
│ │ │ ├── InlineResponse4041.md
│ │ │ ├── LoadFixture.md
│ │ │ ├── LocateItemsRequest.md
│ │ │ ├── LoggingAPIViewRequest.md
│ │ │ ├── LoggingApi.md
│ │ │ ├── Login.md
│ │ │ ├── LoginResponse.md
│ │ │ ├── MLModel.md
│ │ │ ├── MarkForSeenWebNotificationRequest.md
│ │ │ ├── MarkForSeenWebNotificationResponse.md
│ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.md
│ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.md
│ │ │ ├── MarkUnmarkForDeleteProjectsReponse.md
│ │ │ ├── MarkUnmarkForDeleteProjectsRequest.md
│ │ │ ├── MediaDataApi.md
│ │ │ ├── MenuGroup.md
│ │ │ ├── MenuItem.md
│ │ │ ├── NotificationsApi.md
│ │ │ ├── Party.md
│ │ │ ├── PartySimilarity.md
│ │ │ ├── PartySimilarityForm.md
│ │ │ ├── PartyUsage.md
│ │ │ ├── PercentUsage.md
│ │ │ ├── ProjectActiveTasks.md
│ │ │ ├── ProjectActiveTasksTasks.md
│ │ │ ├── ProjectAnnotationsAssigneesResponse.md
│ │ │ ├── ProjectApi.md
│ │ │ ├── ProjectAppVar.md
│ │ │ ├── ProjectClustering.md
│ │ │ ├── ProjectClusteringDocumentClusters.md
│ │ │ ├── ProjectClusteringDocumentClustersInner.md
│ │ │ ├── ProjectClusteringStatusResponse.md
│ │ │ ├── ProjectCreate.md
│ │ │ ├── ProjectDetail.md
│ │ │ ├── ProjectDetailOwnersData.md
│ │ │ ├── ProjectDetailOwnersDataInner.md
│ │ │ ├── ProjectDocumentSimilarity.md
│ │ │ ├── ProjectDocumentSimilarityResponse.md
│ │ │ ├── ProjectDocumentSimilarityResponseData.md
│ │ │ ├── ProjectDocumentSimilarityResponseDataInner.md
│ │ │ ├── ProjectDocumentsAssigneesResponse.md
│ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.md
│ │ │ ├── ProjectList.md
│ │ │ ├── ProjectListStatusData.md
│ │ │ ├── ProjectListTypeData.md
│ │ │ ├── ProjectProgressResponse.md
│ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.md
│ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.md
│ │ │ ├── ProjectSearchSimilarDocumentsRequest.md
│ │ │ ├── ProjectSearchSimilarTextUnitsRequest.md
│ │ │ ├── ProjectStats.md
│ │ │ ├── ProjectTasks.md
│ │ │ ├── ProjectTextUnitSimilarity.md
│ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.md
│ │ │ ├── ProjectUpdate.md
│ │ │ ├── ProjectUploadSessionFilesResponse.md
│ │ │ ├── ProjectUploadSessionPOSTResponse.md
│ │ │ ├── ProjectUploadSessionProgressResponse.md
│ │ │ ├── RatioUsage.md
│ │ │ ├── RawdbApi.md
│ │ │ ├── RawdbDocumentsPOSTRequest.md
│ │ │ ├── Register.md
│ │ │ ├── RegulationUsage.md
│ │ │ ├── RestAuthApi.md
│ │ │ ├── RestAuthCommonResponse.md
│ │ │ ├── ReviewStatus.md
│ │ │ ├── ReviewStatusDetail.md
│ │ │ ├── ReviewStatusDetailGroupData.md
│ │ │ ├── ReviewStatusGroup.md
│ │ │ ├── SelectProjectsRequest.md
│ │ │ ├── SelectProjectsResponse.md
│ │ │ ├── SendClusterToProjectRequest.md
│ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.md
│ │ │ ├── SetProjectAnnotationsStatusRequest.md
│ │ │ ├── SetProjectDocumentsStatusRequest.md
│ │ │ ├── SimilarProjectTextUnitsRequest.md
│ │ │ ├── SimilarityApi.md
│ │ │ ├── SimilarityForm.md
│ │ │ ├── SimilarityPOSTObjectResponse.md
│ │ │ ├── SimilarityRun.md
│ │ │ ├── SocialAccountsResponse.md
│ │ │ ├── SocialAccountsResponseSocialAccounts.md
│ │ │ ├── SocialClientList.md
│ │ │ ├── SocialClientListUrls.md
│ │ │ ├── SocialLogin.md
│ │ │ ├── Task.md
│ │ │ ├── TaskApi.md
│ │ │ ├── TaskIdResponse.md
│ │ │ ├── TaskLogResponse.md
│ │ │ ├── TaskLogResponseRecords.md
│ │ │ ├── TaskQueue.md
│ │ │ ├── TaskQueueDocumentsData.md
│ │ │ ├── TaskQueueDocumentsDataInner.md
│ │ │ ├── TaskQueueReviewersData.md
│ │ │ ├── TaskQueueReviewersDataInner.md
│ │ │ ├── TermTag.md
│ │ │ ├── TermUsage.md
│ │ │ ├── TextUnitClassification.md
│ │ │ ├── TextUnitClassificationCreate.md
│ │ │ ├── TextUnitClassifier.md
│ │ │ ├── TextUnitClassifierSuggestion.md
│ │ │ ├── TextUnitCluster.md
│ │ │ ├── TextUnitDjangoQL.md
│ │ │ ├── TextUnitSimilarity.md
│ │ │ ├── TextUnitSimilarityByFeaturesForm.md
│ │ │ ├── TrademarkUsage.md
│ │ │ ├── Transformer.md
│ │ │ ├── TusApi.md
│ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.md
│ │ │ ├── Typeahead.md
│ │ │ ├── UpdateProjectDocumentsFieldsRequest.md
│ │ │ ├── UpdateProjectDocumentsFieldsResponse.md
│ │ │ ├── Upload.md
│ │ │ ├── UploadSessionBatchUploadRequest.md
│ │ │ ├── UploadSessionCreate.md
│ │ │ ├── UploadSessionDeleteFileRequest.md
│ │ │ ├── UploadSessionDetail.md
│ │ │ ├── UploadSessionUpdate.md
│ │ │ ├── UrlUsage.md
│ │ │ ├── User.md
│ │ │ ├── UserProfile.md
│ │ │ ├── UserStats.md
│ │ │ ├── UsersApi.md
│ │ │ ├── V1Api.md
│ │ │ ├── VarApi.md
│ │ │ ├── VerifyAuthTokenRequest.md
│ │ │ ├── VerifyAuthTokenResponse.md
│ │ │ ├── VerifyEmail.md
│ │ │ ├── WebNotificationDetail.md
│ │ │ └── WebNotificationDetailNotification.md
│ │ ├── git_push.sh
│ │ ├── gradle/
│ │ │ └── wrapper/
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── pom.xml
│ │ ├── settings.gradle
│ │ └── src/
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java/
│ │ │ └── org/
│ │ │ └── openapitools/
│ │ │ └── client/
│ │ │ ├── ApiCallback.java
│ │ │ ├── ApiClient.java
│ │ │ ├── ApiException.java
│ │ │ ├── ApiResponse.java
│ │ │ ├── Configuration.java
│ │ │ ├── GzipRequestInterceptor.java
│ │ │ ├── JSON.java
│ │ │ ├── Pair.java
│ │ │ ├── ProgressRequestBody.java
│ │ │ ├── ProgressResponseBody.java
│ │ │ ├── ServerConfiguration.java
│ │ │ ├── ServerVariable.java
│ │ │ ├── StringUtil.java
│ │ │ ├── api/
│ │ │ │ ├── AnalyzeApi.java
│ │ │ │ ├── ApiApi.java
│ │ │ │ ├── CommonApi.java
│ │ │ │ ├── DocumentApi.java
│ │ │ │ ├── DumpApi.java
│ │ │ │ ├── ExtractApi.java
│ │ │ │ ├── LoggingApi.java
│ │ │ │ ├── MediaDataApi.java
│ │ │ │ ├── NotificationsApi.java
│ │ │ │ ├── ProjectApi.java
│ │ │ │ ├── RawdbApi.java
│ │ │ │ ├── RestAuthApi.java
│ │ │ │ ├── SimilarityApi.java
│ │ │ │ ├── TaskApi.java
│ │ │ │ ├── TusApi.java
│ │ │ │ ├── UsersApi.java
│ │ │ │ ├── V1Api.java
│ │ │ │ └── VarApi.java
│ │ │ ├── auth/
│ │ │ │ ├── ApiKeyAuth.java
│ │ │ │ ├── Authentication.java
│ │ │ │ ├── HttpBasicAuth.java
│ │ │ │ └── HttpBearerAuth.java
│ │ │ └── model/
│ │ │ ├── AbstractOpenApiSchema.java
│ │ │ ├── AccessTokenSchema.java
│ │ │ ├── Action.java
│ │ │ ├── AmountUsage.java
│ │ │ ├── Annotation.java
│ │ │ ├── AnnotationBatchRequest.java
│ │ │ ├── AnnotationBatchResponse.java
│ │ │ ├── AnnotationInDocument.java
│ │ │ ├── AnnotationSuggestRequest.java
│ │ │ ├── AnnotationUpdateResponse.java
│ │ │ ├── AppVar.java
│ │ │ ├── AssignProjectAnnotationsRequest.java
│ │ │ ├── AssignProjectDocumentRequest.java
│ │ │ ├── AssignProjectDocumentsRequest.java
│ │ │ ├── CheckDocumentFieldFormulaRequest.java
│ │ │ ├── CheckNewDocumentFieldFormulaRequest.java
│ │ │ ├── CitationUsage.java
│ │ │ ├── CleanupProjectRequest.java
│ │ │ ├── CloneDocumentFieldRequest.java
│ │ │ ├── CloneDocumentTypeRequest.java
│ │ │ ├── ClusterProjectRequest.java
│ │ │ ├── ClusterProjectResponse.java
│ │ │ ├── Code.java
│ │ │ ├── CopyrightUsage.java
│ │ │ ├── CountSuccessResponse.java
│ │ │ ├── CourtUsage.java
│ │ │ ├── CurrencyUsage.java
│ │ │ ├── CustomPasswordChange.java
│ │ │ ├── CustomPasswordReset.java
│ │ │ ├── CustomPasswordResetConfirm.java
│ │ │ ├── DateDurationUsage.java
│ │ │ ├── DateUsage.java
│ │ │ ├── DateUsageCalendar.java
│ │ │ ├── DateUsageTimeline.java
│ │ │ ├── DefinitionUsage.java
│ │ │ ├── DetectProjectFieldValuesRequest.java
│ │ │ ├── DistanceUsage.java
│ │ │ ├── DocumentCluster.java
│ │ │ ├── DocumentClusterDocumentData.java
│ │ │ ├── DocumentClusterDocumentDataInner.java
│ │ │ ├── DocumentClusterUpdate.java
│ │ │ ├── DocumentDefinitions.java
│ │ │ ├── DocumentDetail.java
│ │ │ ├── DocumentDetailAssigneeData.java
│ │ │ ├── DocumentDetailAvailableAssigneesData.java
│ │ │ ├── DocumentDetailAvailableAssigneesDataInner.java
│ │ │ ├── DocumentDetailNotes.java
│ │ │ ├── DocumentDetailStatusData.java
│ │ │ ├── DocumentDetailUser.java
│ │ │ ├── DocumentDocumentsDownloadZipGET404Response.java
│ │ │ ├── DocumentDownloadZipResponse.java
│ │ │ ├── DocumentFieldAnnotation.java
│ │ │ ├── DocumentFieldCategoryCreate.java
│ │ │ ├── DocumentFieldCategoryList.java
│ │ │ ├── DocumentFieldCategoryListFields.java
│ │ │ ├── DocumentFieldCategoryListFieldsInner.java
│ │ │ ├── DocumentFieldCreate.java
│ │ │ ├── DocumentFieldDetail.java
│ │ │ ├── DocumentFieldDetectorCreate.java
│ │ │ ├── DocumentFieldDetectorDetail.java
│ │ │ ├── DocumentFieldList.java
│ │ │ ├── DocumentFieldListCategory.java
│ │ │ ├── DocumentFieldListFamily.java
│ │ │ ├── DocumentFieldStatsResponse.java
│ │ │ ├── DocumentFieldValue.java
│ │ │ ├── DocumentNoteCreate.java
│ │ │ ├── DocumentNoteDetail.java
│ │ │ ├── DocumentNoteDetailUser.java
│ │ │ ├── DocumentNoteUpdate.java
│ │ │ ├── DocumentPDFRepr.java
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.java
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.java
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.java
│ │ │ ├── DocumentSimilarity.java
│ │ │ ├── DocumentSimilarityByFeaturesForm.java
│ │ │ ├── DocumentSimilarityRun.java
│ │ │ ├── DocumentTypeCreate.java
│ │ │ ├── DocumentTypeDetail.java
│ │ │ ├── DocumentTypeDetailCategories.java
│ │ │ ├── DocumentTypeDetailCategoriesInner.java
│ │ │ ├── DocumentTypeDetailFieldsData.java
│ │ │ ├── DocumentTypeDetailFieldsDataInner.java
│ │ │ ├── DocumentTypeForStats.java
│ │ │ ├── DocumentTypeImportRequest.java
│ │ │ ├── DocumentTypeImportResponse.java
│ │ │ ├── DocumentTypeStats.java
│ │ │ ├── DocumentTypeStatsData.java
│ │ │ ├── DocumentsForUser.java
│ │ │ ├── DocumentsForUserResponse.java
│ │ │ ├── DocumentsForUserResponseData.java
│ │ │ ├── DocumentsForUserResponseDataInner.java
│ │ │ ├── DumpDocumentConfigGET200Response.java
│ │ │ ├── DumpFixture.java
│ │ │ ├── DumpPUTErrorResponse.java
│ │ │ ├── FieldAnnotationStatus.java
│ │ │ ├── GeoAliasUsage.java
│ │ │ ├── GeoEntityList.java
│ │ │ ├── GeoEntityUpdate.java
│ │ │ ├── GeoEntityUsage.java
│ │ │ ├── InlineResponse400.java
│ │ │ ├── InlineResponse404.java
│ │ │ ├── InlineResponse4041.java
│ │ │ ├── LoadFixture.java
│ │ │ ├── LocateItemsRequest.java
│ │ │ ├── LoggingAPIViewRequest.java
│ │ │ ├── Login.java
│ │ │ ├── LoginResponse.java
│ │ │ ├── MLModel.java
│ │ │ ├── MarkForSeenWebNotificationRequest.java
│ │ │ ├── MarkForSeenWebNotificationResponse.java
│ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.java
│ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.java
│ │ │ ├── MarkUnmarkForDeleteProjectsReponse.java
│ │ │ ├── MarkUnmarkForDeleteProjectsRequest.java
│ │ │ ├── MenuGroup.java
│ │ │ ├── MenuItem.java
│ │ │ ├── Party.java
│ │ │ ├── PartySimilarity.java
│ │ │ ├── PartySimilarityForm.java
│ │ │ ├── PartyUsage.java
│ │ │ ├── PercentUsage.java
│ │ │ ├── ProjectActiveTasks.java
│ │ │ ├── ProjectActiveTasksTasks.java
│ │ │ ├── ProjectAnnotationsAssigneesResponse.java
│ │ │ ├── ProjectAppVar.java
│ │ │ ├── ProjectClustering.java
│ │ │ ├── ProjectClusteringDocumentClusters.java
│ │ │ ├── ProjectClusteringDocumentClustersInner.java
│ │ │ ├── ProjectClusteringStatusResponse.java
│ │ │ ├── ProjectCreate.java
│ │ │ ├── ProjectDetail.java
│ │ │ ├── ProjectDetailOwnersData.java
│ │ │ ├── ProjectDetailOwnersDataInner.java
│ │ │ ├── ProjectDocumentSimilarity.java
│ │ │ ├── ProjectDocumentSimilarityResponse.java
│ │ │ ├── ProjectDocumentSimilarityResponseData.java
│ │ │ ├── ProjectDocumentSimilarityResponseDataInner.java
│ │ │ ├── ProjectDocumentsAssigneesResponse.java
│ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.java
│ │ │ ├── ProjectList.java
│ │ │ ├── ProjectListStatusData.java
│ │ │ ├── ProjectListTypeData.java
│ │ │ ├── ProjectProgressResponse.java
│ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.java
│ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.java
│ │ │ ├── ProjectSearchSimilarDocumentsRequest.java
│ │ │ ├── ProjectSearchSimilarTextUnitsRequest.java
│ │ │ ├── ProjectStats.java
│ │ │ ├── ProjectTasks.java
│ │ │ ├── ProjectTextUnitSimilarity.java
│ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.java
│ │ │ ├── ProjectUpdate.java
│ │ │ ├── ProjectUploadSessionFilesResponse.java
│ │ │ ├── ProjectUploadSessionPOSTResponse.java
│ │ │ ├── ProjectUploadSessionProgressResponse.java
│ │ │ ├── RatioUsage.java
│ │ │ ├── RawdbDocumentsPOSTRequest.java
│ │ │ ├── Register.java
│ │ │ ├── RegulationUsage.java
│ │ │ ├── RestAuthCommonResponse.java
│ │ │ ├── ReviewStatus.java
│ │ │ ├── ReviewStatusDetail.java
│ │ │ ├── ReviewStatusDetailGroupData.java
│ │ │ ├── ReviewStatusGroup.java
│ │ │ ├── SelectProjectsRequest.java
│ │ │ ├── SelectProjectsResponse.java
│ │ │ ├── SendClusterToProjectRequest.java
│ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.java
│ │ │ ├── SetProjectAnnotationsStatusRequest.java
│ │ │ ├── SetProjectDocumentsStatusRequest.java
│ │ │ ├── SimilarProjectTextUnitsRequest.java
│ │ │ ├── SimilarityForm.java
│ │ │ ├── SimilarityPOSTObjectResponse.java
│ │ │ ├── SimilarityRun.java
│ │ │ ├── SocialAccountsResponse.java
│ │ │ ├── SocialAccountsResponseSocialAccounts.java
│ │ │ ├── SocialClientList.java
│ │ │ ├── SocialClientListUrls.java
│ │ │ ├── SocialLogin.java
│ │ │ ├── Task.java
│ │ │ ├── TaskIdResponse.java
│ │ │ ├── TaskLogResponse.java
│ │ │ ├── TaskLogResponseRecords.java
│ │ │ ├── TaskQueue.java
│ │ │ ├── TaskQueueDocumentsData.java
│ │ │ ├── TaskQueueDocumentsDataInner.java
│ │ │ ├── TaskQueueReviewersData.java
│ │ │ ├── TaskQueueReviewersDataInner.java
│ │ │ ├── TermTag.java
│ │ │ ├── TermUsage.java
│ │ │ ├── TextUnitClassification.java
│ │ │ ├── TextUnitClassificationCreate.java
│ │ │ ├── TextUnitClassifier.java
│ │ │ ├── TextUnitClassifierSuggestion.java
│ │ │ ├── TextUnitCluster.java
│ │ │ ├── TextUnitDjangoQL.java
│ │ │ ├── TextUnitSimilarity.java
│ │ │ ├── TextUnitSimilarityByFeaturesForm.java
│ │ │ ├── TrademarkUsage.java
│ │ │ ├── Transformer.java
│ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.java
│ │ │ ├── Typeahead.java
│ │ │ ├── UpdateProjectDocumentsFieldsRequest.java
│ │ │ ├── UpdateProjectDocumentsFieldsResponse.java
│ │ │ ├── Upload.java
│ │ │ ├── UploadSessionBatchUploadRequest.java
│ │ │ ├── UploadSessionCreate.java
│ │ │ ├── UploadSessionDeleteFileRequest.java
│ │ │ ├── UploadSessionDetail.java
│ │ │ ├── UploadSessionUpdate.java
│ │ │ ├── UrlUsage.java
│ │ │ ├── User.java
│ │ │ ├── UserProfile.java
│ │ │ ├── UserStats.java
│ │ │ ├── VerifyAuthTokenRequest.java
│ │ │ ├── VerifyAuthTokenResponse.java
│ │ │ ├── VerifyEmail.java
│ │ │ ├── WebNotificationDetail.java
│ │ │ └── WebNotificationDetailNotification.java
│ │ └── test/
│ │ └── java/
│ │ └── org/
│ │ └── openapitools/
│ │ └── client/
│ │ ├── api/
│ │ │ ├── AnalyzeApiTest.java
│ │ │ ├── ApiApiTest.java
│ │ │ ├── CommonApiTest.java
│ │ │ ├── DocumentApiTest.java
│ │ │ ├── DumpApiTest.java
│ │ │ ├── ExtractApiTest.java
│ │ │ ├── LoggingApiTest.java
│ │ │ ├── MediaDataApiTest.java
│ │ │ ├── NotificationsApiTest.java
│ │ │ ├── ProjectApiTest.java
│ │ │ ├── RawdbApiTest.java
│ │ │ ├── RestAuthApiTest.java
│ │ │ ├── SimilarityApiTest.java
│ │ │ ├── TaskApiTest.java
│ │ │ ├── TusApiTest.java
│ │ │ ├── UsersApiTest.java
│ │ │ ├── V1ApiTest.java
│ │ │ └── VarApiTest.java
│ │ └── model/
│ │ ├── AccessTokenSchemaTest.java
│ │ ├── ActionTest.java
│ │ ├── AmountUsageTest.java
│ │ ├── AnnotationBatchRequestTest.java
│ │ ├── AnnotationBatchResponseTest.java
│ │ ├── AnnotationInDocumentTest.java
│ │ ├── AnnotationSuggestRequestTest.java
│ │ ├── AnnotationTest.java
│ │ ├── AnnotationUpdateResponseTest.java
│ │ ├── AppVarTest.java
│ │ ├── AssignProjectAnnotationsRequestTest.java
│ │ ├── AssignProjectDocumentRequestTest.java
│ │ ├── AssignProjectDocumentsRequestTest.java
│ │ ├── CheckDocumentFieldFormulaRequestTest.java
│ │ ├── CheckNewDocumentFieldFormulaRequestTest.java
│ │ ├── CitationUsageTest.java
│ │ ├── CleanupProjectRequestTest.java
│ │ ├── CloneDocumentFieldRequestTest.java
│ │ ├── CloneDocumentTypeRequestTest.java
│ │ ├── ClusterProjectRequestTest.java
│ │ ├── ClusterProjectResponseTest.java
│ │ ├── CodeTest.java
│ │ ├── CopyrightUsageTest.java
│ │ ├── CountSuccessResponseTest.java
│ │ ├── CourtUsageTest.java
│ │ ├── CurrencyUsageTest.java
│ │ ├── CustomPasswordChangeTest.java
│ │ ├── CustomPasswordResetConfirmTest.java
│ │ ├── CustomPasswordResetTest.java
│ │ ├── DateDurationUsageTest.java
│ │ ├── DateUsageCalendarTest.java
│ │ ├── DateUsageTest.java
│ │ ├── DateUsageTimelineTest.java
│ │ ├── DefinitionUsageTest.java
│ │ ├── DetectProjectFieldValuesRequestTest.java
│ │ ├── DistanceUsageTest.java
│ │ ├── DocumentClusterDocumentDataInnerTest.java
│ │ ├── DocumentClusterDocumentDataTest.java
│ │ ├── DocumentClusterTest.java
│ │ ├── DocumentClusterUpdateTest.java
│ │ ├── DocumentDefinitionsTest.java
│ │ ├── DocumentDetailAssigneeDataTest.java
│ │ ├── DocumentDetailAvailableAssigneesDataInnerTest.java
│ │ ├── DocumentDetailAvailableAssigneesDataTest.java
│ │ ├── DocumentDetailNotesTest.java
│ │ ├── DocumentDetailStatusDataTest.java
│ │ ├── DocumentDetailTest.java
│ │ ├── DocumentDetailUserTest.java
│ │ ├── DocumentDocumentsDownloadZipGET404ResponseTest.java
│ │ ├── DocumentDownloadZipResponseTest.java
│ │ ├── DocumentFieldAnnotationTest.java
│ │ ├── DocumentFieldCategoryCreateTest.java
│ │ ├── DocumentFieldCategoryListFieldsInnerTest.java
│ │ ├── DocumentFieldCategoryListFieldsTest.java
│ │ ├── DocumentFieldCategoryListTest.java
│ │ ├── DocumentFieldCreateTest.java
│ │ ├── DocumentFieldDetailTest.java
│ │ ├── DocumentFieldDetectorCreateTest.java
│ │ ├── DocumentFieldDetectorDetailTest.java
│ │ ├── DocumentFieldListCategoryTest.java
│ │ ├── DocumentFieldListFamilyTest.java
│ │ ├── DocumentFieldListTest.java
│ │ ├── DocumentFieldStatsResponseTest.java
│ │ ├── DocumentFieldValueTest.java
│ │ ├── DocumentNoteCreateTest.java
│ │ ├── DocumentNoteDetailTest.java
│ │ ├── DocumentNoteDetailUserTest.java
│ │ ├── DocumentNoteUpdateTest.java
│ │ ├── DocumentPDFReprTest.java
│ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInnerTest.java
│ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestTest.java
│ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponseTest.java
│ │ ├── DocumentSimilarityByFeaturesFormTest.java
│ │ ├── DocumentSimilarityRunTest.java
│ │ ├── DocumentSimilarityTest.java
│ │ ├── DocumentTypeCreateTest.java
│ │ ├── DocumentTypeDetailCategoriesInnerTest.java
│ │ ├── DocumentTypeDetailCategoriesTest.java
│ │ ├── DocumentTypeDetailFieldsDataInnerTest.java
│ │ ├── DocumentTypeDetailFieldsDataTest.java
│ │ ├── DocumentTypeDetailTest.java
│ │ ├── DocumentTypeForStatsTest.java
│ │ ├── DocumentTypeImportRequestTest.java
│ │ ├── DocumentTypeImportResponseTest.java
│ │ ├── DocumentTypeStatsDataTest.java
│ │ ├── DocumentTypeStatsTest.java
│ │ ├── DocumentsForUserResponseDataInnerTest.java
│ │ ├── DocumentsForUserResponseDataTest.java
│ │ ├── DocumentsForUserResponseTest.java
│ │ ├── DocumentsForUserTest.java
│ │ ├── DumpDocumentConfigGET200ResponseTest.java
│ │ ├── DumpFixtureTest.java
│ │ ├── DumpPUTErrorResponseTest.java
│ │ ├── FieldAnnotationStatusTest.java
│ │ ├── GeoAliasUsageTest.java
│ │ ├── GeoEntityListTest.java
│ │ ├── GeoEntityUpdateTest.java
│ │ ├── GeoEntityUsageTest.java
│ │ ├── InlineResponse400Test.java
│ │ ├── InlineResponse4041Test.java
│ │ ├── InlineResponse404Test.java
│ │ ├── LoadFixtureTest.java
│ │ ├── LocateItemsRequestTest.java
│ │ ├── LoggingAPIViewRequestTest.java
│ │ ├── LoginResponseTest.java
│ │ ├── LoginTest.java
│ │ ├── MLModelTest.java
│ │ ├── MarkForSeenWebNotificationRequestTest.java
│ │ ├── MarkForSeenWebNotificationResponseTest.java
│ │ ├── MarkUnmarkForDeleteDocumentsRequestTest.java
│ │ ├── MarkUnmarkForDeleteDocumentsResponseTest.java
│ │ ├── MarkUnmarkForDeleteProjectsReponseTest.java
│ │ ├── MarkUnmarkForDeleteProjectsRequestTest.java
│ │ ├── MenuGroupTest.java
│ │ ├── MenuItemTest.java
│ │ ├── PartySimilarityFormTest.java
│ │ ├── PartySimilarityTest.java
│ │ ├── PartyTest.java
│ │ ├── PartyUsageTest.java
│ │ ├── PercentUsageTest.java
│ │ ├── ProjectActiveTasksTasksTest.java
│ │ ├── ProjectActiveTasksTest.java
│ │ ├── ProjectAnnotationsAssigneesResponseTest.java
│ │ ├── ProjectAppVarTest.java
│ │ ├── ProjectClusteringDocumentClustersInnerTest.java
│ │ ├── ProjectClusteringDocumentClustersTest.java
│ │ ├── ProjectClusteringStatusResponseTest.java
│ │ ├── ProjectClusteringTest.java
│ │ ├── ProjectCreateTest.java
│ │ ├── ProjectDetailOwnersDataInnerTest.java
│ │ ├── ProjectDetailOwnersDataTest.java
│ │ ├── ProjectDetailTest.java
│ │ ├── ProjectDocumentSimilarityResponseDataInnerTest.java
│ │ ├── ProjectDocumentSimilarityResponseDataTest.java
│ │ ├── ProjectDocumentSimilarityResponseTest.java
│ │ ├── ProjectDocumentSimilarityTest.java
│ │ ├── ProjectDocumentsAssigneesResponseTest.java
│ │ ├── ProjectDocumentsSimilarityByVectorsFormTest.java
│ │ ├── ProjectListStatusDataTest.java
│ │ ├── ProjectListTest.java
│ │ ├── ProjectListTypeDataTest.java
│ │ ├── ProjectProgressResponseTest.java
│ │ ├── ProjectProjectsIdAssignAnnotationsPOST404ResponseTest.java
│ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200ResponseTest.java
│ │ ├── ProjectSearchSimilarDocumentsRequestTest.java
│ │ ├── ProjectSearchSimilarTextUnitsRequestTest.java
│ │ ├── ProjectStatsTest.java
│ │ ├── ProjectTasksTest.java
│ │ ├── ProjectTextUnitSimilarityTest.java
│ │ ├── ProjectTextUnitsSimilarityByVectorsFormTest.java
│ │ ├── ProjectUpdateTest.java
│ │ ├── ProjectUploadSessionFilesResponseTest.java
│ │ ├── ProjectUploadSessionPOSTResponseTest.java
│ │ ├── ProjectUploadSessionProgressResponseTest.java
│ │ ├── RatioUsageTest.java
│ │ ├── RawdbDocumentsPOSTRequestTest.java
│ │ ├── RegisterTest.java
│ │ ├── RegulationUsageTest.java
│ │ ├── RestAuthCommonResponseTest.java
│ │ ├── ReviewStatusDetailGroupDataTest.java
│ │ ├── ReviewStatusDetailTest.java
│ │ ├── ReviewStatusGroupTest.java
│ │ ├── ReviewStatusTest.java
│ │ ├── SelectProjectsRequestTest.java
│ │ ├── SelectProjectsResponseTest.java
│ │ ├── SendClusterToProjectRequestTest.java
│ │ ├── SetProjectAnnotationsStatusAsyncResponseTest.java
│ │ ├── SetProjectAnnotationsStatusRequestTest.java
│ │ ├── SetProjectDocumentsStatusRequestTest.java
│ │ ├── SimilarProjectTextUnitsRequestTest.java
│ │ ├── SimilarityFormTest.java
│ │ ├── SimilarityPOSTObjectResponseTest.java
│ │ ├── SimilarityRunTest.java
│ │ ├── SocialAccountsResponseSocialAccountsTest.java
│ │ ├── SocialAccountsResponseTest.java
│ │ ├── SocialClientListTest.java
│ │ ├── SocialClientListUrlsTest.java
│ │ ├── SocialLoginTest.java
│ │ ├── TaskIdResponseTest.java
│ │ ├── TaskLogResponseRecordsTest.java
│ │ ├── TaskLogResponseTest.java
│ │ ├── TaskQueueDocumentsDataInnerTest.java
│ │ ├── TaskQueueDocumentsDataTest.java
│ │ ├── TaskQueueReviewersDataInnerTest.java
│ │ ├── TaskQueueReviewersDataTest.java
│ │ ├── TaskQueueTest.java
│ │ ├── TaskTest.java
│ │ ├── TermTagTest.java
│ │ ├── TermUsageTest.java
│ │ ├── TextUnitClassificationCreateTest.java
│ │ ├── TextUnitClassificationTest.java
│ │ ├── TextUnitClassifierSuggestionTest.java
│ │ ├── TextUnitClassifierTest.java
│ │ ├── TextUnitClusterTest.java
│ │ ├── TextUnitDjangoQLTest.java
│ │ ├── TextUnitSimilarityByFeaturesFormTest.java
│ │ ├── TextUnitSimilarityTest.java
│ │ ├── TrademarkUsageTest.java
│ │ ├── TransformerTest.java
│ │ ├── TusUploadSessionUploadSessionIdUploadPOST400ResponseTest.java
│ │ ├── TypeaheadTest.java
│ │ ├── UpdateProjectDocumentsFieldsRequestTest.java
│ │ ├── UpdateProjectDocumentsFieldsResponseTest.java
│ │ ├── UploadSessionBatchUploadRequestTest.java
│ │ ├── UploadSessionCreateTest.java
│ │ ├── UploadSessionDeleteFileRequestTest.java
│ │ ├── UploadSessionDetailTest.java
│ │ ├── UploadSessionUpdateTest.java
│ │ ├── UploadTest.java
│ │ ├── UrlUsageTest.java
│ │ ├── UserProfileTest.java
│ │ ├── UserStatsTest.java
│ │ ├── UserTest.java
│ │ ├── VerifyAuthTokenRequestTest.java
│ │ ├── VerifyAuthTokenResponseTest.java
│ │ ├── VerifyEmailTest.java
│ │ ├── WebNotificationDetailNotificationTest.java
│ │ └── WebNotificationDetailTest.java
│ ├── openapi_schema.json
│ ├── openapitools.json
│ └── python/
│ ├── python_sdk_sample.ipynb
│ ├── sdk/
│ │ ├── .gitignore
│ │ ├── .gitlab-ci.yml
│ │ ├── .openapi-generator/
│ │ │ ├── FILES
│ │ │ └── VERSION
│ │ ├── .openapi-generator-ignore
│ │ ├── .travis.yml
│ │ ├── README.md
│ │ ├── docs/
│ │ │ ├── AccessTokenSchema.md
│ │ │ ├── Action.md
│ │ │ ├── AmountUsage.md
│ │ │ ├── AnalyzeApi.md
│ │ │ ├── Annotation.md
│ │ │ ├── AnnotationBatchRequest.md
│ │ │ ├── AnnotationBatchResponse.md
│ │ │ ├── AnnotationInDocument.md
│ │ │ ├── AnnotationSuggestRequest.md
│ │ │ ├── AnnotationUpdateResponse.md
│ │ │ ├── ApiApi.md
│ │ │ ├── AppVar.md
│ │ │ ├── AssignProjectAnnotationsRequest.md
│ │ │ ├── AssignProjectDocumentRequest.md
│ │ │ ├── AssignProjectDocumentsRequest.md
│ │ │ ├── CheckDocumentFieldFormulaRequest.md
│ │ │ ├── CheckNewDocumentFieldFormulaRequest.md
│ │ │ ├── CitationUsage.md
│ │ │ ├── CleanupProjectRequest.md
│ │ │ ├── CloneDocumentFieldRequest.md
│ │ │ ├── CloneDocumentTypeRequest.md
│ │ │ ├── ClusterProjectRequest.md
│ │ │ ├── ClusterProjectResponse.md
│ │ │ ├── Code.md
│ │ │ ├── CommonApi.md
│ │ │ ├── CopyrightUsage.md
│ │ │ ├── CountSuccessResponse.md
│ │ │ ├── CourtUsage.md
│ │ │ ├── CurrencyUsage.md
│ │ │ ├── CustomPasswordChange.md
│ │ │ ├── CustomPasswordReset.md
│ │ │ ├── CustomPasswordResetConfirm.md
│ │ │ ├── DateDurationUsage.md
│ │ │ ├── DateUsage.md
│ │ │ ├── DateUsageCalendar.md
│ │ │ ├── DateUsageTimeline.md
│ │ │ ├── DefinitionUsage.md
│ │ │ ├── DetectProjectFieldValuesRequest.md
│ │ │ ├── DistanceUsage.md
│ │ │ ├── DocumentApi.md
│ │ │ ├── DocumentCluster.md
│ │ │ ├── DocumentClusterDocumentData.md
│ │ │ ├── DocumentClusterDocumentDataInner.md
│ │ │ ├── DocumentClusterUpdate.md
│ │ │ ├── DocumentDefinitions.md
│ │ │ ├── DocumentDetail.md
│ │ │ ├── DocumentDetailAssigneeData.md
│ │ │ ├── DocumentDetailAvailableAssigneesData.md
│ │ │ ├── DocumentDetailAvailableAssigneesDataInner.md
│ │ │ ├── DocumentDetailNotes.md
│ │ │ ├── DocumentDetailStatusData.md
│ │ │ ├── DocumentDetailUser.md
│ │ │ ├── DocumentDocumentsDownloadZipGET404Response.md
│ │ │ ├── DocumentDownloadZipResponse.md
│ │ │ ├── DocumentFieldAnnotation.md
│ │ │ ├── DocumentFieldCategoryCreate.md
│ │ │ ├── DocumentFieldCategoryList.md
│ │ │ ├── DocumentFieldCategoryListFields.md
│ │ │ ├── DocumentFieldCategoryListFieldsInner.md
│ │ │ ├── DocumentFieldCreate.md
│ │ │ ├── DocumentFieldDetail.md
│ │ │ ├── DocumentFieldDetectorCreate.md
│ │ │ ├── DocumentFieldDetectorDetail.md
│ │ │ ├── DocumentFieldList.md
│ │ │ ├── DocumentFieldListCategory.md
│ │ │ ├── DocumentFieldListFamily.md
│ │ │ ├── DocumentFieldStatsResponse.md
│ │ │ ├── DocumentFieldValue.md
│ │ │ ├── DocumentNoteCreate.md
│ │ │ ├── DocumentNoteDetail.md
│ │ │ ├── DocumentNoteDetailUser.md
│ │ │ ├── DocumentNoteUpdate.md
│ │ │ ├── DocumentPDFRepr.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.md
│ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.md
│ │ │ ├── DocumentSimilarity.md
│ │ │ ├── DocumentSimilarityByFeaturesForm.md
│ │ │ ├── DocumentSimilarityRun.md
│ │ │ ├── DocumentTypeCreate.md
│ │ │ ├── DocumentTypeDetail.md
│ │ │ ├── DocumentTypeDetailCategories.md
│ │ │ ├── DocumentTypeDetailCategoriesInner.md
│ │ │ ├── DocumentTypeDetailFieldsData.md
│ │ │ ├── DocumentTypeDetailFieldsDataInner.md
│ │ │ ├── DocumentTypeForStats.md
│ │ │ ├── DocumentTypeImportRequest.md
│ │ │ ├── DocumentTypeImportResponse.md
│ │ │ ├── DocumentTypeStats.md
│ │ │ ├── DocumentTypeStatsData.md
│ │ │ ├── DocumentsForUser.md
│ │ │ ├── DocumentsForUserResponse.md
│ │ │ ├── DocumentsForUserResponseData.md
│ │ │ ├── DocumentsForUserResponseDataInner.md
│ │ │ ├── DumpApi.md
│ │ │ ├── DumpDocumentConfigGET200Response.md
│ │ │ ├── DumpFixture.md
│ │ │ ├── DumpPUTErrorResponse.md
│ │ │ ├── ExtractApi.md
│ │ │ ├── FieldAnnotationStatus.md
│ │ │ ├── GeoAliasUsage.md
│ │ │ ├── GeoEntityList.md
│ │ │ ├── GeoEntityUpdate.md
│ │ │ ├── GeoEntityUsage.md
│ │ │ ├── InlineResponse400.md
│ │ │ ├── InlineResponse404.md
│ │ │ ├── InlineResponse4041.md
│ │ │ ├── LoadFixture.md
│ │ │ ├── LocateItemsRequest.md
│ │ │ ├── LoggingAPIViewRequest.md
│ │ │ ├── LoggingApi.md
│ │ │ ├── Login.md
│ │ │ ├── LoginResponse.md
│ │ │ ├── MLModel.md
│ │ │ ├── MarkForSeenWebNotificationRequest.md
│ │ │ ├── MarkForSeenWebNotificationResponse.md
│ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.md
│ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.md
│ │ │ ├── MarkUnmarkForDeleteProjectsReponse.md
│ │ │ ├── MarkUnmarkForDeleteProjectsRequest.md
│ │ │ ├── MediaDataApi.md
│ │ │ ├── MenuGroup.md
│ │ │ ├── MenuItem.md
│ │ │ ├── NotificationsApi.md
│ │ │ ├── Party.md
│ │ │ ├── PartySimilarity.md
│ │ │ ├── PartySimilarityForm.md
│ │ │ ├── PartyUsage.md
│ │ │ ├── PercentUsage.md
│ │ │ ├── ProjectActiveTasks.md
│ │ │ ├── ProjectActiveTasksTasks.md
│ │ │ ├── ProjectAnnotationsAssigneesResponse.md
│ │ │ ├── ProjectApi.md
│ │ │ ├── ProjectAppVar.md
│ │ │ ├── ProjectClustering.md
│ │ │ ├── ProjectClusteringDocumentClusters.md
│ │ │ ├── ProjectClusteringDocumentClustersInner.md
│ │ │ ├── ProjectClusteringStatusResponse.md
│ │ │ ├── ProjectCreate.md
│ │ │ ├── ProjectDetail.md
│ │ │ ├── ProjectDetailOwnersData.md
│ │ │ ├── ProjectDetailOwnersDataInner.md
│ │ │ ├── ProjectDocumentSimilarity.md
│ │ │ ├── ProjectDocumentSimilarityResponse.md
│ │ │ ├── ProjectDocumentSimilarityResponseData.md
│ │ │ ├── ProjectDocumentSimilarityResponseDataInner.md
│ │ │ ├── ProjectDocumentsAssigneesResponse.md
│ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.md
│ │ │ ├── ProjectList.md
│ │ │ ├── ProjectListStatusData.md
│ │ │ ├── ProjectListTypeData.md
│ │ │ ├── ProjectProgressResponse.md
│ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.md
│ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.md
│ │ │ ├── ProjectSearchSimilarDocumentsRequest.md
│ │ │ ├── ProjectSearchSimilarTextUnitsRequest.md
│ │ │ ├── ProjectStats.md
│ │ │ ├── ProjectTasks.md
│ │ │ ├── ProjectTextUnitSimilarity.md
│ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.md
│ │ │ ├── ProjectUpdate.md
│ │ │ ├── ProjectUploadSessionFilesResponse.md
│ │ │ ├── ProjectUploadSessionPOSTResponse.md
│ │ │ ├── ProjectUploadSessionProgressResponse.md
│ │ │ ├── RatioUsage.md
│ │ │ ├── RawdbApi.md
│ │ │ ├── RawdbDocumentsPOSTRequest.md
│ │ │ ├── Register.md
│ │ │ ├── RegulationUsage.md
│ │ │ ├── RestAuthApi.md
│ │ │ ├── RestAuthCommonResponse.md
│ │ │ ├── ReviewStatus.md
│ │ │ ├── ReviewStatusDetail.md
│ │ │ ├── ReviewStatusDetailGroupData.md
│ │ │ ├── ReviewStatusGroup.md
│ │ │ ├── SelectProjectsRequest.md
│ │ │ ├── SelectProjectsResponse.md
│ │ │ ├── SendClusterToProjectRequest.md
│ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.md
│ │ │ ├── SetProjectAnnotationsStatusRequest.md
│ │ │ ├── SetProjectDocumentsStatusRequest.md
│ │ │ ├── SimilarProjectTextUnitsRequest.md
│ │ │ ├── SimilarityApi.md
│ │ │ ├── SimilarityForm.md
│ │ │ ├── SimilarityPOSTObjectResponse.md
│ │ │ ├── SimilarityRun.md
│ │ │ ├── SocialAccountsResponse.md
│ │ │ ├── SocialAccountsResponseSocialAccounts.md
│ │ │ ├── SocialClientList.md
│ │ │ ├── SocialClientListUrls.md
│ │ │ ├── SocialLogin.md
│ │ │ ├── Task.md
│ │ │ ├── TaskApi.md
│ │ │ ├── TaskIdResponse.md
│ │ │ ├── TaskLogResponse.md
│ │ │ ├── TaskLogResponseRecords.md
│ │ │ ├── TaskQueue.md
│ │ │ ├── TaskQueueDocumentsData.md
│ │ │ ├── TaskQueueDocumentsDataInner.md
│ │ │ ├── TaskQueueReviewersData.md
│ │ │ ├── TaskQueueReviewersDataInner.md
│ │ │ ├── TermTag.md
│ │ │ ├── TermUsage.md
│ │ │ ├── TextUnitClassification.md
│ │ │ ├── TextUnitClassificationCreate.md
│ │ │ ├── TextUnitClassifier.md
│ │ │ ├── TextUnitClassifierSuggestion.md
│ │ │ ├── TextUnitCluster.md
│ │ │ ├── TextUnitDjangoQL.md
│ │ │ ├── TextUnitSimilarity.md
│ │ │ ├── TextUnitSimilarityByFeaturesForm.md
│ │ │ ├── TrademarkUsage.md
│ │ │ ├── Transformer.md
│ │ │ ├── TusApi.md
│ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.md
│ │ │ ├── Typeahead.md
│ │ │ ├── UpdateProjectDocumentsFieldsRequest.md
│ │ │ ├── UpdateProjectDocumentsFieldsResponse.md
│ │ │ ├── Upload.md
│ │ │ ├── UploadSessionBatchUploadRequest.md
│ │ │ ├── UploadSessionCreate.md
│ │ │ ├── UploadSessionDeleteFileRequest.md
│ │ │ ├── UploadSessionDetail.md
│ │ │ ├── UploadSessionUpdate.md
│ │ │ ├── UrlUsage.md
│ │ │ ├── User.md
│ │ │ ├── UserProfile.md
│ │ │ ├── UserStats.md
│ │ │ ├── UsersApi.md
│ │ │ ├── V1Api.md
│ │ │ ├── VarApi.md
│ │ │ ├── VerifyAuthTokenRequest.md
│ │ │ ├── VerifyAuthTokenResponse.md
│ │ │ ├── VerifyEmail.md
│ │ │ ├── WebNotificationDetail.md
│ │ │ └── WebNotificationDetailNotification.md
│ │ ├── git_push.sh
│ │ ├── openapi_client/
│ │ │ ├── __init__.py
│ │ │ ├── api/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── analyze_api.py
│ │ │ │ ├── api_api.py
│ │ │ │ ├── common_api.py
│ │ │ │ ├── document_api.py
│ │ │ │ ├── dump_api.py
│ │ │ │ ├── extract_api.py
│ │ │ │ ├── logging_api.py
│ │ │ │ ├── media_data_api.py
│ │ │ │ ├── notifications_api.py
│ │ │ │ ├── project_api.py
│ │ │ │ ├── rawdb_api.py
│ │ │ │ ├── rest_auth_api.py
│ │ │ │ ├── similarity_api.py
│ │ │ │ ├── task_api.py
│ │ │ │ ├── tus_api.py
│ │ │ │ ├── users_api.py
│ │ │ │ ├── v1_api.py
│ │ │ │ └── var_api.py
│ │ │ ├── api_client.py
│ │ │ ├── apis/
│ │ │ │ └── __init__.py
│ │ │ ├── configuration.py
│ │ │ ├── exceptions.py
│ │ │ ├── model/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── access_token_schema.py
│ │ │ │ ├── action.py
│ │ │ │ ├── amount_usage.py
│ │ │ │ ├── annotation.py
│ │ │ │ ├── annotation_batch_request.py
│ │ │ │ ├── annotation_batch_response.py
│ │ │ │ ├── annotation_in_document.py
│ │ │ │ ├── annotation_suggest_request.py
│ │ │ │ ├── annotation_update_response.py
│ │ │ │ ├── app_var.py
│ │ │ │ ├── assign_project_annotations_request.py
│ │ │ │ ├── assign_project_document_request.py
│ │ │ │ ├── assign_project_documents_request.py
│ │ │ │ ├── check_document_field_formula_request.py
│ │ │ │ ├── check_new_document_field_formula_request.py
│ │ │ │ ├── citation_usage.py
│ │ │ │ ├── cleanup_project_request.py
│ │ │ │ ├── clone_document_field_request.py
│ │ │ │ ├── clone_document_type_request.py
│ │ │ │ ├── cluster_project_request.py
│ │ │ │ ├── cluster_project_response.py
│ │ │ │ ├── code.py
│ │ │ │ ├── copyright_usage.py
│ │ │ │ ├── count_success_response.py
│ │ │ │ ├── court_usage.py
│ │ │ │ ├── currency_usage.py
│ │ │ │ ├── custom_password_change.py
│ │ │ │ ├── custom_password_reset.py
│ │ │ │ ├── custom_password_reset_confirm.py
│ │ │ │ ├── date_duration_usage.py
│ │ │ │ ├── date_usage.py
│ │ │ │ ├── date_usage_calendar.py
│ │ │ │ ├── date_usage_timeline.py
│ │ │ │ ├── definition_usage.py
│ │ │ │ ├── detect_project_field_values_request.py
│ │ │ │ ├── distance_usage.py
│ │ │ │ ├── document_cluster.py
│ │ │ │ ├── document_cluster_document_data.py
│ │ │ │ ├── document_cluster_document_data_inner.py
│ │ │ │ ├── document_cluster_update.py
│ │ │ │ ├── document_definitions.py
│ │ │ │ ├── document_detail.py
│ │ │ │ ├── document_detail_assignee_data.py
│ │ │ │ ├── document_detail_available_assignees_data.py
│ │ │ │ ├── document_detail_available_assignees_data_inner.py
│ │ │ │ ├── document_detail_notes.py
│ │ │ │ ├── document_detail_status_data.py
│ │ │ │ ├── document_detail_user.py
│ │ │ │ ├── document_documents_download_zip_get404_response.py
│ │ │ │ ├── document_download_zip_response.py
│ │ │ │ ├── document_field_annotation.py
│ │ │ │ ├── document_field_category_create.py
│ │ │ │ ├── document_field_category_list.py
│ │ │ │ ├── document_field_category_list_fields.py
│ │ │ │ ├── document_field_category_list_fields_inner.py
│ │ │ │ ├── document_field_create.py
│ │ │ │ ├── document_field_detail.py
│ │ │ │ ├── document_field_detector_create.py
│ │ │ │ ├── document_field_detector_detail.py
│ │ │ │ ├── document_field_list.py
│ │ │ │ ├── document_field_list_category.py
│ │ │ │ ├── document_field_list_family.py
│ │ │ │ ├── document_field_stats_response.py
│ │ │ │ ├── document_field_value.py
│ │ │ │ ├── document_note_create.py
│ │ │ │ ├── document_note_detail.py
│ │ │ │ ├── document_note_detail_user.py
│ │ │ │ ├── document_note_update.py
│ │ │ │ ├── document_pdf_repr.py
│ │ │ │ ├── document_set_annotator_coordinates_difference_request.py
│ │ │ │ ├── document_set_annotator_coordinates_difference_request_first_letters_inner.py
│ │ │ │ ├── document_set_annotator_coordinates_difference_response.py
│ │ │ │ ├── document_similarity.py
│ │ │ │ ├── document_similarity_by_features_form.py
│ │ │ │ ├── document_similarity_run.py
│ │ │ │ ├── document_type_create.py
│ │ │ │ ├── document_type_detail.py
│ │ │ │ ├── document_type_detail_categories.py
│ │ │ │ ├── document_type_detail_categories_inner.py
│ │ │ │ ├── document_type_detail_fields_data.py
│ │ │ │ ├── document_type_detail_fields_data_inner.py
│ │ │ │ ├── document_type_for_stats.py
│ │ │ │ ├── document_type_import_request.py
│ │ │ │ ├── document_type_import_response.py
│ │ │ │ ├── document_type_stats.py
│ │ │ │ ├── document_type_stats_data.py
│ │ │ │ ├── documents_for_user.py
│ │ │ │ ├── documents_for_user_response.py
│ │ │ │ ├── documents_for_user_response_data.py
│ │ │ │ ├── documents_for_user_response_data_inner.py
│ │ │ │ ├── dump_document_config_get200_response.py
│ │ │ │ ├── dump_fixture.py
│ │ │ │ ├── dump_put_error_response.py
│ │ │ │ ├── field_annotation_status.py
│ │ │ │ ├── geo_alias_usage.py
│ │ │ │ ├── geo_entity_list.py
│ │ │ │ ├── geo_entity_update.py
│ │ │ │ ├── geo_entity_usage.py
│ │ │ │ ├── inline_response400.py
│ │ │ │ ├── inline_response404.py
│ │ │ │ ├── inline_response4041.py
│ │ │ │ ├── load_fixture.py
│ │ │ │ ├── locate_items_request.py
│ │ │ │ ├── logging_api_view_request.py
│ │ │ │ ├── login.py
│ │ │ │ ├── login_response.py
│ │ │ │ ├── mark_for_seen_web_notification_request.py
│ │ │ │ ├── mark_for_seen_web_notification_response.py
│ │ │ │ ├── mark_unmark_for_delete_documents_request.py
│ │ │ │ ├── mark_unmark_for_delete_documents_response.py
│ │ │ │ ├── mark_unmark_for_delete_projects_reponse.py
│ │ │ │ ├── mark_unmark_for_delete_projects_request.py
│ │ │ │ ├── menu_group.py
│ │ │ │ ├── menu_item.py
│ │ │ │ ├── ml_model.py
│ │ │ │ ├── party.py
│ │ │ │ ├── party_similarity.py
│ │ │ │ ├── party_similarity_form.py
│ │ │ │ ├── party_usage.py
│ │ │ │ ├── percent_usage.py
│ │ │ │ ├── project_active_tasks.py
│ │ │ │ ├── project_active_tasks_tasks.py
│ │ │ │ ├── project_annotations_assignees_response.py
│ │ │ │ ├── project_app_var.py
│ │ │ │ ├── project_clustering.py
│ │ │ │ ├── project_clustering_document_clusters.py
│ │ │ │ ├── project_clustering_document_clusters_inner.py
│ │ │ │ ├── project_clustering_status_response.py
│ │ │ │ ├── project_create.py
│ │ │ │ ├── project_detail.py
│ │ │ │ ├── project_detail_owners_data.py
│ │ │ │ ├── project_detail_owners_data_inner.py
│ │ │ │ ├── project_document_similarity.py
│ │ │ │ ├── project_document_similarity_response.py
│ │ │ │ ├── project_document_similarity_response_data.py
│ │ │ │ ├── project_document_similarity_response_data_inner.py
│ │ │ │ ├── project_documents_assignees_response.py
│ │ │ │ ├── project_documents_similarity_by_vectors_form.py
│ │ │ │ ├── project_list.py
│ │ │ │ ├── project_list_status_data.py
│ │ │ │ ├── project_list_type_data.py
│ │ │ │ ├── project_progress_response.py
│ │ │ │ ├── project_projects_id_assign_annotations_post404_response.py
│ │ │ │ ├── project_projects_id_set_annotation_status_post200_response.py
│ │ │ │ ├── project_search_similar_documents_request.py
│ │ │ │ ├── project_search_similar_text_units_request.py
│ │ │ │ ├── project_stats.py
│ │ │ │ ├── project_tasks.py
│ │ │ │ ├── project_text_unit_similarity.py
│ │ │ │ ├── project_text_units_similarity_by_vectors_form.py
│ │ │ │ ├── project_update.py
│ │ │ │ ├── project_upload_session_files_response.py
│ │ │ │ ├── project_upload_session_post_response.py
│ │ │ │ ├── project_upload_session_progress_response.py
│ │ │ │ ├── ratio_usage.py
│ │ │ │ ├── rawdb_documents_post_request.py
│ │ │ │ ├── register.py
│ │ │ │ ├── regulation_usage.py
│ │ │ │ ├── rest_auth_common_response.py
│ │ │ │ ├── review_status.py
│ │ │ │ ├── review_status_detail.py
│ │ │ │ ├── review_status_detail_group_data.py
│ │ │ │ ├── review_status_group.py
│ │ │ │ ├── select_projects_request.py
│ │ │ │ ├── select_projects_response.py
│ │ │ │ ├── send_cluster_to_project_request.py
│ │ │ │ ├── set_project_annotations_status_async_response.py
│ │ │ │ ├── set_project_annotations_status_request.py
│ │ │ │ ├── set_project_documents_status_request.py
│ │ │ │ ├── similar_project_text_units_request.py
│ │ │ │ ├── similarity_form.py
│ │ │ │ ├── similarity_post_object_response.py
│ │ │ │ ├── similarity_run.py
│ │ │ │ ├── social_accounts_response.py
│ │ │ │ ├── social_accounts_response_social_accounts.py
│ │ │ │ ├── social_client_list.py
│ │ │ │ ├── social_client_list_urls.py
│ │ │ │ ├── social_login.py
│ │ │ │ ├── task.py
│ │ │ │ ├── task_id_response.py
│ │ │ │ ├── task_log_response.py
│ │ │ │ ├── task_log_response_records.py
│ │ │ │ ├── task_queue.py
│ │ │ │ ├── task_queue_documents_data.py
│ │ │ │ ├── task_queue_documents_data_inner.py
│ │ │ │ ├── task_queue_reviewers_data.py
│ │ │ │ ├── task_queue_reviewers_data_inner.py
│ │ │ │ ├── term_tag.py
│ │ │ │ ├── term_usage.py
│ │ │ │ ├── text_unit_classification.py
│ │ │ │ ├── text_unit_classification_create.py
│ │ │ │ ├── text_unit_classifier.py
│ │ │ │ ├── text_unit_classifier_suggestion.py
│ │ │ │ ├── text_unit_cluster.py
│ │ │ │ ├── text_unit_django_ql.py
│ │ │ │ ├── text_unit_similarity.py
│ │ │ │ ├── text_unit_similarity_by_features_form.py
│ │ │ │ ├── trademark_usage.py
│ │ │ │ ├── transformer.py
│ │ │ │ ├── tus_upload_session_upload_session_id_upload_post400_response.py
│ │ │ │ ├── typeahead.py
│ │ │ │ ├── update_project_documents_fields_request.py
│ │ │ │ ├── update_project_documents_fields_response.py
│ │ │ │ ├── upload.py
│ │ │ │ ├── upload_session_batch_upload_request.py
│ │ │ │ ├── upload_session_create.py
│ │ │ │ ├── upload_session_delete_file_request.py
│ │ │ │ ├── upload_session_detail.py
│ │ │ │ ├── upload_session_update.py
│ │ │ │ ├── url_usage.py
│ │ │ │ ├── user.py
│ │ │ │ ├── user_profile.py
│ │ │ │ ├── user_stats.py
│ │ │ │ ├── verify_auth_token_request.py
│ │ │ │ ├── verify_auth_token_response.py
│ │ │ │ ├── verify_email.py
│ │ │ │ ├── web_notification_detail.py
│ │ │ │ └── web_notification_detail_notification.py
│ │ │ ├── model_utils.py
│ │ │ ├── models/
│ │ │ │ └── __init__.py
│ │ │ └── rest.py
│ │ ├── requirements.txt
│ │ ├── setup.cfg
│ │ ├── setup.py
│ │ ├── test/
│ │ │ ├── __init__.py
│ │ │ ├── test_access_token_schema.py
│ │ │ ├── test_action.py
│ │ │ ├── test_amount_usage.py
│ │ │ ├── test_analyze_api.py
│ │ │ ├── test_annotation.py
│ │ │ ├── test_annotation_batch_request.py
│ │ │ ├── test_annotation_batch_response.py
│ │ │ ├── test_annotation_in_document.py
│ │ │ ├── test_annotation_suggest_request.py
│ │ │ ├── test_annotation_update_response.py
│ │ │ ├── test_api_api.py
│ │ │ ├── test_app_var.py
│ │ │ ├── test_assign_project_annotations_request.py
│ │ │ ├── test_assign_project_document_request.py
│ │ │ ├── test_assign_project_documents_request.py
│ │ │ ├── test_check_document_field_formula_request.py
│ │ │ ├── test_check_new_document_field_formula_request.py
│ │ │ ├── test_citation_usage.py
│ │ │ ├── test_cleanup_project_request.py
│ │ │ ├── test_clone_document_field_request.py
│ │ │ ├── test_clone_document_type_request.py
│ │ │ ├── test_cluster_project_request.py
│ │ │ ├── test_cluster_project_response.py
│ │ │ ├── test_code.py
│ │ │ ├── test_common_api.py
│ │ │ ├── test_copyright_usage.py
│ │ │ ├── test_count_success_response.py
│ │ │ ├── test_court_usage.py
│ │ │ ├── test_currency_usage.py
│ │ │ ├── test_custom_password_change.py
│ │ │ ├── test_custom_password_reset.py
│ │ │ ├── test_custom_password_reset_confirm.py
│ │ │ ├── test_date_duration_usage.py
│ │ │ ├── test_date_usage.py
│ │ │ ├── test_date_usage_calendar.py
│ │ │ ├── test_date_usage_timeline.py
│ │ │ ├── test_definition_usage.py
│ │ │ ├── test_detect_project_field_values_request.py
│ │ │ ├── test_distance_usage.py
│ │ │ ├── test_document_api.py
│ │ │ ├── test_document_cluster.py
│ │ │ ├── test_document_cluster_document_data.py
│ │ │ ├── test_document_cluster_document_data_inner.py
│ │ │ ├── test_document_cluster_update.py
│ │ │ ├── test_document_definitions.py
│ │ │ ├── test_document_detail.py
│ │ │ ├── test_document_detail_assignee_data.py
│ │ │ ├── test_document_detail_available_assignees_data.py
│ │ │ ├── test_document_detail_available_assignees_data_inner.py
│ │ │ ├── test_document_detail_notes.py
│ │ │ ├── test_document_detail_status_data.py
│ │ │ ├── test_document_detail_user.py
│ │ │ ├── test_document_documents_download_zip_get404_response.py
│ │ │ ├── test_document_download_zip_response.py
│ │ │ ├── test_document_field_annotation.py
│ │ │ ├── test_document_field_category_create.py
│ │ │ ├── test_document_field_category_list.py
│ │ │ ├── test_document_field_category_list_fields.py
│ │ │ ├── test_document_field_category_list_fields_inner.py
│ │ │ ├── test_document_field_create.py
│ │ │ ├── test_document_field_detail.py
│ │ │ ├── test_document_field_detector_create.py
│ │ │ ├── test_document_field_detector_detail.py
│ │ │ ├── test_document_field_list.py
│ │ │ ├── test_document_field_list_category.py
│ │ │ ├── test_document_field_list_family.py
│ │ │ ├── test_document_field_stats_response.py
│ │ │ ├── test_document_field_value.py
│ │ │ ├── test_document_note_create.py
│ │ │ ├── test_document_note_detail.py
│ │ │ ├── test_document_note_detail_user.py
│ │ │ ├── test_document_note_update.py
│ │ │ ├── test_document_pdf_repr.py
│ │ │ ├── test_document_set_annotator_coordinates_difference_request.py
│ │ │ ├── test_document_set_annotator_coordinates_difference_request_first_letters_inner.py
│ │ │ ├── test_document_set_annotator_coordinates_difference_response.py
│ │ │ ├── test_document_similarity.py
│ │ │ ├── test_document_similarity_by_features_form.py
│ │ │ ├── test_document_similarity_run.py
│ │ │ ├── test_document_type_create.py
│ │ │ ├── test_document_type_detail.py
│ │ │ ├── test_document_type_detail_categories.py
│ │ │ ├── test_document_type_detail_categories_inner.py
│ │ │ ├── test_document_type_detail_fields_data.py
│ │ │ ├── test_document_type_detail_fields_data_inner.py
│ │ │ ├── test_document_type_for_stats.py
│ │ │ ├── test_document_type_import_request.py
│ │ │ ├── test_document_type_import_response.py
│ │ │ ├── test_document_type_stats.py
│ │ │ ├── test_document_type_stats_data.py
│ │ │ ├── test_documents_for_user.py
│ │ │ ├── test_documents_for_user_response.py
│ │ │ ├── test_documents_for_user_response_data.py
│ │ │ ├── test_documents_for_user_response_data_inner.py
│ │ │ ├── test_dump_api.py
│ │ │ ├── test_dump_document_config_get200_response.py
│ │ │ ├── test_dump_fixture.py
│ │ │ ├── test_dump_put_error_response.py
│ │ │ ├── test_extract_api.py
│ │ │ ├── test_field_annotation_status.py
│ │ │ ├── test_geo_alias_usage.py
│ │ │ ├── test_geo_entity_list.py
│ │ │ ├── test_geo_entity_update.py
│ │ │ ├── test_geo_entity_usage.py
│ │ │ ├── test_inline_response400.py
│ │ │ ├── test_inline_response404.py
│ │ │ ├── test_inline_response4041.py
│ │ │ ├── test_load_fixture.py
│ │ │ ├── test_locate_items_request.py
│ │ │ ├── test_logging_api.py
│ │ │ ├── test_logging_api_view_request.py
│ │ │ ├── test_login.py
│ │ │ ├── test_login_response.py
│ │ │ ├── test_mark_for_seen_web_notification_request.py
│ │ │ ├── test_mark_for_seen_web_notification_response.py
│ │ │ ├── test_mark_unmark_for_delete_documents_request.py
│ │ │ ├── test_mark_unmark_for_delete_documents_response.py
│ │ │ ├── test_mark_unmark_for_delete_projects_reponse.py
│ │ │ ├── test_mark_unmark_for_delete_projects_request.py
│ │ │ ├── test_media_data_api.py
│ │ │ ├── test_menu_group.py
│ │ │ ├── test_menu_item.py
│ │ │ ├── test_ml_model.py
│ │ │ ├── test_notifications_api.py
│ │ │ ├── test_party.py
│ │ │ ├── test_party_similarity.py
│ │ │ ├── test_party_similarity_form.py
│ │ │ ├── test_party_usage.py
│ │ │ ├── test_percent_usage.py
│ │ │ ├── test_project_active_tasks.py
│ │ │ ├── test_project_active_tasks_tasks.py
│ │ │ ├── test_project_annotations_assignees_response.py
│ │ │ ├── test_project_api.py
│ │ │ ├── test_project_app_var.py
│ │ │ ├── test_project_clustering.py
│ │ │ ├── test_project_clustering_document_clusters.py
│ │ │ ├── test_project_clustering_document_clusters_inner.py
│ │ │ ├── test_project_clustering_status_response.py
│ │ │ ├── test_project_create.py
│ │ │ ├── test_project_detail.py
│ │ │ ├── test_project_detail_owners_data.py
│ │ │ ├── test_project_detail_owners_data_inner.py
│ │ │ ├── test_project_document_similarity.py
│ │ │ ├── test_project_document_similarity_response.py
│ │ │ ├── test_project_document_similarity_response_data.py
│ │ │ ├── test_project_document_similarity_response_data_inner.py
│ │ │ ├── test_project_documents_assignees_response.py
│ │ │ ├── test_project_documents_similarity_by_vectors_form.py
│ │ │ ├── test_project_list.py
│ │ │ ├── test_project_list_status_data.py
│ │ │ ├── test_project_list_type_data.py
│ │ │ ├── test_project_progress_response.py
│ │ │ ├── test_project_projects_id_assign_annotations_post404_response.py
│ │ │ ├── test_project_projects_id_set_annotation_status_post200_response.py
│ │ │ ├── test_project_search_similar_documents_request.py
│ │ │ ├── test_project_search_similar_text_units_request.py
│ │ │ ├── test_project_stats.py
│ │ │ ├── test_project_tasks.py
│ │ │ ├── test_project_text_unit_similarity.py
│ │ │ ├── test_project_text_units_similarity_by_vectors_form.py
│ │ │ ├── test_project_update.py
│ │ │ ├── test_project_upload_session_files_response.py
│ │ │ ├── test_project_upload_session_post_response.py
│ │ │ ├── test_project_upload_session_progress_response.py
│ │ │ ├── test_ratio_usage.py
│ │ │ ├── test_rawdb_api.py
│ │ │ ├── test_rawdb_documents_post_request.py
│ │ │ ├── test_register.py
│ │ │ ├── test_regulation_usage.py
│ │ │ ├── test_rest_auth_api.py
│ │ │ ├── test_rest_auth_common_response.py
│ │ │ ├── test_review_status.py
│ │ │ ├── test_review_status_detail.py
│ │ │ ├── test_review_status_detail_group_data.py
│ │ │ ├── test_review_status_group.py
│ │ │ ├── test_select_projects_request.py
│ │ │ ├── test_select_projects_response.py
│ │ │ ├── test_send_cluster_to_project_request.py
│ │ │ ├── test_set_project_annotations_status_async_response.py
│ │ │ ├── test_set_project_annotations_status_request.py
│ │ │ ├── test_set_project_documents_status_request.py
│ │ │ ├── test_similar_project_text_units_request.py
│ │ │ ├── test_similarity_api.py
│ │ │ ├── test_similarity_form.py
│ │ │ ├── test_similarity_post_object_response.py
│ │ │ ├── test_similarity_run.py
│ │ │ ├── test_social_accounts_response.py
│ │ │ ├── test_social_accounts_response_social_accounts.py
│ │ │ ├── test_social_client_list.py
│ │ │ ├── test_social_client_list_urls.py
│ │ │ ├── test_social_login.py
│ │ │ ├── test_task.py
│ │ │ ├── test_task_api.py
│ │ │ ├── test_task_id_response.py
│ │ │ ├── test_task_log_response.py
│ │ │ ├── test_task_log_response_records.py
│ │ │ ├── test_task_queue.py
│ │ │ ├── test_task_queue_documents_data.py
│ │ │ ├── test_task_queue_documents_data_inner.py
│ │ │ ├── test_task_queue_reviewers_data.py
│ │ │ ├── test_task_queue_reviewers_data_inner.py
│ │ │ ├── test_term_tag.py
│ │ │ ├── test_term_usage.py
│ │ │ ├── test_text_unit_classification.py
│ │ │ ├── test_text_unit_classification_create.py
│ │ │ ├── test_text_unit_classifier.py
│ │ │ ├── test_text_unit_classifier_suggestion.py
│ │ │ ├── test_text_unit_cluster.py
│ │ │ ├── test_text_unit_django_ql.py
│ │ │ ├── test_text_unit_similarity.py
│ │ │ ├── test_text_unit_similarity_by_features_form.py
│ │ │ ├── test_trademark_usage.py
│ │ │ ├── test_transformer.py
│ │ │ ├── test_tus_api.py
│ │ │ ├── test_tus_upload_session_upload_session_id_upload_post400_response.py
│ │ │ ├── test_typeahead.py
│ │ │ ├── test_update_project_documents_fields_request.py
│ │ │ ├── test_update_project_documents_fields_response.py
│ │ │ ├── test_upload.py
│ │ │ ├── test_upload_session_batch_upload_request.py
│ │ │ ├── test_upload_session_create.py
│ │ │ ├── test_upload_session_delete_file_request.py
│ │ │ ├── test_upload_session_detail.py
│ │ │ ├── test_upload_session_update.py
│ │ │ ├── test_url_usage.py
│ │ │ ├── test_user.py
│ │ │ ├── test_user_profile.py
│ │ │ ├── test_user_stats.py
│ │ │ ├── test_users_api.py
│ │ │ ├── test_v1_api.py
│ │ │ ├── test_var_api.py
│ │ │ ├── test_verify_auth_token_request.py
│ │ │ ├── test_verify_auth_token_response.py
│ │ │ ├── test_verify_email.py
│ │ │ ├── test_web_notification_detail.py
│ │ │ └── test_web_notification_detail_notification.py
│ │ ├── test-requirements.txt
│ │ └── tox.ini
│ └── tests/
│ ├── .gitignore
│ ├── README
│ ├── __init__.py
│ ├── common/
│ │ ├── __init__.py
│ │ └── test_app_vars.py
│ ├── config.py
│ ├── document/
│ │ └── __init__.py
│ ├── project/
│ │ ├── __init__.py
│ │ ├── data/
│ │ │ └── doc1.txt
│ │ ├── test_document_upload.py
│ │ ├── test_project_crud.py
│ │ ├── test_upload_session.py
│ │ └── utils.py
│ ├── re
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
env/
/build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# dotenv
.env
# virtualenv
.venv
venv/
ENV/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
# IDE
.idea/
# Logs
log.txt
# docker
docker/deploy/dependencies/*.zip*
.DS_Store
================================================
FILE: LICENSE
================================================
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.
================================================
FILE: README.md
================================================
[](https://github.com/lexpredict/lexpredict-contraxsuite)
# LexPredict ContraxSuite - Software
Software package for [LexPredict ContraxSuite](https://github.com/LexPredict/lexpredict-contraxsuite).
* Official Website: https://contraxsuite.com/
* LexPredict: https://lexpredict.com/
* [Current Documentation](https://github.com/LexPredict/lexpredict-contraxsuite/blob/master/documentation/)
* Contact: contact@lexpredict.com

## Licensing
ContraxSuite is available under a dual-licensing model as described here:
* https://www.lexpredict.com/2017/07/30/licensing-contraxsuite-legaltech-dual/
**If you would like to request a release from the terms of the default AGPLv3 license, please contact us at: ContraxSuite Licensing <<license@contraxsuite.com>>.**
## Structure
Please note that ContraxSuite installations generally require trained models or knowledge sets for usage.
* ContraxSuite web application: https://github.com/LexPredict/lexpredict-contraxsuite
* LexNLP library for extraction: https://github.com/LexPredict/lexpredict-lexnlp
* ContraxSuite pre-trained models and "knowledge sets": https://github.com/LexPredict/lexpredict-legal-dictionary
* ContraxSuite agreement samples: https://github.com/LexPredict/lexpredict-contraxsuite-samples
* ContraxSuite deployment automation: https://github.com/LexPredict/lexpredict-contraxsuite-deploy
## Releases
Please note that ContraxSuite releases can be found under **non-master** branches. Releases, including dates, are listed below:
* 2.3.0: June 16, 2022 - Thirty fourth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/2.3.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/documentation/Backend%20Release%20Notes%20-%20Release%202.3.pdf)
* 2.2.0: February 1, 2022 - Thirty third public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/2.2.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.2.0/documentation/Backend%20Release%20Notes%20-%20Release%202.2.pdf)
* 2.1.0: September 16, 2021 - Thirty second public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/2.1.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.1.0/documentation/Backend%20Release%20Notes%20-%20Release%202.1.pdf)
* 2.0.0: May 25, 2021 - Thirty first public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/2.0.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.0.0/documentation/Backend%20Release%20Notes%20-%20Release%202.0.pdf)
* 1.8.0: December 2, 2020 - Thirtieth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.8.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.8.0/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.8.0.pdf)
* 1.7.0: August 28, 2020 - Twenty ninth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.7.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.7.0/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.7.0.pdf)
* 1.6.0: June 9, 2020 - Twenty eighth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.6.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.6.0/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.6.0.pdf)
* 1.5.0: February 7, 2020 - Twenty seventh public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.5.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.5.0/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.5.0.pdf)
* 1.4.0: December 23, 2019 - Twenty sixth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.4.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.4.0/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.4.0.pdf)
* 1.3.0: November 1, 2019 - Twenty fifth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.3.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.3.0/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.3.0.pdf)
* 1.2.3: July 31, 2019 - Twenty fourth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.2.3) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.2.3/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.2.3.pdf)
* 1.2.2: June 12, 2019 - Twenty third public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.2.2) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.2.2/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.2.2.pdf)
* 1.2.1: May 1, 2019 - Twenty second public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.2.1) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.2.1/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.2.1.pdf)
* 1.2.0: April 1, 2019 - Twenty first public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.2.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.2.0/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.2.0.pdf)
* 1.1.9: March 2, 2019 - Twentieth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.9) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.9/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.9.pdf)
* 1.1.8: February 11, 2019 - Nineteenth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.8) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.8/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.8.pdf)
* 1.1.7: January 12, 2019 - Eighteenth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.7) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.7/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.7.pdf)
* 1.1.6: December 1, 2018 - Seventeenth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.6) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.7) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.6/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.6.pdf)
* 1.1.5: November 7, 2018 - Sixteenth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.5) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.5/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.5.pdf)
* 1.1.4: October 1, 2018 - Fifteenth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.4) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.4/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.4.pdf)
* 1.1.3: August 24, 2018 - Fourteenth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.3) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.3/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.3.pdf)
* 1.1.2: August 1, 2018 - Thirteenth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.2) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.2/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.2.pdf)
* 1.1.1: July 1, 2018 - Twelfth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.1) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.1/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.1.pdf)
* 1.1.0: June 1, 2018 - Eleventh public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.1.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.1.0/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.1.0.pdf)
* 1.0.9: May 1, 2018 - Tenth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.9) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.9) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.0.9/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.9.pdf)
* 1.0.8: April 1, 2018 - Ninth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.8) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.8) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.0.8/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.8.pdf)
* 1.0.7: March 1, 2018 - Eighth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.7) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.7) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.0.7/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.7.pdf)
* 1.0.6: February 1, 2018 - Seventh public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.6) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.6) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.0.6/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.6.pdf)
* 1.0.5: January 1, 2018 - Sixth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.5) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.5) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.5) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.0.5/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.5.pdf)
* 1.0.4: December 1, 2017 - Fifth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.4) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.4) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.4) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.4) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.0.4/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.4.pdf)
* 1.0.3: November 1, 2017 - Fourth public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.3) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.3) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.3) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.3) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.0.3/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.3.pdf)
* 1.0.2: October 1, 2017 - Third public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.2) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.2) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.2) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.2) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/master/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.2.pdf)
* 1.0.1: September 1, 2017 - Second public release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0.1) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/1.0.1) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1.0.1) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/1.0.1) | [changelog](https://github.com/LexPredict/lexpredict-contraxsuite/blob/1.0.1/documentation/Release%20Notes%20and%20Changelog%20-%20Release%201.0.1.pdf)
* 1.0: August 1, 2017 - Initial open source release; [code](https://github.com/LexPredict/lexpredict-contraxsuite/tree/1.0) | [data](https://github.com/LexPredict/lexpredict-legal-dictionary/tree/49cc3b3d3d3b6df469ca378be33a268eedd1df51) | [deploy](https://github.com/LexPredict/lexpredict-contraxsuite-deploy/tree/1a27d73c1798d70547f203323fe655828ce2f905) | [samples](https://github.com/LexPredict/lexpredict-contraxsuite-samples/tree/b45aa76cdf867b6cb3a31b3c626a90de7bfc4256)
================================================
FILE: contraxsuite_services/.flake8
================================================
[flake8]
ignore =
# F812: list comprehension redefines ...
F812,
# H101: Use TODO(NAME)
H101,
# H202: assertRaises Exception too broad
H202,
# H401: docstring should not start with a space
H401,
# H403: multi line docstrings should end on a new line
H403,
# H404: multi line docstring should start without a leading new line
H404,
# H405: multi line docstring summary not separated with an empty line
H405,
# E722 - bare except
E722,
# F403
F403 - wildcard imports via *
# F405,
F405 - wildcard imports via *
# E501 - line size
E501,
# W291 - trailing whitespace (usually we have in text strings
W291,
W504, W503,
E122, E127, E126,
# maximum length that any line (with some exceptions) may be
max-line-length = 130
# comma-separated list of glob patterns to exclude from checks
exclude =
.git,
*.pyc,
__pycache__,
**/migrations/*
# Count the number of occurrences of each error/warning code and print a report
statistics = True
# Redirect all output to the specified file
output-file = flake_report.txt
# Also print output to stdout if output-file has been configured
tee = True
================================================
FILE: contraxsuite_services/.pylintrc
================================================
[MASTER]
# Specify a configuration file.
#rcfile=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
init-hook='import sys; sys.path.insert(0, ".")'
# Profiled execution.
profile=no
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=migrations, tmp_code_samples, tmp
# Pickle collected data for later comparisons.
persistent=yes
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=pylint_django
[MESSAGES CONTROL]
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time.
#enable=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once).
disable=W0142,W0403,W0232,E1101,C0111,C0103,unused-wildcard-import,wildcard-import,C0301
[REPORTS]
# Set the output format. Available formats are text, parseable, colorized, msvs
# (visual studio) and html
output-format=text
# Put messages in a separate file for each module / package specified on the
# command line instead of printing them on stdout. Reports (if any) will be
# written in a file name "pylint_global.[txt|html]".
files-output=no
# Tells whether to display a full report or only the messages
reports=yes
# Python expression which should return a note less than 10 (10 is the highest
# note). You have access to the variables errors warning, statement which
# respectively contain the number of errors / warnings messages and the total
# number of statements analyzed. This is used by the global evaluation report
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Add a comment according to your evaluation note. This is used by the global
# evaluation report (RP0004).
comment=no
[FORMAT]
# Maximum number of characters on a single line.
max-line-length=100
# Maximum number of lines in a module
max-module-lines=1000
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string=' '
[TYPECHECK]
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# List of classes names for which member attributes should not be checked
# (useful for classes with attributes dynamically set).
ignored-classes=SQLObject
# When zope mode is activated, add a predefined set of Zope acquired attributes
# to generated-members.
zope=no
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E0201 when accessed. Python regular
# expressions are accepted.
generated-members=REQUEST,acl_users,aq_parent,objects,status_code,content,templates,fields,cleaned_data,instance,DoesNotExist,context,_headers,request,kwargs,pk,is_valid,save
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,XXX,TODO
[SIMILARITIES]
# Minimum lines number of a similarity.
min-similarity-lines=4
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
[BASIC]
# Required attributes for module, separated by a comma
required-attributes=
# List of builtins function names that should not be used, separated by a comma
bad-functions=map,filter,apply,input
# Regular expression which should only match correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
# Regular expression which should only match correct module level names
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
# Regular expression which should only match correct class names
class-rgx=[A-Z_][a-zA-Z0-9]+$
# Regular expression which should only match correct function names
function-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct method names
method-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct instance attribute names
attr-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct argument names
argument-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct variable names
variable-rgx=[a-z_][a-z0-9_]{2,30}$
# Regular expression which should only match correct list comprehension /
# generator expression variable names
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,ex,Run,_,qs,urlpatterns,handler404,handler500
# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata
# Regular expression which should only match functions or classes name which do
# not require a docstring
no-docstring-rgx=__.*__
[VARIABLES]
# Tells whether we should check for unused import in __init__ files.
init-import=no
# A regular expression matching the beginning of the name of dummy variables
# (i.e. not used).
dummy-variables-rgx=_|dummy
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
[IMPORTS]
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=regsub,TERMIOS,Bastion,rexec
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
import-graph=
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
ext-import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
int-import-graph=
[DESIGN]
# Maximum number of arguments for function / method
max-args=10
# Argument names that match this expression will be ignored. Default to name
# with leading underscore
ignored-argument-names=_.*
# Maximum number of locals for function / method body
max-locals=50
# Maximum number of return / yield for function / method body
max-returns=6
# Maximum number of branch for function / method body
max-branchs=20
# Maximum number of statements in function / method body
max-statements=50
# Maximum number of parents for a class (see R0901).
max-parents=25
# Maximum number of attributes for a class (see R0902).
max-attributes=30
# Minimum number of public methods for a class (see R0903).
min-public-methods=0
# Maximum number of public methods for a class (see R0904).
max-public-methods=50
[CLASSES]
# List of interface methods to ignore, separated by a comma. This is used for
# instance to not check methods defines in Zope's Interface base class.
ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,__new__,setUp
================================================
FILE: contraxsuite_services/__init__.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
================================================
FILE: contraxsuite_services/apps/__init__.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
# import sys
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
# if 'celery' not in sys.modules:
# from .celery import app as celery_app
# __all__ = ('celery_app',)
================================================
FILE: contraxsuite_services/apps/analyze/__init__.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
================================================
FILE: contraxsuite_services/apps/analyze/admin.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
import os.path
from io import BytesIO
import regex as re
from django import forms
from django.core.files.uploadedfile import TemporaryUploadedFile
from django.db.models import F
from django.contrib import admin
from django.conf import settings
from django.http import JsonResponse
from django.urls import path, reverse
from apps.analyze.models import (
DocumentCluster, TextUnitCluster,
SimilarityRun, DocumentSimilarity, TextUnitSimilarity, PartySimilarity,
DocumentClassification, DocumentClassifier, DocumentClassifierSuggestion,
TextUnitClassification, TextUnitClassifier, TextUnitClassifierSuggestion,
DocumentVector, TextUnitVector, MLModel)
from apps.common.file_storage import get_file_storage
from apps.project.models import Project
file_storage = get_file_storage()
class DocumentClusterAdmin(admin.ModelAdmin):
list_display = ('cluster_id', 'name', 'self_name', 'cluster_by', 'using')
search_fields = ('name', 'self_name')
class TextUnitClusterAdmin(DocumentClusterAdmin):
raw_id_fields = ('text_units',)
class SimilarityRunAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'feature_source', 'created_date', 'created_by')
search_fields = ('name', 'feature_source')
class DocumentSimilarityAdmin(admin.ModelAdmin):
list_display = ('document_a', 'document_b', 'similarity', 'run')
search_fields = ('document_a__name', 'document_b__name')
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.select_related('document_a', 'document_b', 'run') \
.only('document_a__name', 'document_b__name', 'similarity', 'run')
return qs
class PartySimilarityAdmin(admin.ModelAdmin):
list_display = ('party_a', 'party_b', 'similarity', 'run')
search_fields = ('party_a__name', 'party_b__name', 'run')
class TextUnitSimilarityAdmin(admin.ModelAdmin):
list_display = ('similarity',
'document_a_name', 'text_unit_a_id',
'document_b_name', 'text_unit_b_id', 'run')
search_fields = ('document_a_name', 'document_b_name',
'text_unit_a_id__exact', 'text_unit_b_id__exact')
raw_id_fields = ('text_unit_a', 'text_unit_b')
def document_a_name(self, obj):
return obj.document_a_name
def document_b_name(self, obj):
return obj.document_b_name
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.annotate(document_a_name=F('text_unit_a__document__name'),
document_b_name=F('text_unit_b__document__name'))
return qs.select_related('text_unit_a__document', 'text_unit_b__document', 'run').only(
'similarity', 'document_a__name', 'text_unit_a_id',
'document_b__name', 'text_unit_b_id', 'run')
def get_search_fields(self, request):
q = request.GET.get('q')
if q and q.isdigit():
return 'text_unit_a_id__exact', 'text_unit_b_id__exact'
return 'document_a_name', 'document_b_name'
class DocumentClassificationAdmin(admin.ModelAdmin):
list_display = ('document_id', 'document', 'class_name', 'class_value')
search_fields = ('document__name', 'class_name')
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.select_related('document') \
.only('document_id', 'document__name', 'class_name', 'class_value')
return qs
class DocumentClassifierAdmin(admin.ModelAdmin):
list_display = ('name', 'version', 'class_name')
search_fields = ('name', 'version', 'class_name')
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.only('name', 'version', 'class_name')
return qs
class DocumentClassifierSuggestionAdmin(admin.ModelAdmin):
list_display = ('classifier_id', 'document_id', 'classifier_run', 'classifier_confidence', 'class_name')
search_fields = ('classifier__name', 'classifier__version', 'classifier_run', 'classifier_id',
'classifier_confidence', 'class_name')
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.select_related('classifier', 'document') \
.only('classifier_id', 'classifier__name', 'document_id',
'classifier_run', 'classifier_confidence', 'class_name')
return qs
class TextUnitClassificationAdmin(admin.ModelAdmin):
list_display = ('text_unit_id', 'class_name', 'class_value')
search_fields = ('text_unit__unit_type', 'class_name')
raw_id_fields = ('text_unit',)
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.select_related('text_unit') \
.only('text_unit_id', 'class_name', 'class_value')
return qs
class TextUnitClassifierAdmin(admin.ModelAdmin):
list_display = ('name', 'version', 'class_name')
search_fields = ('name', 'version', 'class_name')
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.only('name', 'version', 'class_name')
return qs
class TextUnitClassifierSuggestionAdmin(admin.ModelAdmin):
list_display = ('classifier_id', 'text_unit_id', 'classifier_run', 'classifier_confidence', 'class_name')
search_fields = ('classifier__name', 'classifier__version', 'classifier_run', 'classifier_id',
'classifier_confidence', 'class_name')
raw_id_fields = ('text_unit',)
def get_queryset(self, request):
qs = super().get_queryset(request)
qs = qs.select_related('classifier', 'text_unit') \
.only('classifier_id', 'classifier__name', 'text_unit_id',
'classifier_run', 'classifier_confidence', 'class_name')
return qs
class DocumentVectorAdmin(admin.ModelAdmin):
list_display = ('pk', 'vector_name', 'transformer_name', 'document', 'project', 'timestamp')
search_fields = ('vector_name', 'transformer__name', 'document__name')
def transformer_name(self, obj):
return obj.transformer.name
transformer_name.short_description = 'Transformer'
transformer_name.admin_order_field = 'transformer__name'
def project(self, obj):
return obj.document.project.name
project.short_description = 'Project'
project.admin_order_field = 'document__project__name'
def get_queryset(self, request):
return super().get_queryset(request) \
.select_related('transformer', 'document', 'document__project') \
.only('pk', 'vector_name', 'transformer__name', 'document__name',
'document__project__name', 'timestamp') \
.order_by('document_id', 'timestamp')
class TextUnitVectorAdmin(admin.ModelAdmin):
list_display = ('pk', 'vector_name', 'transformer_name', 'text_unit_id', 'document', 'project', 'timestamp')
search_fields = ('vector_name', 'text_unit_id', 'text_unit__document__name', 'text_unit__document__project__name')
raw_id_fields = ('text_unit',)
def transformer_name(self, obj):
return obj.transformer.name
transformer_name.short_description = 'Transformer'
transformer_name.admin_order_field = 'transformer__name'
def document(self, obj):
return obj.text_unit.document.name
document.short_description = 'Document'
document.admin_order_field = 'text_unit__document__name'
def project(self, obj):
return obj.text_unit.project.name
project.short_description = 'Project'
project.admin_order_field = 'text_unit__project__name'
def get_queryset(self, request):
return super().get_queryset(request)\
.select_related('transformer', 'text_unit__document', 'text_unit__project') \
.only('pk', 'vector_name', 'transformer__name', 'text_unit_id',
'text_unit__document__name', 'text_unit__project__name', 'timestamp') \
.order_by('text_unit_id', 'timestamp')
class MLModelChangeForm(forms.ModelForm):
class Meta:
model = MLModel
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['project'].queryset = Project.objects.order_by('-pk')
def clean(self):
pass
# something = self.cleaned_data.get('schedule')
# raise forms.ValidationError('')
class MLModelAdmin(admin.ModelAdmin):
list_display = ('name', 'version', 'target_entity', 'apply_to', 'language', 'project', 'default')
search_fields = ('name', 'version', 'target_entity', 'apply_to', 'language', 'project')
form = MLModelChangeForm
change_form_template = 'admin/analyze/mlmodel/change_form.html'
actions = ['delete_with_files']
def get_form(self, request, obj=None, **kwargs):
form = super().get_form(request, obj, **kwargs)
form.base_fields['codebase_version'].initial = settings.VERSION_NUMBER
form.base_fields['user_modified'].initial = True
return form
def delete_with_files(self, request, queryset):
# delete the model objects and stored files
objects = list(queryset)
for model in objects: # type: MLModel
try:
content = file_storage.check_path(model.model_path)
if not content['exists']:
continue
# delete the folder (if content['is_folder']) and all the files within
# or just the file
file_storage.delete_file(model.model_path)
except Exception as e:
raise Exception(f'There were error while deleting path {model.model_path}: {e}')
model.delete()
def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
context['check_path_exists_url'] = reverse('admin:check_path_exists_view')
context['file_upload_url'] = reverse('admin:file_upload_view')
context['create_folder_url'] = reverse('admin:create_folder_view')
return super().render_change_form(request, context, add, change, form_url, obj)
def file_upload_view(self, request, **kwargs):
file: TemporaryUploadedFile = request.FILES.get('model-file')
if not file:
return JsonResponse({'success': True})
model_name = request.POST.get('model-name')
model_path = request.POST.get('model-path')
if not model_name or not model_path:
errors = ['model name is not provided' if not model_name else '',
'target path is not provided' if not model_path else '']
error_str = ', '.join([e for e in errors if e])
return JsonResponse({'success': False,
'errors': error_str})
# try uploading the file into the WebDav folder
target_file_name = file.name
model_folder = model_path
content = file_storage.check_path(model_path)
# user specified the full path to the file
if not content['is_folder']:
target_file_name = os.path.basename(model_path)
model_folder = os.path.dirname(model_path)
target_path = os.path.join(model_folder, target_file_name)
content = file_storage.check_path(target_path)
if content['exists']:
# delete the file prior to uploading
try:
file_storage.delete_file(target_path)
except Exception as e:
print(e)
return JsonResponse({'success': False,
'errors': "Can't delete the existing file"})
try:
byte_data = file.read()
file_storage.write_file(target_path, byte_data, file.size)
except Exception as e:
print(e)
return JsonResponse({'success': False,
'errors': "Can't upload the file"})
# save the model - user updated flag + current CS version
model: MLModel = MLModel.objects.filter(name=model_name).first()
if model:
model.user_modified = True
model.codebase_version = settings.VERSION_NUMBER
model.save()
return JsonResponse({'success': True})
def check_path_exists_view(self, request, **kwargs):
webdav_path = request.POST.get('webdav_path')
# context: { 'exists': True, 'is_folder': True, 'not_empty': False }
content = file_storage.check_path(webdav_path)
return JsonResponse(content)
def create_folder_view(self, request, **kwargs):
webdav_path = request.POST.get('webdav_path').strip()
if not webdav_path:
return JsonResponse({'success': False, 'errors': ['Folder is empty string']})
folders = [f.strip() for f in webdav_path.strip('/').split('/')]
if not all(folders):
return JsonResponse({'success': False, 'errors': ['There are empty path parts between "/" symbols']})
for i, folder in enumerate(folders):
if not file_storage.RE_VALID_SUBFOLDER.fullmatch(folder):
normalized_folder = file_storage.normalize_folder_name(folder)
if not normalized_folder:
return JsonResponse({'success': False,
'errors': [f'Path part "{folder}" is not a valid folder name']})
folders[i] = normalized_folder
norm_path = os.path.join(*folders)
return JsonResponse({'success': False,
'errors': [f'Path part "{folder}" is not a valid folder name. \n' +
f'Suggested folder name is "{norm_path}"']})
for i in range(len(folders)):
sub_path = '/'.join(folders[:i + 1])
content = file_storage.check_path(sub_path)
if content['exists'] and not content['is_folder']:
return JsonResponse({'success': False,
'errors': [f'Path part "{sub_path}" is an existing file']})
for i in range(len(folders)):
sub_path = '/'.join(folders[:i + 1])
content = file_storage.check_path(sub_path)
if content['exists']:
continue
try:
file_storage.mkdir(sub_path)
except Exception as e:
return JsonResponse({'success': False,
'errors': [f'Error while creating folder "{sub_path}": {e}']})
return JsonResponse({'success': True, 'errors': []})
def get_urls(self):
urls = super().get_urls()
my_urls = [
path('check_path_exists_view/',
self.check_path_exists_view,
name='check_path_exists_view'),
path('create_folder_view/',
self.create_folder_view,
name='create_folder_view'),
path('file_upload_view/',
self.file_upload_view,
name='file_upload_view')]
return my_urls + urls
admin.site.register(DocumentCluster, DocumentClusterAdmin)
admin.site.register(TextUnitCluster, TextUnitClusterAdmin)
admin.site.register(SimilarityRun, SimilarityRunAdmin)
admin.site.register(DocumentSimilarity, DocumentSimilarityAdmin)
admin.site.register(TextUnitSimilarity, TextUnitSimilarityAdmin)
admin.site.register(PartySimilarity, PartySimilarityAdmin)
admin.site.register(DocumentClassification, DocumentClassificationAdmin)
admin.site.register(DocumentClassifier, DocumentClassifierAdmin)
admin.site.register(DocumentClassifierSuggestion, DocumentClassifierSuggestionAdmin)
admin.site.register(TextUnitClassification, TextUnitClassificationAdmin)
admin.site.register(TextUnitClassifier, TextUnitClassifierAdmin)
admin.site.register(TextUnitClassifierSuggestion, TextUnitClassifierSuggestionAdmin)
admin.site.register(DocumentVector, DocumentVectorAdmin)
admin.site.register(TextUnitVector, TextUnitVectorAdmin)
admin.site.register(MLModel, MLModelAdmin)
================================================
FILE: contraxsuite_services/apps/analyze/api/__init__.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
================================================
FILE: contraxsuite_services/apps/analyze/api/v1.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
# Third-party imports
from typing import Set, OrderedDict, Dict, Tuple, List, Any, Optional
from guardian.shortcuts import get_objects_for_user
from rest_framework import serializers, routers, viewsets
from rest_framework.exceptions import APIException
from rest_framework.permissions import IsAuthenticated
# Django imports
from django.conf.urls import url
from django.db.models import F, Count, Q
from django.db.models.functions import Left
# Project imports
from rest_framework.utils.serializer_helpers import ReturnList
import apps.common.mixins
from apps.analyze.models import *
from apps.common.schemas import JqFiltersListViewSchema
# TODO: this produces circular import
# from apps.analyze.views import ExistingClassifierClassifyView, CreateClassifierClassifyView, \
# ClusterView
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
# --------------------------------------------------------
# TextUnitClassification Views
# --------------------------------------------------------
from apps.document.models import DocumentPDFRepresentation
from apps.document.pdf_coordinates.text_coord_map import TextCoordMap
class TextUnitClassificationSerializer(apps.common.mixins.SimpleRelationSerializer):
class Meta:
model = TextUnitClassification
fields = ['pk', 'text_unit__document__pk', 'text_unit__document__name',
'text_unit__document__document_type', 'text_unit__document__description',
'text_unit__pk', 'text_unit__unit_type', 'text_unit__language',
'class_name', 'class_value', 'user__username', 'timestamp']
class TextUnitClassificationCreateSerializer(serializers.ModelSerializer):
text_unit_id = serializers.PrimaryKeyRelatedField(
source='text_unit',
queryset=TextUnit.objects.all())
user_id = serializers.SerializerMethodField()
class Meta:
model = TextUnitClassification
fields = ['pk', 'class_name', 'class_value', 'text_unit_id', 'user_id']
def get_user_id(self, obj):
return self.context['request'].user.pk
get_user_id.output_field = serializers.IntegerField(allow_null=True)
class TextUnitClassificationViewSet(apps.common.mixins.JqListAPIMixin, viewsets.ModelViewSet):
"""
list: Text Unit Classification List
retrieve: Retrieve Text Unit Classification
create: Create Text Unit Classification
update: Update Text Unit Classification
delete: Delete Text Unit Classification
"""
queryset = TextUnitClassification.objects.all()
http_method_names = ['get', 'post', 'delete']
def get_serializer_class(self):
if self.action == 'create':
return TextUnitClassificationCreateSerializer
return TextUnitClassificationSerializer
def get_queryset(self):
qs = super().get_queryset()
qs = qs.select_related('text_unit', 'text_unit__document', 'user')
return qs
# --------------------------------------------------------
# TextUnitClassifier Views
# --------------------------------------------------------
class TextUnitClassifierSerializer(apps.common.mixins.SimpleRelationSerializer):
suggestions = serializers.SerializerMethodField()
class Meta:
model = TextUnitClassifier
fields = ['pk', 'name', 'version', 'class_name', 'is_active', 'suggestions']
def get_suggestions(self, obj):
return obj.textunitclassifiersuggestion_set.count()
get_suggestions.output_field = serializers.IntegerField(allow_null=True)
class TextUnitClassifierViewSet(apps.common.mixins.JqListAPIMixin, viewsets.ModelViewSet):
"""
list: Text Unit Classifier List
delete: Delete Text Unit Classifier
"""
queryset = TextUnitClassifier.objects.all()
serializer_class = TextUnitClassifierSerializer
http_method_names = ['get', 'delete']
# --------------------------------------------------------
# TextUnitClassifierSuggestion Views
# --------------------------------------------------------
class TextUnitClassifierSuggestionSerializer(TextUnitClassificationSerializer):
class Meta:
model = TextUnitClassifierSuggestion
fields = ['pk', 'text_unit__document__pk', 'text_unit__document__name',
'text_unit__document__document_type',
'text_unit__document__description',
'text_unit__pk', 'class_name', 'class_value',
'classifier_run', 'classifier_confidence']
class TextUnitClassifierSuggestionViewSet(apps.common.mixins.JqListAPIMixin, viewsets.ModelViewSet):
"""
list: Text Unit Classifier Suggestion List
delete: Delete Text Unit Classifier Suggestion
"""
queryset = TextUnitClassifierSuggestion.objects.all()
serializer_class = TextUnitClassifierSuggestionSerializer
http_method_names = ['get', 'delete']
# --------------------------------------------------------
# DocumentCluster Views
# --------------------------------------------------------
class DocumentSerializer(apps.common.mixins.SimpleRelationSerializer):
class Meta:
model = Document
fields = ['pk', 'name', 'document_type']
class DocumentClusterSerializer(apps.common.mixins.SimpleRelationSerializer):
documents_count = serializers.SerializerMethodField()
document_data = DocumentSerializer(
source='documents', many=True, read_only=True)
class Meta:
model = DocumentCluster
fields = ['pk', 'cluster_id', 'name', 'self_name',
'description', 'cluster_by', 'using', 'created_date',
'documents_count', 'document_data']
def get_documents_count(self, obj):
return obj.documents.count()
get_documents_count.output_field = serializers.IntegerField(allow_null=True)
class DocumentClusterUpdateSerializer(apps.common.mixins.SimpleRelationSerializer):
class Meta:
model = DocumentCluster
fields = ['pk', 'name']
class DocumentClusterAPIView(apps.common.mixins.JqListAPIView, viewsets.ModelViewSet):
"""
list: Document Cluster List
retrieve: Retrieve Document Cluster
update: Update Document Cluster (name)
partial_update: Partial Update Document Cluster (name)
"""
queryset = DocumentCluster.objects.all()
http_method_names = ['get', 'patch', 'put']
def get_queryset(self):
qs = super().get_queryset()
document_id = self.request.GET.get('document_id')
if document_id:
qs = qs.filter(documents_id=document_id)
return qs.order_by('cluster_by', 'using', 'cluster_id')
def get_serializer_class(self):
if self.action in ('update', 'partial_update'):
return DocumentClusterUpdateSerializer
return DocumentClusterSerializer
# --------------------------------------------------------
# TextUnitCluster Views
# --------------------------------------------------------
class TextUnitClusterSerializer(apps.common.mixins.SimpleRelationSerializer):
text_unit_count = serializers.SerializerMethodField()
text_unit_data = serializers.SerializerMethodField()
class Meta:
model = TextUnitCluster
fields = ['pk', 'cluster_id', 'name', 'self_name',
'description', 'cluster_by', 'using', 'created_date',
'text_unit_count', 'text_unit_data']
def get_text_unit_count(self, obj):
return obj.text_units.count()
get_text_unit_count.output_field = serializers.IntegerField(allow_null=True)
def get_text_unit_data(self, obj):
text_units = obj.text_units
text_units = text_units.values(
'pk', 'unit_type', 'text', 'language',
'document__pk', 'document__name',
'document__description', 'document__document_type')
return list(text_units)
get_text_unit_data.output_field = serializers.ListField(child=serializers.DictField())
class TextUnitClusterListAPIView(apps.common.mixins.JqListAPIView):
"""
Text Unit Cluster List
"""
queryset = TextUnitCluster.objects.all()
serializer_class = TextUnitClusterSerializer
def get_queryset(self):
qs = super().get_queryset()
text_unit_id = self.request.GET.get('text_unit_id')
if text_unit_id:
qs = qs.filter(text_units_id=text_unit_id)
return qs.order_by('cluster_by', 'using', 'cluster_id')
# --------------------------------------------------------
# Similarity Run Views
# --------------------------------------------------------
# TODO: add permissions
class SimilarityRunSerializer(serializers.ModelSerializer):
items_count = serializers.IntegerField()
class Meta:
model = SimilarityRun
fields = ['id', 'project_id', 'feature_source',
'unit_source', 'unit_type', 'unit_id', 'items_count',
'created_by', 'created_date']
class SimilarityRunSchema(JqFiltersListViewSchema):
parameters = [
{'name': 'unit_source',
'in': 'query',
'required': False,
'description': 'document / text_unit',
'schema': {'type': 'string'}},
{'name': 'project_id',
'in': 'query',
'required': False,
'description': 'Project ID',
'schema': {'type': 'integer'}},
]
response_serializer = SimilarityRunSerializer()
class SimilarityRunPermissions(IsAuthenticated):
def has_permission(self, request, view):
# granularly forbid deletion; filter in SimilarityRunPermissionMixin
if view.action == 'delete':
if 'project_id' in request.GET:
project = Project.objects.get(id=request.GET['project_id'])
return request.user.has_perm('project.change_project', project)
return request.user.has_perm('project.change_project')
return True
class SimilarityRunPermissionMixin:
permission_classes = [SimilarityRunPermissions]
def get_queryset(self):
projects = get_objects_for_user(self.request.user, 'project.view_project', Project) \
.filter(delete_pending=False)
return SimilarityRun.objects.filter(project__in=projects)
class SimilarityRunViewSet(SimilarityRunPermissionMixin,
apps.common.mixins.JqListAPIView,
viewsets.ModelViewSet):
"""
list: list Similarity Run objects
retrieve: get Similarity Run object
delete: delete Similarity Run object
"""
http_method_names = ['get', 'delete']
queryset = SimilarityRun.objects.all()
serializer_class = SimilarityRunSerializer
schema = SimilarityRunSchema()
def get_queryset(self):
qs = super().get_queryset()
if 'unit_source' in self.request.GET:
qs = qs.filter(unit_source=self.request.GET['unit_source'])
if 'project_id' in self.request.GET:
qs = qs.filter(project_id=self.request.GET['project_id'])
qs = qs.annotate(items_count=Count('documentsimilarity') +
Count('textunitsimilarity') +
Count('partysimilarity'))
return qs
# --------------------------------------------------------
# DocumentSimilarity Views
# --------------------------------------------------------
# TODO: add permissions
class DocumentSimilaritySerializer(apps.common.mixins.SimpleRelationSerializer):
run = SimilarityRunSerializer(many=False, read_only=True)
class Meta:
model = DocumentSimilarity
fields = ['document_a__name', 'document_a__pk',
'document_b__name', 'document_b__pk',
'similarity', 'run']
class DocumentSimilarityListAPIView(apps.common.mixins.JqListAPIView):
"""
Base Document Similarity List
"""
queryset = DocumentSimilarity.objects.all()
serializer_class = DocumentSimilaritySerializer
def get_queryset(self):
qs = super().get_queryset()
run_id = self.request.GET.get('run_id')
if run_id:
qs = qs.filter(run_id=run_id)
document_id = self.request.GET.get('document_id')
if document_id:
qs = qs.filter(document_a_id=document_id)
return qs.select_related('document_a', 'document_b', 'run')
# --------------------------------------------------------
# Project DocumentSimilarity Views
# --------------------------------------------------------
class ProjectDocumentSimilaritySerializer(apps.common.mixins.SimpleRelationSerializer):
# run = SimilarityRunSerializer(many=False, read_only=True)
document_a_name = serializers.CharField()
document_b_name = serializers.CharField()
document_b_text = serializers.CharField()
class Meta:
model = DocumentSimilarity
fields = ['document_a_name', 'document_a_id',
'document_b_name', 'document_b_id', 'document_b_text',
'similarity', 'run_id']
class ProjectDocumentSimilarityResponseSerializer(serializers.Serializer):
data = serializers.ListSerializer(child=ProjectDocumentSimilaritySerializer())
document_a_id = serializers.IntegerField(required=False, allow_null=True)
document_a_name = serializers.CharField(required=False, allow_null=True)
total_records = serializers.IntegerField(required=False)
class SimilarProjectDocumentsSchema(JqFiltersListViewSchema):
parameters = [
{'name': 'text_max_length',
'in': 'query',
'required': False,
'description': 'document b text max length, 0 to get all text',
'schema': {'type': 'integer'}},
{'name': 'run_id',
'in': 'query',
'required': False,
'description': 'run id or document id required',
'schema': {'type': 'integer'}},
{'name': 'document_id',
'in': 'query',
'required': False,
'description': 'run id or document id required',
'schema': {'type': 'integer'}}
]
response_serializer = ProjectDocumentSimilarityResponseSerializer()
class ProjectDocumentSimilarityListPermissionViewMixin:
permission_classes = [IsAuthenticated]
def get_queryset(self):
return DocumentSimilarity.objects.filter(document_a__in=Document.get_allowed_document_ids(self.request.user.id))
class ProjectDocumentSimilarityListAPIView(ProjectDocumentSimilarityListPermissionViewMixin,
apps.common.mixins.JqListAPIView):
"""
Project Document Similarity List for ONE document
Params:
- run_id: int - run id (either document_id required)
- document_id: int - document id (either run_id required)
- text_max_length: int - document b text max length, '0' to get all text
"""
queryset = DocumentSimilarity.objects.all()
serializer_class = ProjectDocumentSimilaritySerializer
schema = SimilarProjectDocumentsSchema()
complex_value_for_fields = ['similarity']
text_max_length = 300
action = '_list'
def get_queryset(self):
qs = super().get_queryset().order_by('-similarity', 'document_a_id')
run_id = self.request.GET.get('run_id')
document_id = self.request.GET.get('document_id')
if run_id:
# choose similar documents inside one run
qs = qs.filter(run_id=run_id)
elif document_id:
# choose similar documents for ONE document inside ONE project
qs = qs.filter(document_a_id=document_id,
document_b__project_id=F('document_a__project_id'))
else:
raise APIException('run_id or document_id query parameter required', code=404)
left = self.request.GET.get('text_max_length')
document_b_text_ann = F('document_b__documenttext__full_text')
if left not in ['0']:
try:
left = int(left) or self.text_max_length
except:
left = self.text_max_length
document_b_text_ann = Left(document_b_text_ann, left)
qs = qs.annotate(
document_a_name=F('document_a__name'),
document_b_name=F('document_b__name'),
document_b_text=document_b_text_ann)
return qs.select_related('document_a', 'document_b', 'document_b__documenttext', 'run')
def get_extra_data(self, queryset, initial_queryset):
extra_data = super().get_extra_data(queryset, initial_queryset)
document_id = self.request.GET.get('document_id')
extra_data['document_a_id'] = int(document_id) or None
extra_data['document_a_name'] = Document.objects.get(id=document_id).name if document_id else None
return extra_data
# --------------------------------------------------------
# TextUnitSimilarity Views
# --------------------------------------------------------
# TODO: add permissions
class TextUnitSimilaritySerializer(apps.common.mixins.SimpleRelationSerializer):
run = SimilarityRunSerializer(many=False, read_only=True)
class Meta:
model = TextUnitSimilarity
fields = ['text_unit_a_id', 'text_unit_a__unit_type',
'text_unit_a__language', 'text_unit_a__text',
'document_a_id', 'document_a__name',
'text_unit_b_id', 'text_unit_b__unit_type',
'text_unit_b__language', 'text_unit_b__text',
'document_b_id', 'document_b__name',
'similarity', 'run']
class TextUnitSimilarityListAPIView(apps.common.mixins.JqListAPIView):
"""
Base Text Unit Similarity List
"""
queryset = TextUnitSimilarity.objects.all()
serializer_class = TextUnitSimilaritySerializer
def get_queryset(self):
qs = super().get_queryset()
run_id = self.request.GET.get('run_id')
if run_id:
qs = qs.filter(run_id=run_id)
text_unit_id = self.request.GET.get('text_unit_id')
if text_unit_id:
qs = qs.filter(text_units_a_id=text_unit_id)
return qs.select_related('text_unit_a',
'text_unit_b',
'document_a', 'document_b', 'run')
# --------------------------------------------------------
# Project TextUnitSimilarity Views
# --------------------------------------------------------
class ProjectTextUnitSimilaritySerializer(apps.common.mixins.SimpleRelationSerializer):
# run = SimilarityRunSerializer(many=False, read_only=True)
document_a_name = serializers.CharField()
document_b_name = serializers.CharField()
text_unit_a_text = serializers.CharField()
text_unit_b_text = serializers.CharField()
class Meta:
model = TextUnitSimilarity
fields = ['document_a_name', 'document_a_id',
'text_unit_a_id', 'text_unit_a_text', 'text_unit_a__unit_type',
'text_unit_a__location_start', 'text_unit_a__location_end',
'document_b_name', 'document_b_id',
'text_unit_b_id', 'text_unit_b_text',
'text_unit_b__location_start', 'text_unit_b__location_end',
'similarity', 'run_id']
def to_representation(self, instance):
res = super().to_representation(instance)
return res
class SimilarProjectTextUnitsRequestSerializer(serializers.Serializer):
text_max_length = serializers.IntegerField(required=False, help_text='text unit b text max length, 0 to get all text')
run_id = serializers.IntegerField(required=False, help_text='run id or text unit id required')
last_run = serializers.BooleanField(required=False, help_text='run id or last_run or text unit id required')
text_unit_id = serializers.IntegerField(required=False, help_text='run id or text unit id required')
document_id = serializers.IntegerField(required=False, help_text='document ID')
location_start = serializers.IntegerField(required=False, help_text='start of chosen text block in a Document')
location_end = serializers.IntegerField(required=False, help_text='end of chosen text block in a Document')
selection = serializers.ListField(child=serializers.DictField(), required=False,
help_text='selection coordinates')
class ProjectTextUnitSimilarityResponseSerializer(serializers.Serializer):
data = serializers.ListSerializer(child=ProjectTextUnitSimilaritySerializer())
document_a_id = serializers.IntegerField(required=False, allow_null=True)
selected_text = serializers.CharField(required=False, allow_null=True)
total_records = serializers.IntegerField(required=False)
class SimilarProjectTextUnitsSchema(JqFiltersListViewSchema):
response_serializer = ProjectTextUnitSimilaritySerializer()
request_serializer = SimilarProjectTextUnitsRequestSerializer()
def get_operation(self, path, method):
op = super().get_operation(path, method)
# transform request serializer data in GET query parameters
if method == 'GET':
post_body = super().map_serializer(self.request_serializer)
get_parameters = []
for name, values in post_body['properties'].items():
required_fields = post_body.get('required', [])
query_param = {'name': name,
'in': 'query',
'required': name in required_fields,
'description': values.pop('description', None),
'schema': values}
get_parameters.append(query_param)
op['parameters'].extend(get_parameters)
return op
class ProjectTextUnitSimilarityListPermissionViewMixin:
permission_classes = [IsAuthenticated]
def get_queryset(self):
return TextUnitSimilarity.objects.filter(document_a__in=Document.get_allowed_document_ids(self.request.user.id))
class ProjectTextUnitSimilarityListAPIView(ProjectTextUnitSimilarityListPermissionViewMixin,
apps.common.mixins.JqListAPIView):
"""
Project Text Unit Similarity List for ONE text unit
Params:
- run_id: int - run id (either text_unit_id required)
- text_unit_id: int - text unit id (either run_id required)
- text_max_length: int - text unit b text max length, '0' to get all text
"""
queryset = TextUnitSimilarity.objects.all()
serializer_class = ProjectTextUnitSimilaritySerializer
schema = SimilarProjectTextUnitsSchema()
complex_value_for_fields = ['similarity']
text_max_length = 200
selected_text = None
def post(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def get_queryset(self):
request_data = self.request.data
qs = super().get_queryset().order_by('-similarity', 'text_unit_a_id')
run_id = request_data.get('run_id')
text_unit_id = request_data.get('text_unit_id')
last_run = 'last_run' in request_data # any value
document_id = request_data.get('document_id')
location_start = request_data.get('location_start')
location_end = request_data.get('location_end')
if 'selection' in request_data:
# we got location of the annotation as coordinates
selection = request_data['selection']
location = DocumentPDFRepresentation.get_text_location_by_coords_for_doc(document_id, selection)
location_start, location_end = location
request_data['location_start'] = location_start
request_data['location_end'] = location_end
try:
self.selected_text = Document.objects.get(pk=document_id).text[
location_start:location_end]
except Document.DoesNotExist:
self.selected_text = ""
if run_id:
# choose ALL similar text units inside ONE run
qs = qs.filter(run_id=run_id)
elif text_unit_id:
# choose similar text units for ONE text unit inside ONE project
qs = qs.filter(text_unit_a_id=text_unit_id, project_b=F('project_a'))
elif document_id and location_start is not None and location_end is not None:
# choose similar text units for {SOME chosen text units by location} inside ONE project
text_unit_ids = self.get_text_unit_a_ids(request_data)
qs = qs.filter(text_unit_a_id__in=text_unit_ids, project_b=F('project_a'))
else:
raise APIException('"run_id" or "text_unit_id" or'
' ("document_id" and "location_start" and "location_end") or'
' ("document_id" and "selection")'
' query parameters required', code=404)
if last_run and qs.exists():
last_run_id = qs.order_by('run_id').last().run_id
qs = qs.filter(run_id=last_run_id)
# limit text size if needed to speed up api
left = self.request.GET.get('text_max_length')
text_unit_a_text_ann = F('text_unit_a__text')
text_unit_b_text_ann = F('text_unit_b__text')
if left not in ['0']:
try:
left = int(left) or self.text_max_length
except:
left = self.text_max_length
text_unit_b_text_ann = Left(text_unit_b_text_ann, left)
qs = qs.annotate(
document_a_name=F('document_a__name'),
document_b_name=F('document_b__name'),
text_unit_a_text=text_unit_a_text_ann,
text_unit_b_text=text_unit_b_text_ann)
return qs.select_related('document_a', 'text_unit_a',
'document_b', 'text_unit_b',
'run')
def get_text_unit_a_ids(self, kwargs):
document_id = kwargs.get('document_id')
location_start = kwargs.get('location_start')
location_end = kwargs.get('location_end')
unit_type = kwargs.get('unit_type', 'sentence')
# get text unit IDs having document coordinates
text_unit_qs = TextUnit.objects \
.filter(document_id=document_id, unit_type=unit_type) \
.filter(Q(location_start__lte=location_start, location_end__gte=location_start) |
Q(location_start__gte=location_start, location_end__lte=location_end) |
Q(location_start__lte=location_end, location_end__gte=location_end)) \
.distinct()
return list(text_unit_qs.values_list('pk', flat=True))
def get_extra_data(self, queryset, initial_queryset):
extra_data = super().get_extra_data(queryset, initial_queryset)
document_id = self.request.data.get('document_id')
extra_data['document_id'] = int(document_id) if document_id else None
extra_data['selected_text'] = self.selected_text
return extra_data
def add_extra_list_data(self, request, data: ReturnList):
document_ids: Set[int] = set()
item: OrderedDict
if not request.data.get('need_coordinates'):
return
for item in data:
document_ids.add(item['document_a_id'])
document_ids.add(item['document_b_id'])
# get PDF data for all documents
if not document_ids:
return
document_data: Dict[int, Tuple[List[List[float]], List[Dict[str, Any]]]] = {}
for doc_id in document_ids:
pdf_data = DocumentPDFRepresentation.objects.filter(document_id=doc_id).first()
if pdf_data:
document_data[doc_id] = pdf_data.char_bboxes_list, pdf_data.pages_list
# add coordinates to each text unit
for item in data:
item['selection_a'] = self.get_unit_location_coordinates(
item['document_a_id'], int(item['text_unit_a__location_start']),
int(item['text_unit_a__location_end']), document_data)
item['selection_b'] = self.get_unit_location_coordinates(
item['document_b_id'], int(item['text_unit_b__location_start']),
int(item['text_unit_b__location_end']), document_data)
@classmethod
def get_unit_location_coordinates(
cls,
document_id: int,
loc_start: int,
loc_end: int,
document_data: Dict[int, Tuple[List[List[float]], List[Dict[str, Any]]]]) -> Optional[List[Dict[str, Any]]]:
if loc_start == loc_end:
return None
doc_data = document_data.get(document_id)
if not doc_data:
return None
selections = TextCoordMap.get_line_areas(doc_data[0], doc_data[1], loc_start, loc_end)
if not selections:
return None
return [{'page': s.page, 'area': [
s.area[0], s.area[1], s.area[2], s.area[3]
]} for s in selections]
# --------------------------------------------------------
# PartySimilarity Views
# --------------------------------------------------------
class PartySimilaritySerializer(apps.common.mixins.SimpleRelationSerializer):
run = SimilarityRunSerializer(many=False, read_only=True)
class Meta:
model = PartySimilarity
fields = ['pk', 'party_a__name', 'party_a__description',
'party_a__pk', 'party_a__type_abbr',
'party_b__name', 'party_a__description',
'party_b__pk', 'party_b__type_abbr',
'similarity', 'run']
class PartySimilarityListAPIView(apps.common.mixins.JqListAPIView):
"""
Party Similarity List
"""
queryset = PartySimilarity.objects.all()
serializer_class = PartySimilaritySerializer
def get_queryset(self):
qs = super().get_queryset()
party_id = self.request.GET.get('party_id')
if party_id:
qs = qs.filter(party_a_id=party_id)
return qs.select_related('party_a', 'party_b', 'run')
# --------------------------------------------------------
# Typeahead Views
# --------------------------------------------------------
class TypeaheadTextUnitClassification(apps.common.mixins.TypeaheadAPIView):
"""
Typeahead TextUnitClassification\n
Kwargs: field_name: [class_name, class_value]
GET params:
- q: str
"""
model = TextUnitClassification
document_lookup = 'text_unit__document'
# --------------------------------------------------------
# MLModel Views
# --------------------------------------------------------
class MLModelSerializer(apps.common.mixins.SimpleRelationSerializer):
class Meta:
model = MLModel
# ['id', 'name', 'version', 'vector_name', 'default', 'is_active']
fields = '__all__'
class MLModelListAPIView(apps.common.mixins.JqListAPIView):
"""
MLModel List
"""
queryset = MLModel.objects.all()
serializer_class = MLModelSerializer
def get_queryset(self):
qs = super().get_queryset()
if 'target_entity' in self.request.GET:
qs = qs.filter(target_entity=self.request.GET['target_entity'])
if 'apply_to' in self.request.GET:
qs = qs.filter(target_entity=self.request.GET['apply_to'])
return qs
class TransformerSerializer(apps.common.mixins.SimpleRelationSerializer):
class Meta:
model = MLModel
fields = ['id', 'name']
class DocumentTransformerListAPIView(apps.common.mixins.JqListAPIView):
"""
MLModel List - document transformers only
"""
queryset = MLModel.document_transformers.all()
serializer_class = TransformerSerializer
class TextUnitTransformerListAPIView(apps.common.mixins.JqListAPIView):
"""
MLModel List - text unit transformers only
"""
queryset = MLModel.textunit_transformers.all()
serializer_class = TransformerSerializer
router = routers.DefaultRouter()
router.register('text-unit-classifications', TextUnitClassificationViewSet,
'text-unit-classification')
router.register('text-unit-classifiers', TextUnitClassifierViewSet,
'text-unit-classifier')
router.register('text-unit-classifier-suggestions', TextUnitClassifierSuggestionViewSet,
'text-unit-classifier-suggestion')
router.register('document-cluster', DocumentClusterAPIView, 'document-cluster')
router.register('similarity-runs', SimilarityRunViewSet, 'similarity-runs')
urlpatterns = [
url(r'^text-unit-cluster/list/$', TextUnitClusterListAPIView.as_view(),
name='text-unit-cluster-list'),
url(r'^document-similarity/list/$', DocumentSimilarityListAPIView.as_view(),
name='document-similarity-list'),
url(r'^project-document-similarity/list/$', ProjectDocumentSimilarityListAPIView.as_view(),
name='project-document-similarity-list'),
url(r'^text-unit-similarity/list/$', TextUnitSimilarityListAPIView.as_view(),
name='text-unit-similarity-list'),
url(r'^project-text-unit-similarity/list/$', ProjectTextUnitSimilarityListAPIView.as_view(),
name='project-text-unit-similarity-list'),
url(r'^party-similarity/list/$', PartySimilarityListAPIView.as_view(),
name='party-similarity-list'),
url(r'^ml-model/list/$', MLModelListAPIView.as_view(), name='ml-model-list'),
url(r'^document-transformer/list/$', DocumentTransformerListAPIView.as_view(), name='document-transformer-list'),
url(r'^text-unit-transformer/list/$', TextUnitTransformerListAPIView.as_view(), name='text-unit-transformer-list'),
url(r'^typeahead/text-unit-classification/(?P<field_name>[a-z_]+)/$',
TypeaheadTextUnitClassification.as_view(),
name='typeahead-text-unit-classification'),
]
================================================
FILE: contraxsuite_services/apps/analyze/app_vars.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
# Project imports
from apps.common.models import AppVar
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
NOTIFY_TOO_MANY_DOCUMENTS = AppVar.set(
'Analyze', 'cluster_documents_limit', 1000,
'Notify if there are too many documents for clustering'
)
NOTIFY_TOO_MANY_UNITS = AppVar.set(
'Analyze', 'cluster_text_units_limit', 500000,
'Notify if there are too many text units for clustering'
)
NOTIFY_TOO_MANY_SIMILARITY_UNITS_TO_EXPORT = AppVar.set(
'Analyze', 'export_text_unit_similarities_limit', 20000,
'Notify if there are too many text unit similarity items for export'
)
DOCUMENT_SIMILARITY_OBJECTS_EXPIRE_IN = AppVar.set(
'Analyze', 'document_similarity_objects_expire_in', 30 * 24 * 60 * 60,
'Delete DocumentSimilarity objects in N sec after they were created'
)
TEXT_UNIT_SIMILARITY_OBJECTS_EXPIRE_IN = AppVar.set(
'Analyze', 'text_unit_similarity_objects_expire_in', 2 * 24 * 60 * 60,
'Delete TextUnitSimilarity objects in N sec after they were created'
)
SIMILARITY_MAX_BASE = AppVar.set(
'Analyze', 'similarity_max_base', 50000,
'Maximum allowed number of items to start similarity process'
)
SIMILARITY_MAX_RECORDS = AppVar.set(
'Analyze', 'similarity_max_records', 5*1000*1000,
'Maximum allowed number of expected similarity records found'
)
================================================
FILE: contraxsuite_services/apps/analyze/forms.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
# Django imports
from django import forms
from django.core.validators import MinValueValidator, MaxValueValidator
# Project imports
from apps.analyze.ml.features import DocumentFeatures
from apps.analyze.models import DocumentClassifier, TextUnitClassifier, \
DocumentClassification, TextUnitClassification, MLModel
from apps.common.forms import checkbox_field
from apps.project.models import Project
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
class TrainDocumentDoc2VecTaskForm(forms.Form):
header = 'Train doc2vec model from Document queryset.'
source = forms.CharField(initial='document', widget=forms.HiddenInput())
project = forms.ModelMultipleChoiceField(
queryset=Project.objects.order_by('-pk'),
widget=forms.SelectMultiple(
attrs={'class': 'chosen compact'}),
required=False)
transformer_name = forms.CharField(max_length=200, required=False)
vector_size = forms.IntegerField(initial=100, required=False)
window = forms.IntegerField(initial=10, required=False)
min_count = forms.IntegerField(initial=10, required=False)
dm = forms.IntegerField(initial=1, required=False, validators=(MinValueValidator(0),
MaxValueValidator(1)))
build_vectors = forms.BooleanField(initial=True, required=False,
help_text='Build and store feature vectors')
def clean(self):
cleaned_data = super().clean()
cleaned_data['project_ids'] = list(cleaned_data['project'].values_list('pk', flat=True)) \
if cleaned_data['project'] is not None else None
del cleaned_data['project']
class TrainTextUnitDoc2VecTaskForm(TrainDocumentDoc2VecTaskForm):
header = 'Train doc2vec model from Text Unit queryset.'
source = forms.CharField(initial='text_unit', widget=forms.HiddenInput())
text_unit_type = forms.ChoiceField(choices=(('sentence', 'sentence'),
('paragraph', 'paragraph')),
required=True)
build_features_kwargs = dict(
label='Data Source',
widget=forms.CheckboxInput(attrs={
'class': 'bt-switch',
'data-on-text': 'Document',
'data-off-text': 'Text Unit',
'data-on-color': 'info',
'data-off-color': 'success',
'data-size': 'small'}),
initial=True,
required=False,
help_text='Show advanced options.')
class BuildDocumentVectorsTaskForm(forms.Form):
header = 'Build Document Vectors'
# project field needed here to populate schema without hardcoded choices, redefined in _init_
project = forms.IntegerField(required=True)
delete_existing = forms.BooleanField(
required=True,
initial=True,
help_text='Delete existing vectors')
field_order = ['project', 'transformer_id', 'delete_existing']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
projects = Project.objects.order_by('-pk').values_list('pk', 'name')
self.fields['project'] = forms.ChoiceField(
choices=[(pk, f'#{pk} {name}') for pk, name in projects],
widget=forms.widgets.Select(attrs={'class': 'chosen compact'}),
required=True,
help_text='Restrict to projects')
doc_transformers = MLModel.document_transformers.order_by('-pk').values_list('pk', 'name')
self.fields['transformer_id'] = forms.ChoiceField(
choices=[(pk, f'#{pk} {name}') for pk, name in doc_transformers],
widget=forms.widgets.Select(attrs={'class': 'chosen'}),
required=True,
help_text='Document Transformer trained model')
class BuildTextUnitVectorsTaskForm(BuildDocumentVectorsTaskForm):
header = 'Build Text Unit Vectors'
txt_unit_type = forms.ChoiceField(
choices=[('sentence', 'sentence'), ('paragraph', 'paragraph')],
required=True,
initial='sentence',
help_text='Text Unit type.')
field_order = ['project', 'txt_unit_type', 'transformer_id', 'delete_existing']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
txt_transformers = MLModel.textunit_transformers.order_by('-pk').values_list('pk', 'name')
self.fields['transformer_id'] = forms.ChoiceField(
choices=[(pk, f'#{pk} {name}') for pk, name in list(txt_transformers)],
widget=forms.widgets.Select(attrs={'class': 'chosen'}),
required=True,
help_text='Text Unit Transformer trained model')
class BaseRunClassifierForm(forms.Form):
min_confidence = forms.IntegerField(
min_value=0,
max_value=100,
initial=90,
required=True,
help_text='Store values with confidence greater than (%).')
delete_suggestions = checkbox_field(
"Delete ClassifierSuggestions of Classifier specified above.")
project = forms.ModelMultipleChoiceField(
queryset=Project.objects.order_by('-pk'),
widget=forms.SelectMultiple(
attrs={'class': 'chosen compact'}),
required=False,
label='Restrict to project')
project_name_filter = forms.CharField(
max_length=100,
required=False,
help_text='Project name filter as an alternative to "Project" option. Use "%" as a wildcard symbol.')
field_order = ['classifier', 'project', 'project_name_filter',
'min_confidence', 'delete_suggestions']
class RunTextUnitClassifierForm(BaseRunClassifierForm):
header = 'Classify Text Units using an existing Classifier.'
classifier = forms.ModelChoiceField(
queryset=TextUnitClassifier.objects.filter(is_active=True).order_by('name'),
widget=forms.widgets.Select(attrs={'class': 'chosen'}),
required=True)
target = forms.CharField(max_length=20, initial='text_unit', widget=forms.HiddenInput())
unit_type = forms.ChoiceField(
choices=[('sentence', 'sentence'), ('paragraph', 'paragraph')],
required=True,
initial='sentence',
help_text='Text Unit type.')
class RunDocumentClassifierForm(BaseRunClassifierForm):
header = 'Classify Documents using an existing Classifier.'
target = forms.CharField(max_length=20, initial='document', widget=forms.HiddenInput())
classifier = forms.ModelChoiceField(
queryset=DocumentClassifier.objects.filter(is_active=True).order_by('name'),
widget=forms.widgets.Select(attrs={'class': 'chosen'}),
required=True)
options_field_kwargs = dict(
label='Advanced Options',
widget=forms.CheckboxInput(attrs={
'class': 'bt-switch',
'data-on-text': 'Default',
'data-off-text': 'Advanced',
'data-on-color': 'info',
'data-off-color': 'success',
'data-size': 'small'}),
initial=True,
required=False,
help_text='Show advanced options.')
CLASSIFIER_NAME_CHOICES = (
('ExtraTreesClassifier', 'ExtraTreesClassifier'),
('LogisticRegressionCV', 'LogisticRegressionCV'),
('MultinomialNB', 'MultinomialNB'),
('RandomForestClassifier', 'RandomForestClassifier'),
('SVC', 'SVC'),
)
class BaseTrainClassifierForm(forms.Form):
options = forms.BooleanField(**options_field_kwargs)
svc_C = forms.FloatField(
label='C',
min_value=0,
initial=1.0,
required=True,
help_text='Penalty parameter C of the error term.')
svc_kernel = forms.ChoiceField(
label='kernel',
choices=[('rbf', 'rbf'),
('linear', 'linear'),
('poly', 'poly'),
('sigmoid', 'sigmoid'),
('precomputed', 'precomputed')],
required=True,
initial='rbf',
help_text='Specifies the kernel type to be used in the algorithm.')
svc_gamma = forms.CharField(
label='gamma',
max_length=6,
initial='scale',
required=False,
help_text="{'scale', 'auto'} or float, optional (default='scale')."
" Kernel coefficient for 'rbf', 'poly' and 'sigmoid'.")
mnb_alpha = forms.FloatField(
label='alpha',
min_value=0,
initial=1.0,
required=True,
help_text='Additive (Laplace/Lidstone) smoothing parameter (0 for no smoothing).')
rfc_etc_n_estimators = forms.IntegerField(
label='n_estimators',
min_value=1,
initial=10,
required=True,
help_text='The number of trees in the forest.')
rfc_etc_criterion = forms.ChoiceField(
label='criterion',
choices=[('gini', 'gini'),
('entropy', 'entropy')],
required=True,
initial='gini',
help_text='The function to measure the quality of a split.')
rfc_etc_max_features = forms.IntegerField(
label='max_features',
min_value=1,
required=False,
help_text='The number of features to consider when looking for the best split.'
' Integer or blank for "auto".')
rfc_etc_max_depth = forms.IntegerField(
label='max_depth',
min_value=1,
required=False,
help_text='The maximum depth of the tree.'
' If None, then nodes are expanded until all leaves are pure'
' or until all leaves contain less than min_samples_split samples.')
rfc_etc_min_samples_split = forms.IntegerField(
label='min_samples_split',
min_value=1,
initial=2,
required=True,
help_text='The minimum number of samples required to split an internal node.')
rfc_etc_min_samples_leaf = forms.IntegerField(
label='min_samples_leaf',
min_value=1,
initial=1,
required=True,
help_text='The minimum number of samples required to be at a leaf node.')
lrcv_Cs = forms.IntegerField(
label='Cs',
min_value=1,
initial=10,
required=True,
help_text='Each of the values in Cs describes the inverse of regularization strength.')
lrcv_fit_intercept = forms.BooleanField(
label='fit_intercept',
required=False,
help_text='Specifies if a constant (a.k.a. bias or intercept)'
' should be added to the decision function.')
lrcv_multi_class = forms.ChoiceField(
label='multi_class',
choices=[('ovr', 'ovr'),
('multinomial', 'multinomial')],
required=True,
initial='ovr',
help_text='If the option chosen is ‘ovr’, then a binary problem is fit for each label. '
'Else the loss minimised is the multinomial loss fit across the '
'entire probability distribution. '
'Works only for the ‘newton-cg’, ‘sag’ and ‘lbfgs’ solver.')
lrcv_solver = forms.ChoiceField(
label='solver',
choices=[('lbfgs', 'lbfgs'),
('newton-cg', 'newton-cg'),
('liblinear', 'liblinear'),
('sag', 'sag')],
required=True,
initial='lbfgs',
help_text='Algorithm to use in the optimization problem.')
class_name = forms.ChoiceField(
choices=[],
required=True,
help_text='Classifier class name')
classifier_name = forms.CharField(
max_length=100,
required=True,
help_text='Classifier name')
use_tfidf = checkbox_field(
"Use TF-IDF to normalize data")
delete_classifier = checkbox_field(
"Delete existing Classifiers of class name specified above.")
project = forms.ModelMultipleChoiceField(
queryset=Project.objects.order_by('-pk'),
widget=forms.SelectMultiple(attrs={'class': 'chosen compact'}),
required=False,
label='Restrict to project')
project_name_filter = forms.CharField(
max_length=100,
required=False,
help_text='Project name filter as an alternative to "Project" option. Use "%" as a wildcard symbol.')
classify_by = forms.MultipleChoiceField(
widget=forms.SelectMultiple(attrs={'class': 'chosen'}),
choices=[(i, i) for i in DocumentFeatures.source_fields],
initial='term',
required=True,
help_text='Classify by terms, parties or other fields.')
algorithm = forms.ChoiceField(
choices=CLASSIFIER_NAME_CHOICES,
required=True,
initial='RandomForestClassifier',
help_text='Classifier algorithm name.')
metric_pos_label = forms.CharField(
max_length=100,
required=False,
help_text='Positive label for "f1", "precision", "recall" accuracy metrics.')
unit_type = forms.ChoiceField(
choices=[('sentence', 'sentence'), ('paragraph', 'paragraph')],
required=True,
initial='sentence',
help_text='Text Unit type.')
field_order = ['project', 'project_name_filter', 'unit_type', 'algorithm', 'use_tfidf', 'class_name',
'classify_by', 'classifier_name', 'metric_pos_label', 'delete_classifier']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['class_name'] = forms.ChoiceField(
choices=[(class_name, class_name) for class_name in
set(self.classification_db_model.objects.values_list('class_name', flat=True))],
required=True,
help_text='Classification class name')
def clean_svc_gamma(self):
svc_gamma = self.cleaned_data['svc_gamma']
try:
svc_gamma = float(svc_gamma)
except ValueError:
pass
return svc_gamma
class TrainTextUnitClassifierForm(BaseTrainClassifierForm):
header = 'Train Text Unit Classifier.'
classification_db_model = TextUnitClassification
target = forms.CharField(max_length=20, initial='text_unit', widget=forms.HiddenInput())
class TrainDocumentClassifierForm(BaseTrainClassifierForm):
header = 'Train Document Classifier.'
classification_db_model = DocumentClassification
target = forms.CharField(max_length=20, initial='document', widget=forms.HiddenInput())
unit_type = forms.CharField(max_length=20, initial='sentence', widget=forms.HiddenInput())
class ClusterForm(forms.Form):
header = 'Cluster by Entity'
do_cluster_documents = checkbox_field(
"Cluster Documents", initial=True, input_class='max-one-of')
do_cluster_text_units = checkbox_field(
"Cluster Text Units", input_class='max-one-of')
project = forms.ModelChoiceField(
required=True,
label='Restrict to project',
queryset=Project.objects.order_by('-pk'),
widget=forms.widgets.Select(attrs={'class': 'chosen'}))
cluster_by = forms.MultipleChoiceField(
required=True,
label='Cluster by*',
help_text='Cluster by terms, parties or other fields.',
widget=forms.SelectMultiple(attrs={'class': 'chosen'}),
choices=[(i, i) for i in DocumentFeatures.source_fields],
initial='term')
using = forms.ChoiceField(
required=True,
label='Algorithm',
help_text='Clustering algorithm model name.',
choices=[('minibatchkmeans', 'MiniBatchKMeans'),
('kmeans', 'KMeans'),
('birch', 'Birch'),
('dbscan', 'DBSCAN'),
# ('LabelSpreading', 'LabelSpreading')
],
initial='minibatchkmeans')
n_clusters = forms.IntegerField(
required=True,
label='N clusters*',
help_text='Number of clusters.',
initial=3,
min_value=1)
name = forms.CharField(
required=True,
label='Name*',
max_length=100)
description = forms.CharField(
required=False,
max_length=200)
options = forms.BooleanField(**options_field_kwargs)
kmeans_max_iter = forms.IntegerField(
required=True,
label='Max iterations*',
help_text='Maximum number of iterations for a single run.',
initial=100,
min_value=1)
kmeans_n_init = forms.IntegerField(
required=True,
label='N init*',
help_text='Number of time the k-means algorithm will be run with different centroid seeds. '
'The final results will be the best output of n_init consecutive runs in '
'terms of inertia.',
initial=10,
min_value=1)
minibatchkmeans_batch_size = forms.IntegerField(
required=True,
label='Batch size*',
help_text='Size of the mini batches.',
initial=100,
min_value=1)
birch_threshold = forms.FloatField(
required=True,
label='Threshold*',
help_text='The radius of the subcluster obtained by merging a new sample and the closest '
'subcluster should be lesser than the threshold.'
' Otherwise a new subcluster is started.',
initial=0.5,
min_value=0)
birch_branching_factor = forms.IntegerField(
required=True,
label='Branching factor*',
help_text='Maximum number of CF subclusters in each node.',
initial=50,
min_value=1)
dbscan_eps = forms.FloatField(
required=True,
label='EPS*',
help_text='The maximum distance between two samples for them to be considered '
'as in the same neighborhood.',
initial=0.5,
min_value=0)
dbscan_leaf_size = forms.IntegerField(
required=True,
label='Leaf size*',
help_text='Leaf size passed to BallTree or cKDTree. '
'This can affect the speed of the construction and query, '
'as well as the memory required to store the tree.',
initial=30,
min_value=1)
dbscan_p = forms.FloatField(
required=False,
label='p',
help_text='Leaf size passed to BallTree or cKDTree. '
'This can affect the speed of the construction and query, '
'as well as the memory required to store the tree.',
min_value=0)
# ls_documents_property = forms.Field()
# ls_text_units_property = forms.Field()
# ls_max_iter = forms.IntegerField(
# label='max_iter',
# min_value=1,
# initial=5,
# required=True,
# help_text='Maximum number of iterations allowed.')
# delete_type = checkbox_field(
# 'Delete existed Clusters of the "Cluster By" and "Algorithm" specified above',
# input_class='max-one-of')
# delete = checkbox_field("Delete all existed Clusters", input_class='max-one-of')
# def __init__(self, *args, **kwargs):
# super().__init__(*args, **kwargs)
# if TextUnitProperty.objects.exists():
# choices = [(p, p) for p in sorted(
# set(TextUnitProperty.objects.values_list('key', flat=True)),
# key=lambda i: i.lower())]
# self.fields['ls_text_units_property'] = forms.ChoiceField(
# label='Text Unit Property Name',
# widget=forms.widgets.Select(attrs={'class': 'chosen'}),
# choices=choices,
# required=True,
# initial=choices[0][0])
# else:
# del self.fields['ls_text_units_property']
# if DocumentProperty.objects.exists():
# choices = [(p, p) for p in sorted(
# set(DocumentProperty.objects.values_list('key', flat=True)),
# key=lambda i: i.lower())]
# self.fields['ls_documents_property'] = forms.ChoiceField(
# label='Document Property Name',
# widget=forms.widgets.Select(attrs={'class': 'chosen'}),
# choices=choices,
# required=True,
# initial=choices[0][0])
# else:
# del self.fields['ls_documents_property']
# if not DocumentProperty.objects.exists() and not TextUnitProperty.objects.exists():
# self.fields['using'].choices = self.fields['using'].choices[:-1]
def clean(self):
cleaned_data = super().clean()
do_cluster_documents = cleaned_data.get("do_cluster_documents")
do_cluster_text_units = cleaned_data.get("do_cluster_text_units")
if not any([do_cluster_documents, do_cluster_text_units]):
self.add_error('do_cluster_documents', 'Please choose either Documents or Text Units.')
================================================
FILE: contraxsuite_services/apps/analyze/management/__init__.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
================================================
FILE: contraxsuite_services/apps/analyze/management/commands/__init__.py
================================================
"""
Copyright (C) 2017, ContraxSuite, LLC
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
You can also be released from the requirements of the license by purchasing
a commercial license from ContraxSuite, LLC. Buying such a license is
mandatory as soon as you develop commercial activities involving ContraxSuite
software without disclosing the source code of your own applications. These
activities include: offering paid services to customers as an ASP or "cloud"
provider, processing documents on the fly in a web application,
or shipping ContraxSuite within a closed source product.
"""
# -*- coding: utf-8 -*-
__author__ = "ContraxSuite, LLC; LexPredict, LLC"
__copyright__ = "Copyright 2015-2022, ContraxSuite, LLC"
__license__ = "https://github.com/LexPredict/lexpredict-contraxsuite/blob/2.3.0/LICENSE"
__version__ = "2.3.0"
__maintainer__ = "LexPredict, LLC"
__email__ = "support@contraxsuite.com"
================================================
FILE: contraxsuite_services/apps/analyze/management/commands/clear_old_transformer_models.py
================================================
import pickle
import time
from celery.states import READY_STATES, REVOKED
from django.core.management.base import BaseCommand
from gensim.models import Doc2Vec
from apps.analyze.models import MLModel
from apps.analyze.tasks import TrainDoc2VecModel
from apps.common.file_storage import get_file_storage
from apps.project.models import Project
from apps.task.models import Task
from apps.task.tasks import call_task
class Command(BaseCommand):
help = 'Removes old Doc2Vec models that raise error in current gensim version'
def is_successful_gensim_3_to_4_migration(self,
doc2vec_model: Doc2Vec,
model_name: str,
model_path: str):
try:
vector_size = doc2vec_model.dv.vector_size
return True
except AttributeError:
self.stdout.write(self.style.ERROR(f'Doc2Vec error for outdated {model_name} '
f'({model_path}). Removing model ...'))
return False
def update_default_mlmodel(self, object_type, languages):
for lang in languages:
if MLModel.objects.filter(target_entity='transformer',
apply_to=object_type,
language=lang,
default=False).exists() \
and not MLModel.objects.filter(target_entity='transformer',
apply_to=object_type,
language=lang,
default=True).exists():
model = MLModel.objects.filter(target_entity='transformer', apply_to=object_type,
language=lang).order_by('id').last()
model.default = True
model.save()
def add_arguments(self, parser):
parser.add_argument('-dt', "--train_documents_transformer", action='store_true',
help='train Doc2Vec model from Document queryset')
parser.add_argument('-tut', "--train_text_units_transformer", action='store_true',
help='train Doc2Vec model from Text Unit queryset')
parser.add_argument('-ids', "--project_ids", action='store', default='',
help='set Project ids for training Doc2Vec model from Document '
'queryset (should be string of numbers, separated with space)')
def handle(self, *args, **options):
train_documents_transformer = options['train_documents_transformer']
train_text_units_transformer = options['train_text_units_transformer']
project_ids = [int(pid) for pid in options['project_ids'].split(' ') if pid]
file_storage = get_file_storage()
for model in MLModel.objects.filter(target_entity='transformer'):
try:
file_bytes = file_storage.read(model.model_path)
doc2vec_model = pickle.loads(file_bytes)
except Exception:
self.stdout.write(self.style.ERROR(f'Doc2Vec model {model.name} was not loaded!'))
continue
if not doc2vec_model:
self.stdout.write(self.style.ERROR(f'Doc2Vec model {model.name} is empty!'))
continue
if not self.is_successful_gensim_3_to_4_migration(doc2vec_model,
model.name, model.model_path):
# Remove model files
try:
file_storage.delete_file(model.model_path)
except Exception:
self.stdout.write(self.style.ERROR(f'Doc2Vec model {model.name} with path '
f'{model.model_path} was not removed!'))
# Remove model object
model.delete()
# Prepare data for transformers
documents_training_data = {
'source': 'document',
'vector_size': 100,
'window': 10,
'min_count': 10,
'dm': 1,
'build_vectors': False,
}
if project_ids:
documents_training_data['project_ids'] = project_ids
text_unit_training_data = documents_training_data.copy()
text_unit_training_data['source'] = 'text_unit'
text_unit_training_data['project_ids'] = list(
Project.objects.all().values_list('id', flat=True))
# Call tasks to train models and get initial tasks statuses
task_doc_id = call_task(TrainDoc2VecModel, **documents_training_data) \
if train_documents_transformer else None
try:
task_doc_status = Task.objects.get(id=task_doc_id).status \
if task_doc_id else REVOKED
except Task.DoesNotExist:
task_doc_status = REVOKED
task_text_unit_id = call_task(TrainDoc2VecModel, **text_unit_training_data) \
if train_text_units_transformer else None
try:
task_text_unit_status = Task.objects.get(id=task_text_unit_id).status \
if task_text_unit_id else REVOKED
except Task.DoesNotExist:
task_text_unit_status = REVOKED
is_update_default_document_transformer = False
is_update_default_text_unit_transformer = False
languages = set(MLModel.objects.filter(target_entity='transformer').values_list('language',
flat=True))
# Wait for tasks to be finished
self.stdout.write(self.style.NOTICE("Waiting for models to be retrained ..."))
while task_doc_status not in READY_STATES or task_text_unit_status not in READY_STATES:
# Update tasks statuses
try:
task_doc_status = Task.objects.get(id=task_doc_id).status \
if task_doc_id else REVOKED
except Task.DoesNotExist:
task_doc_status = REVOKED
try:
task_text_unit_status = Task.objects.get(id=task_text_unit_id).status \
if task_text_unit_id else REVOKED
except Task.DoesNotExist:
task_text_unit_status = REVOKED
# Update default transformers
if task_doc_status in READY_STATES \
and not is_update_default_document_transformer:
self.update_default_mlmodel('document', languages)
is_update_default_document_transformer = True
if task_text_unit_status in READY_STATES \
and not is_update_default_text_unit_transformer:
self.update_default_mlmodel('text_unit', languages)
is_update_default_text_unit_transformer = True
time.sleep(1)
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0001_initial.py
================================================
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-07-31 09:48
from __future__ import unicode_literals
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='DocumentCluster',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cluster_id', models.IntegerField(default=0)),
('name', models.CharField(db_index=True, max_length=100)),
('self_name', models.CharField(db_index=True, max_length=100)),
('description', models.CharField(db_index=True, max_length=200)),
('cluster_by', models.CharField(db_index=True, max_length=20)),
('using', models.CharField(db_index=True, max_length=20)),
('created_date', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
],
options={
'ordering': ('cluster_by', 'using', 'cluster_id'),
'abstract': False,
},
),
migrations.CreateModel(
name='DocumentSimilarity',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('similarity', models.DecimalField(decimal_places=2, max_digits=5)),
('created_date', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
],
options={
'ordering': ('document_a__pk', '-similarity', 'document_b__pk'),
'verbose_name_plural': 'Document Similarities',
},
),
migrations.CreateModel(
name='PartySimilarity',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('similarity', models.DecimalField(decimal_places=2, max_digits=5)),
('created_date', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
],
options={
'ordering': ('party_a__pk', '-similarity', 'party_b__pk'),
'verbose_name_plural': 'Party Similarities',
},
),
migrations.CreateModel(
name='TextUnitClassification',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('class_name', models.CharField(db_index=True, max_length=1024)),
('class_value', models.CharField(db_index=True, max_length=1024)),
('timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
],
options={
'ordering': ('text_unit', 'class_name', 'timestamp'),
},
),
migrations.CreateModel(
name='TextUnitClassifier',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(db_index=True, max_length=1024)),
('version', models.CharField(db_index=True, max_length=1024)),
('class_name', models.CharField(db_index=True, max_length=1024)),
('model_object', models.BinaryField()),
('is_active', models.BooleanField(db_index=True, default=True)),
],
options={
'ordering': ('name', 'class_name'),
},
),
migrations.CreateModel(
name='TextUnitClassifierSuggestion',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('classifier_run', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
('classifier_confidence', models.FloatField(default=0.0)),
('class_name', models.CharField(db_index=True, max_length=1024)),
('class_value', models.CharField(db_index=True, max_length=1024)),
],
),
migrations.CreateModel(
name='TextUnitCluster',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cluster_id', models.IntegerField(default=0)),
('name', models.CharField(db_index=True, max_length=100)),
('self_name', models.CharField(db_index=True, max_length=100)),
('description', models.CharField(db_index=True, max_length=200)),
('cluster_by', models.CharField(db_index=True, max_length=20)),
('using', models.CharField(db_index=True, max_length=20)),
('created_date', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
],
options={
'ordering': ('cluster_by', 'using', 'cluster_id'),
'abstract': False,
},
),
migrations.CreateModel(
name='TextUnitSimilarity',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('similarity', models.DecimalField(decimal_places=2, max_digits=5)),
('created_date', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
],
options={
'ordering': ('text_unit_a__pk', '-similarity', 'text_unit_b__pk'),
'verbose_name_plural': 'Text Unit Similarities',
},
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0002_auto_20170731_0948.py
================================================
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-07-31 09:48
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('analyze', '0001_initial'),
('document', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='textunitsimilarity',
name='text_unit_a',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='similar_text_unit_a_set', to='document.TextUnit'),
),
migrations.AddField(
model_name='textunitsimilarity',
name='text_unit_b',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='similar_text_unit_b_set', to='document.TextUnit'),
),
migrations.AddField(
model_name='textunitcluster',
name='text_units',
field=models.ManyToManyField(blank=True, to='document.TextUnit'),
),
migrations.AddField(
model_name='textunitclassifiersuggestion',
name='classifier',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='analyze.TextUnitClassifier'),
),
migrations.AddField(
model_name='textunitclassifiersuggestion',
name='text_unit',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='document.TextUnit'),
),
migrations.AlterUniqueTogether(
name='textunitclassifier',
unique_together=set([('name', 'version')]),
),
migrations.AddField(
model_name='textunitclassification',
name='text_unit',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='document.TextUnit'),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0003_auto_20170731_0948.py
================================================
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-07-31 09:48
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('extract', '0001_initial'),
('document', '0001_initial'),
('analyze', '0002_auto_20170731_0948'),
]
operations = [
migrations.AddField(
model_name='textunitclassification',
name='user',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='partysimilarity',
name='party_a',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='party_a_similarity_set', to='extract.Party'),
),
migrations.AddField(
model_name='partysimilarity',
name='party_b',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='party_b_similarity_set', to='extract.Party'),
),
migrations.AddField(
model_name='documentsimilarity',
name='document_a',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document_a_similarity_set', to='document.Document'),
),
migrations.AddField(
model_name='documentsimilarity',
name='document_b',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document_b_similarity_set', to='document.Document'),
),
migrations.AddField(
model_name='documentcluster',
name='documents',
field=models.ManyToManyField(blank=True, to='document.Document'),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0004_auto_20171011_1613.py
================================================
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-10-11 16:13
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('analyze', '0003_auto_20170731_0948'),
]
operations = [
migrations.AlterField(
model_name='documentcluster',
name='cluster_by',
field=models.CharField(db_index=True, max_length=100),
),
migrations.AlterField(
model_name='textunitcluster',
name='cluster_by',
field=models.CharField(db_index=True, max_length=100),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0005_documenttransformer_documentvector_textunittransformer_textunitvector.py
================================================
# Generated by Django 2.2.4 on 2019-11-19 12:41
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import picklefield.fields
class Migration(migrations.Migration):
dependencies = [
('document', '0168_auto_20191114_1808'),
('analyze', '0004_auto_20171011_1613'),
]
operations = [
migrations.CreateModel(
name='DocumentTransformer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(db_index=True, max_length=1024)),
('version', models.CharField(db_index=True, max_length=1024)),
('vector_name', models.CharField(db_index=True, max_length=1024)),
('model_object', picklefield.fields.PickledObjectField(editable=False)),
('is_active', models.BooleanField(db_index=True, default=True)),
],
options={
'ordering': ('name', 'vector_name'),
'abstract': False,
'unique_together': {('name', 'version')},
},
),
migrations.CreateModel(
name='TextUnitTransformer',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(db_index=True, max_length=1024)),
('version', models.CharField(db_index=True, max_length=1024)),
('vector_name', models.CharField(db_index=True, max_length=1024)),
('model_object', picklefield.fields.PickledObjectField(editable=False)),
('is_active', models.BooleanField(db_index=True, default=True)),
('text_unit_type', models.CharField(db_index=True, max_length=128)),
],
options={
'ordering': ('name', 'vector_name'),
'abstract': False,
'unique_together': {('name', 'version')},
},
),
migrations.CreateModel(
name='TextUnitVector',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('vector_name', models.CharField(blank=True, max_length=100, null=True)),
('vector_value', picklefield.fields.PickledObjectField(editable=False)),
('timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
('text_unit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='document.TextUnit')),
('transformer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='analyze.TextUnitTransformer')),
],
options={
'ordering': ('text_unit', 'vector_name', 'timestamp'),
'abstract': False,
},
),
migrations.CreateModel(
name='DocumentVector',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('vector_name', models.CharField(blank=True, max_length=100, null=True)),
('vector_value', picklefield.fields.PickledObjectField(editable=False)),
('timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='document.Document')),
('transformer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='analyze.DocumentTransformer')),
],
options={
'ordering': ('document', 'vector_name', 'timestamp'),
'abstract': False,
},
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0006_auto_20191203_0833.py
================================================
# Generated by Django 2.2.4 on 2019-12-03 08:33
import django.contrib.postgres.fields.jsonb
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('analyze', '0005_documenttransformer_documentvector_textunittransformer_textunitvector'),
]
operations = [
migrations.AddField(
model_name='documentcluster',
name='metadata',
field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict, null=True),
),
migrations.AddField(
model_name='textunitcluster',
name='metadata',
field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=dict, null=True),
),
migrations.AlterField(
model_name='documentcluster',
name='name',
field=models.CharField(db_index=True, max_length=200),
),
migrations.AlterField(
model_name='documentcluster',
name='self_name',
field=models.CharField(db_index=True, max_length=200),
),
migrations.AlterField(
model_name='textunitcluster',
name='name',
field=models.CharField(db_index=True, max_length=200),
),
migrations.AlterField(
model_name='textunitcluster',
name='self_name',
field=models.CharField(db_index=True, max_length=200),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0007_auto_20191204_1255.py
================================================
# Generated by Django 2.2.4 on 2019-12-04 12:55
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('analyze', '0006_auto_20191203_0833'),
]
operations = [
migrations.AlterField(
model_name='documentcluster',
name='description',
field=models.CharField(db_index=True, max_length=300),
),
migrations.AlterField(
model_name='documentcluster',
name='name',
field=models.CharField(db_index=True, max_length=300),
),
migrations.AlterField(
model_name='textunitcluster',
name='description',
field=models.CharField(db_index=True, max_length=300),
),
migrations.AlterField(
model_name='textunitcluster',
name='name',
field=models.CharField(db_index=True, max_length=300),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0008_documentclassification_documentclassifier_documentclassifierassessment_documentclassifiersuggestion_.py
================================================
# Generated by Django 2.2.4 on 2020-01-10 08:26
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('document', '0173_auto_20191223_0908'),
('analyze', '0007_auto_20191204_1255'),
]
operations = [
migrations.CreateModel(
name='DocumentClassifier',
fields=[
('textunitclassifier_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='analyze.TextUnitClassifier')),
],
bases=('analyze.textunitclassifier',),
),
migrations.CreateModel(
name='TextUnitClassifierAssessment',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('assessment_name', models.CharField(db_index=True, max_length=1024)),
('assessment_value', models.FloatField(db_index=True, default=0.0)),
('assessment_run', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
('classifier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='analyze.TextUnitClassifier')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='DocumentClassifierSuggestion',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('classifier_run', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
('classifier_confidence', models.FloatField(default=0.0)),
('class_name', models.CharField(db_index=True, max_length=1024)),
('class_value', models.CharField(db_index=True, max_length=1024)),
('classifier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='analyze.DocumentClassifier')),
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='document.Document')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='DocumentClassifierAssessment',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('assessment_name', models.CharField(db_index=True, max_length=1024)),
('assessment_value', models.FloatField(db_index=True, default=0.0)),
('assessment_run', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
('classifier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='analyze.DocumentClassifier')),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='DocumentClassification',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('class_name', models.CharField(db_index=True, max_length=1024)),
('class_value', models.CharField(db_index=True, max_length=1024)),
('timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
('document', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='document.Document')),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={
'ordering': ('document', 'class_name', 'timestamp'),
'abstract': False,
},
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0009_auto_20200127_1252.py
================================================
# Generated by Django 2.2.9 on 2020-01-27 12:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('analyze', '0008_documentclassification_documentclassifier_documentclassifierassessment_documentclassifiersuggestion_'),
]
operations = [
migrations.DeleteModel(
name='DocumentClassifier',
),
migrations.CreateModel
(name='DocumentClassifier',
fields=[
('id', models.AutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(db_index=True, max_length=1024)),
('version', models.CharField(db_index=True, max_length=1024)),
('class_name', models.CharField(db_index=True, max_length=1024)),
('model_object', models.BinaryField()),
('is_active', models.BooleanField(db_index=True, default=True)),
],
options={
'ordering': ('name', 'class_name'),
'unique_together': {("name", "version")},
'abstract': False, },
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0010_transformer_unique_name.py
================================================
from __future__ import unicode_literals
from typing import Dict
from django.db import migrations, models
def make_trans_name_unique(apps, schema_editor):
DocumentTransformer = apps.get_model('analyze', 'DocumentTransformer')
TextUnitTransformer = apps.get_model('analyze', 'TextUnitTransformer')
classes = [DocumentTransformer, TextUnitTransformer]
for model_class in classes:
objects = list(model_class.objects.order_by('pk').all().defer(
'version', 'vector_name', 'model_object', 'is_active'))
name_count = {} # type: Dict[str, int]
for obj in objects:
if obj.name not in name_count:
name_count[obj.name] = 1
continue
while new_name := f'{obj.name} copy {name_count[obj.name]}' in name_count:
name_count[obj.name] = name_count[obj.name] + 1
name_count[obj.name] = name_count[obj.name] + 1
obj.name = new_name
obj.save()
class Migration(migrations.Migration):
dependencies = [
('analyze', '0009_auto_20200127_1252'),
]
operations = [
migrations.RunPython(make_trans_name_unique, reverse_code=migrations.RunPython.noop),
migrations.AlterField(
model_name='documenttransformer',
name='name',
field=models.CharField(db_index=True, max_length=1024, unique=True),
),
migrations.AlterField(
model_name='textunittransformer',
name='name',
field=models.CharField(db_index=True, max_length=1024, unique=True),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0011_denorm_textunit_similarity.py
================================================
from django.db import migrations, models, connection
import django.db.models.deletion
from settings import TEXTUNIT_SIMILARITY_MIGRATION_ACTION as migration_action
TABLE_NAME = 'analyze_textunitsimilarity'
MODEL_NAME = 'textunitsimilarity'
def purge():
with connection.cursor() as cursor:
cursor.execute(f"DELETE FROM {TABLE_NAME};")
def purge_or_skip(_apps, _schema_editor):
if migration_action == 'delete':
purge()
class Migration(migrations.Migration):
dependencies = [
('document', '0203_auto_20200617_1327'),
('project', '0041_auto_20200522_0811'),
('analyze', '0010_transformer_unique_name'),
]
operations = [
migrations.RunPython(purge_or_skip, reverse_code=migrations.RunPython.noop),
migrations.AddField(
model_name=MODEL_NAME,
name='document_a',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
related_name='similar_document_a_set',
to='document.Document',
null=True),
),
migrations.AddField(
model_name=MODEL_NAME,
name='document_b',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
related_name='similar_document_b_set',
to='document.Document',
null=True),
),
migrations.AddField(
model_name=MODEL_NAME,
name='project_a',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
related_name='similar_project_a_set',
to='project.Project',
null=True),
),
migrations.AddField(
model_name=MODEL_NAME,
name='project_b',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE,
related_name='similar_project_b_set',
to='project.Project',
null=True),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0012_populate_textunit_similarity_fields.py
================================================
import datetime
from django.db import migrations, connection
from apps.analyze.similarity_textunit_migration_common import drop_textunitsim_constraints, \
restore_textunitsim_constraints
from settings import TEXTUNIT_SIMILARITY_MIGRATION_ACTION as migration_action
TABLE_NAME = 'analyze_textunitsimilarity'
MODEL_NAME = 'textunitsimilarity'
def denormalize():
started = datetime.datetime.now()
with connection.cursor() as cursor:
print('Denormalizing t.u.s.: updating "document_a_id" [1/4]')
cursor.execute(f'''UPDATE {TABLE_NAME} AS ts
SET document_a_id = tt.document_id FROM document_textunit AS tt
WHERE ts.text_unit_a_id = tt.id;''')
elapsed = (datetime.datetime.now() - started).total_seconds()
print(f'Denormalizing t.u.s.: updating "document_b_id" [2/4], {elapsed}s passed')
cursor.execute(f'''UPDATE {TABLE_NAME} AS ts
SET document_b_id = tt.document_id FROM document_textunit AS tt
WHERE ts.text_unit_b_id = tt.id;''')
elapsed = (datetime.datetime.now() - started).total_seconds()
print(f'Denormalizing t.u.s.: updating "project_a_id" [3/4], {elapsed}s passed')
cursor.execute(f'''UPDATE {TABLE_NAME} AS ts
SET project_a_id = tt.project_id FROM document_document AS tt
WHERE ts.document_a_id = tt.id;''')
elapsed = (datetime.datetime.now() - started).total_seconds()
print(f'Denormalizing t.u.s.: updating "project_b_id" [4/4], {elapsed}s passed')
cursor.execute(f'''UPDATE {TABLE_NAME} AS ts
SET project_b_id = tt.project_id FROM document_document AS tt
WHERE ts.document_b_id = tt.id;''')
elapsed = (datetime.datetime.now() - started).total_seconds()
print(f'TextUnitSimilarityRefBuilder: {elapsed} seconds. Completed.')
def update_or_skip(_apps, _schema_editor):
if migration_action != 'delete':
denormalize()
class Migration(migrations.Migration):
dependencies = [
('analyze', '0011_denorm_textunit_similarity'),
]
operations = [
migrations.RunPython(drop_textunitsim_constraints,
reverse_code=restore_textunitsim_constraints),
migrations.RunPython(update_or_skip, reverse_code=migrations.RunPython.noop),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0013_vacuum_textunit_similarity.py
================================================
# Generated by Django 2.2.13 on 2020-06-29 09:30
import datetime
from django.db import migrations, models, connection
import django.db.models.deletion
TABLE_NAME = 'analyze_textunitsimilarity'
def vacuum_textunit_similarity(_apps, schema_editor):
started = datetime.datetime.now()
if schema_editor.connection.in_atomic_block:
schema_editor.atomic.__exit__(None, None, None)
with connection.cursor() as cursor:
print(f'Denormalizing t.u.s.: Vacuum analyzing...')
cursor.execute(f'VACUUM {TABLE_NAME};')
elapsed = (datetime.datetime.now() - started).total_seconds()
print(f'Denormalizing t.u.s.: Vacuum analyzing took {elapsed}s')
class Migration(migrations.Migration):
dependencies = [
('analyze', '0012_populate_textunit_similarity_fields'),
]
operations = [
migrations.RunPython(vacuum_textunit_similarity, reverse_code=migrations.RunPython.noop),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0014_textunit_similarity_restore_constraints.py
================================================
# Generated by Django 2.2.13 on 2020-06-29 09:30
from django.db import migrations, models
import django.db.models.deletion
from apps.analyze.similarity_textunit_migration_common import restore_textunitsim_constraints, \
drop_textunitsim_constraints
TABLE_NAME = 'analyze_textunitsimilarity'
class Migration(migrations.Migration):
dependencies = [
('analyze', '0013_vacuum_textunit_similarity'),
]
operations = [
migrations.RunPython(restore_textunitsim_constraints,
reverse_code=drop_textunitsim_constraints),
migrations.AlterField(
model_name='textunitsimilarity',
name='document_a',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='similar_document_a_set', to='document.Document'),
),
migrations.AlterField(
model_name='textunitsimilarity',
name='document_b',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='similar_document_b_set', to='document.Document'),
),
migrations.AlterField(
model_name='textunitsimilarity',
name='project_a',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='similar_project_a_set', to='project.Project'),
),
migrations.AlterField(
model_name='textunitsimilarity',
name='project_b',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='similar_project_b_set', to='project.Project'),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0015_auto_20201209_1541.py
================================================
# Generated by Django 2.2.13 on 2020-12-09 15:41
from django.db import migrations
import picklefield.fields
class Migration(migrations.Migration):
dependencies = [
('analyze', '0014_textunit_similarity_restore_constraints'),
]
operations = [
migrations.AlterField(
model_name='documenttransformer',
name='model_object',
field=picklefield.fields.PickledObjectField(compress=True, editable=False),
),
migrations.AlterField(
model_name='documentvector',
name='vector_value',
field=picklefield.fields.PickledObjectField(compress=True, editable=False),
),
migrations.AlterField(
model_name='textunittransformer',
name='model_object',
field=picklefield.fields.PickledObjectField(compress=True, editable=False),
),
migrations.AlterField(
model_name='textunitvector',
name='vector_value',
field=picklefield.fields.PickledObjectField(compress=True, editable=False),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0016_auto_20201224_0846.py
================================================
# Generated by Django 2.2.13 on 2020-12-24 08:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('analyze', '0015_auto_20201209_1541'),
]
operations = [
migrations.AlterModelOptions(
name='documentsimilarity',
options={'ordering': ('document_a_id', '-similarity', 'document_b_id'), 'verbose_name_plural': 'Document Similarities'},
),
migrations.AlterModelOptions(
name='partysimilarity',
options={'ordering': ('party_a_id', '-similarity', 'party_b_id'), 'verbose_name_plural': 'Party Similarities'},
),
migrations.AlterModelOptions(
name='textunitsimilarity',
options={'ordering': ('text_unit_a_id', '-similarity', 'text_unit_b_id'), 'verbose_name_plural': 'Text Unit Similarities'},
),
migrations.AddField(
model_name='documentsimilarity',
name='feature_source',
field=models.CharField(blank=True, db_index=True, max_length=50, null=True),
),
migrations.AddField(
model_name='partysimilarity',
name='feature_source',
field=models.CharField(blank=True, db_index=True, max_length=50, null=True),
),
migrations.AddField(
model_name='textunitsimilarity',
name='feature_source',
field=models.CharField(blank=True, db_index=True, max_length=50, null=True),
),
migrations.AlterField(
model_name='documentsimilarity',
name='similarity',
field=models.DecimalField(db_index=True, decimal_places=2, max_digits=5),
),
migrations.AlterField(
model_name='partysimilarity',
name='similarity',
field=models.DecimalField(db_index=True, decimal_places=2, max_digits=5),
),
migrations.AlterField(
model_name='textunitsimilarity',
name='similarity',
field=models.DecimalField(db_index=True, decimal_places=2, max_digits=5),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0017_auto_20201229_0950.py
================================================
# Generated by Django 2.2.13 on 2020-12-29 09:50
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('analyze', '0016_auto_20201224_0846'),
]
operations = [
migrations.AddField(
model_name='documentsimilarity',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='created_documentsimilarity_set', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='documentsimilarity',
name='run_id',
field=models.CharField(blank=True, db_index=True, max_length=50, null=True),
),
migrations.AddField(
model_name='partysimilarity',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='created_partysimilarity_set', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='partysimilarity',
name='run_id',
field=models.CharField(blank=True, db_index=True, max_length=50, null=True),
),
migrations.AddField(
model_name='textunitsimilarity',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='created_textunitsimilarity_set', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='textunitsimilarity',
name='run_id',
field=models.CharField(blank=True, db_index=True, max_length=50, null=True),
),
]
================================================
FILE: contraxsuite_services/apps/analyze/migrations/0018_auto_20210104_1313.py
================================================
# Generated by Django 2.2.13 on 2021-01-04 13:13
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timez
Showing preview only (256K chars total). Download the full file or copy to clipboard to get everything.
gitextract_me0jgsil/ ├── .gitignore ├── LICENSE ├── README.md ├── contraxsuite_services/ │ ├── .flake8 │ ├── .pylintrc │ ├── __init__.py │ ├── apps/ │ │ ├── __init__.py │ │ ├── analyze/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── app_vars.py │ │ │ ├── forms.py │ │ │ ├── management/ │ │ │ │ ├── __init__.py │ │ │ │ └── commands/ │ │ │ │ ├── __init__.py │ │ │ │ └── clear_old_transformer_models.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_auto_20170731_0948.py │ │ │ │ ├── 0003_auto_20170731_0948.py │ │ │ │ ├── 0004_auto_20171011_1613.py │ │ │ │ ├── 0005_documenttransformer_documentvector_textunittransformer_textunitvector.py │ │ │ │ ├── 0006_auto_20191203_0833.py │ │ │ │ ├── 0007_auto_20191204_1255.py │ │ │ │ ├── 0008_documentclassification_documentclassifier_documentclassifierassessment_documentclassifiersuggestion_.py │ │ │ │ ├── 0009_auto_20200127_1252.py │ │ │ │ ├── 0010_transformer_unique_name.py │ │ │ │ ├── 0011_denorm_textunit_similarity.py │ │ │ │ ├── 0012_populate_textunit_similarity_fields.py │ │ │ │ ├── 0013_vacuum_textunit_similarity.py │ │ │ │ ├── 0014_textunit_similarity_restore_constraints.py │ │ │ │ ├── 0015_auto_20201209_1541.py │ │ │ │ ├── 0016_auto_20201224_0846.py │ │ │ │ ├── 0017_auto_20201229_0950.py │ │ │ │ ├── 0018_auto_20210104_1313.py │ │ │ │ ├── 0019_auto_20210105_0836.py │ │ │ │ ├── 0020_similarityrun_unit_id.py │ │ │ │ ├── 0021_auto_20210106_1009.py │ │ │ │ ├── 0022_load_document_transformer.py │ │ │ │ ├── 0023_auto_20210323_0714.py │ │ │ │ ├── 0024_add_mlmodel.py │ │ │ │ ├── 0025_move_contracttype_classifier.py │ │ │ │ ├── 0026_auto_20210324_1247.py │ │ │ │ ├── 0027_create_transformer_db_records.py │ │ │ │ ├── 0028_similarityrun_distance_type.py │ │ │ │ ├── 0029_auto_20210416_1250.py │ │ │ │ ├── 0030_auto_20210505_1344.py │ │ │ │ ├── 0031_auto_20210514_0722.py │ │ │ │ ├── 0032_is_contract_migration.py │ │ │ │ ├── 0033_textunitvector_document.py │ │ │ │ ├── 0034_textunitvector_unit_type.py │ │ │ │ └── __init__.py │ │ │ ├── ml/ │ │ │ │ ├── __init__.py │ │ │ │ ├── classifier_repository.py │ │ │ │ ├── classify.py │ │ │ │ ├── cluster.py │ │ │ │ ├── contract_type_classifier.py │ │ │ │ ├── features.py │ │ │ │ ├── similarity.py │ │ │ │ ├── sparse_matrix.py │ │ │ │ ├── tests/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── base_transformer_test.py │ │ │ │ │ ├── test_classify_doc2vec.py │ │ │ │ │ ├── test_contract_type_classifier.py │ │ │ │ │ ├── test_data/ │ │ │ │ │ │ └── models/ │ │ │ │ │ │ └── en/ │ │ │ │ │ │ ├── contract_type_classifier/ │ │ │ │ │ │ │ └── document/ │ │ │ │ │ │ │ └── pipeline_contract_type_classifier.cloudpickle │ │ │ │ │ │ └── transformer/ │ │ │ │ │ │ └── document/ │ │ │ │ │ │ └── document_doc2vec_dm_1_vector_100_window_10/ │ │ │ │ │ │ └── model.pickle │ │ │ │ │ ├── test_doc2vec_transformer.py │ │ │ │ │ ├── test_sparse_matrix.py │ │ │ │ │ ├── test_utils.py │ │ │ │ │ └── texts_collection.py │ │ │ │ ├── transform.py │ │ │ │ └── utils.py │ │ │ ├── models.py │ │ │ ├── notifications.py │ │ │ ├── similarity_textunit_migration_common.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ └── task_menu_item.html │ │ │ ├── tests.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── celery.py │ │ ├── celery_worker_roles.py │ │ ├── common/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── app_vars.py │ │ │ ├── archive_file.py │ │ │ ├── collection_utils.py │ │ │ ├── context_managers.py │ │ │ ├── context_processors.py │ │ │ ├── contraxsuite_urls.py │ │ │ ├── db_cache/ │ │ │ │ ├── __init__.py │ │ │ │ └── db_cache.py │ │ │ ├── debug_utils.py │ │ │ ├── decorators.py │ │ │ ├── error_explorer.py │ │ │ ├── errors.py │ │ │ ├── expressions.py │ │ │ ├── fields.py │ │ │ ├── file_storage/ │ │ │ │ ├── __init__.py │ │ │ │ ├── file_storage.py │ │ │ │ ├── filebrowser_webdav_file_storage.py │ │ │ │ ├── local_file_adapter.py │ │ │ │ ├── local_file_storage.py │ │ │ │ ├── tests/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_file_storage.py │ │ │ │ │ ├── test_local_file_storage.py │ │ │ │ │ ├── test_webdav_file_storage.py │ │ │ │ │ └── webdav_propfind_response_example.xml │ │ │ │ └── webdav_file_storage.py │ │ │ ├── forms.py │ │ │ ├── loaders.py │ │ │ ├── log_utils.py │ │ │ ├── logger.py │ │ │ ├── management/ │ │ │ │ ├── __init__.py │ │ │ │ └── commands/ │ │ │ │ ├── __init__.py │ │ │ │ ├── create_superuser.py │ │ │ │ ├── download_s3_models.py │ │ │ │ ├── force_migrate.py │ │ │ │ ├── force_refill_migrations.py │ │ │ │ ├── force_reinitiate_migrations.py │ │ │ │ ├── generate_graph_models.py │ │ │ │ ├── get_openapi_schema.py │ │ │ │ ├── init_app_vars.py │ │ │ │ ├── init_cache.py │ │ │ │ ├── load_review_status_groups.py │ │ │ │ ├── load_review_statuses.py │ │ │ │ ├── loadnewdata.py │ │ │ │ ├── rp.py │ │ │ │ ├── set_app_var.py │ │ │ │ ├── set_site.py │ │ │ │ ├── sp.py │ │ │ │ └── unsafe_fix_catastrophic_backtracking.py │ │ │ ├── managers.py │ │ │ ├── middleware.py │ │ │ ├── migration_manager.py │ │ │ ├── migration_utils.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_reviewstatus.py │ │ │ │ ├── 0003_reviewstatus_is_active.py │ │ │ │ ├── 0004_auto_20180622_1138.py │ │ │ │ ├── 0005_reviewstatusgroup.py │ │ │ │ ├── 0006_create_review_status_groups_20180713_1341.py │ │ │ │ ├── 0007_reviewstatus_group.py │ │ │ │ ├── 0008_migrate_groups_20180713_1351.py │ │ │ │ ├── 0009_objectstorage.py │ │ │ │ ├── 0010_action.py │ │ │ │ ├── 0011_auto_20180828_0418.py │ │ │ │ ├── 0012_auto_20181012_0643.py │ │ │ │ ├── 0013_customapirequestlog.py │ │ │ │ ├── 0014_appvar_description.py │ │ │ │ ├── 0015_methodstats.py │ │ │ │ ├── 0016_auto_20190906_0727.py │ │ │ │ ├── 0017_methodstatscollectorplugin.py │ │ │ │ ├── 0018_auto_20190916_0730.py │ │ │ │ ├── 0019_menugroup_menuitem.py │ │ │ │ ├── 0020_auto_20191016_1549.py │ │ │ │ ├── 0021_auto_20191017_1457.py │ │ │ │ ├── 0022_threaddumprecord.py │ │ │ │ ├── 0023_auto_20191101_1021.py │ │ │ │ ├── 0024_auto_20191101_1028.py │ │ │ │ ├── 0025_auto_20200110_1354.py │ │ │ │ ├── 0026_set_appvar_categories.py │ │ │ │ ├── 0027_historicalappvar.py │ │ │ │ ├── 0028_exportfile.py │ │ │ │ ├── 0029_exportfile_email_sent.py │ │ │ │ ├── 0030_smtp_backend_appvar.py │ │ │ │ ├── 0031_auto_20210108_1934.py │ │ │ │ ├── 0031_smtp_backend_appvar_description.py │ │ │ │ ├── 0032_move_strict_date_parse_appvar.py │ │ │ │ ├── 0033_merge_20210127_0828.py │ │ │ │ ├── 0034_auto_20210127_1536.py │ │ │ │ ├── 0035_auto_20210128_0922.py │ │ │ │ ├── 0036_auto_20210204_0833.py │ │ │ │ ├── 0037_expire_appvars.py │ │ │ │ ├── 0038_auto_20210309_1324.py │ │ │ │ ├── 0039_auto_20210311_0543.py │ │ │ │ ├── 0040_document_locale_appvar.py │ │ │ │ ├── 0041_remove_appvar_duplicates.py │ │ │ │ ├── 0042_fix_appvar_indexes.py │ │ │ │ ├── 0043_update_appvar_helptext.py │ │ │ │ ├── 0044_update_appvar_duplicate_docs.py │ │ │ │ ├── 0045_change_email_backend.py │ │ │ │ ├── 0046_update_old_project_actions.py │ │ │ │ ├── 0047_create_appvar_detect_contract_type_settings.py │ │ │ │ └── __init__.py │ │ │ ├── mixins.py │ │ │ ├── model_utils/ │ │ │ │ ├── __init__.py │ │ │ │ ├── hr_django_json_encoder.py │ │ │ │ ├── improved_django_json_encoder.py │ │ │ │ ├── model_bulk_delete.py │ │ │ │ ├── model_class_dictionary.py │ │ │ │ ├── model_stats_sets_manager.py │ │ │ │ ├── safe_bulk_create.py │ │ │ │ ├── table_deps.py │ │ │ │ ├── table_deps_builder.py │ │ │ │ └── tests/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_bulk_delete.py │ │ │ │ ├── test_hr_django_json_encoder.py │ │ │ │ ├── test_improved_django_json_encoder.py │ │ │ │ ├── test_model_class_dictionary.py │ │ │ │ ├── test_safe_bulk_delete.py │ │ │ │ └── test_singleton.py │ │ │ ├── models.py │ │ │ ├── pandas_excel_formatter.py │ │ │ ├── permissions.py │ │ │ ├── plugins.py │ │ │ ├── processes.py │ │ │ ├── querysets.py │ │ │ ├── redis.py │ │ │ ├── s3/ │ │ │ │ ├── __init__.py │ │ │ │ └── s3_browser.py │ │ │ ├── schemas.py │ │ │ ├── script_utils.py │ │ │ ├── serializers.py │ │ │ ├── signals.py │ │ │ ├── singleton.py │ │ │ ├── sql_commons.py │ │ │ ├── streaming_utils.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ └── task_menu_item.html │ │ │ ├── templatetags/ │ │ │ │ ├── __init__.py │ │ │ │ ├── debug_tags.py │ │ │ │ └── project_tags.py │ │ │ ├── tests/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_appvar_cache.py │ │ │ │ ├── test_check_timeout.py │ │ │ │ ├── test_collection_utils.py │ │ │ │ ├── test_download_s3_models.py │ │ │ │ ├── test_expressions.py │ │ │ │ ├── test_log_utils.py │ │ │ │ ├── test_map.py │ │ │ │ ├── test_sql_commons.py │ │ │ │ ├── test_url_utils.py │ │ │ │ └── test_utils.py │ │ │ ├── time_limit.py │ │ │ ├── topological_sort.py │ │ │ ├── url_utils.py │ │ │ ├── urls.py │ │ │ ├── utils.py │ │ │ ├── validators.py │ │ │ ├── views.py │ │ │ └── widgets.py │ │ ├── datascience/ │ │ │ ├── __init__.py │ │ │ ├── api_wrapper.py │ │ │ └── pprint_queryset.py │ │ ├── deployment/ │ │ │ ├── __init__.py │ │ │ ├── app_data.py │ │ │ ├── app_vars.py │ │ │ ├── management/ │ │ │ │ ├── __init__.py │ │ │ │ └── commands/ │ │ │ │ ├── __init__.py │ │ │ │ ├── init_app_data.py │ │ │ │ └── init_deployment_object.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ └── tasks.py │ │ ├── document/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ ├── annotator_error.py │ │ │ │ ├── field_value_views.py │ │ │ │ └── v1.py │ │ │ ├── app_vars.py │ │ │ ├── apps.py │ │ │ ├── async_notifications.py │ │ │ ├── async_tasks/ │ │ │ │ ├── __init__.py │ │ │ │ └── detect_field_values_task.py │ │ │ ├── constants.py │ │ │ ├── document_class.py │ │ │ ├── document_interface.py │ │ │ ├── field_detection/ │ │ │ │ ├── __init__.py │ │ │ │ ├── csv_regexps_field_detection_strategy.py │ │ │ │ ├── detect_field_values_params.py │ │ │ │ ├── detector_field_matcher.py │ │ │ │ ├── field_based_ml_field_detection.py │ │ │ │ ├── field_classifier_suggestion.py │ │ │ │ ├── field_detection.py │ │ │ │ ├── field_detection_celery_api.py │ │ │ │ ├── field_detection_repository.py │ │ │ │ ├── fields_detection_abstractions.py │ │ │ │ ├── formula_based_field_detection.py │ │ │ │ ├── mlflow_field_detection.py │ │ │ │ ├── regexps_and_text_based_ml_field_detection.py │ │ │ │ ├── regexps_field_detection.py │ │ │ │ ├── tests/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_csv_regexps_detection_cache.py │ │ │ │ │ ├── test_document_field_multiline_regex_detector.py │ │ │ │ │ ├── test_formula_error_detector.py │ │ │ │ │ ├── test_pre_process_regexp_option.py │ │ │ │ │ ├── test_regex_only_detection_strategy.py │ │ │ │ │ └── test_regexps_field_detection.py │ │ │ │ └── text_based_ml.py │ │ │ ├── field_processing/ │ │ │ │ ├── __init__.py │ │ │ │ ├── document_vectorizers.py │ │ │ │ ├── field_processing_utils.py │ │ │ │ ├── tests/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── test_fields_processing_utils.py │ │ │ │ │ ├── test_number_vectorizer.py │ │ │ │ │ ├── test_recurring_date_vectorizer.py │ │ │ │ │ └── test_serial_date_vectorizer.py │ │ │ │ └── vectorizers.py │ │ │ ├── field_type_registry.py │ │ │ ├── field_types.py │ │ │ ├── forms.py │ │ │ ├── management/ │ │ │ │ ├── __init__.py │ │ │ │ └── commands/ │ │ │ │ ├── __init__.py │ │ │ │ ├── create_document_type.py │ │ │ │ ├── delete_documents.py │ │ │ │ └── load_annotation_statuses.py │ │ │ ├── migration/ │ │ │ │ ├── __init__.py │ │ │ │ ├── document_export.py │ │ │ │ ├── document_import.py │ │ │ │ └── table_export_map.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_auto_20170731_0948.py │ │ │ │ ├── 0003_auto_20170818_0632.py │ │ │ │ ├── 0004_document_title.py │ │ │ │ ├── 0005_document_full_text.py │ │ │ │ ├── 0006_document_data.py │ │ │ │ ├── 0007_historicaldocument.py │ │ │ │ ├── 0008_auto_20180213_0739.py │ │ │ │ ├── 0009_auto_20180213_0746.py │ │ │ │ ├── 0010_auto_20180213_0818.py │ │ │ │ ├── 0011_auto_20180213_0825.py │ │ │ │ ├── 0012_auto_20180213_0829.py │ │ │ │ ├── 00136_delete_pending.py │ │ │ │ ├── 00137_historical_document_delete_pending.py │ │ │ │ ├── 0013_auto_20180213_2001.py │ │ │ │ ├── 0014_auto_20180215_0848.py │ │ │ │ ├── 0015_auto_20180219_0034.py │ │ │ │ ├── 0016_auto_20180219_1215.py │ │ │ │ ├── 0017_auto_20180223_1512.py │ │ │ │ ├── 0018_auto_20180223_1512.py │ │ │ │ ├── 0019_auto_20180223_1728.py │ │ │ │ ├── 0020_auto_20180305_1404.py │ │ │ │ ├── 0021_auto_20180305_1947.py │ │ │ │ ├── 0022_auto_20180306_1128.py │ │ │ │ ├── 0023_auto_20180306_1208.py │ │ │ │ ├── 0024_auto_20180306_1209.py │ │ │ │ ├── 0025_auto_20180306_1959.py │ │ │ │ ├── 0025_auto_20180307_0653.py │ │ │ │ ├── 0026_auto_20180307_0655.py │ │ │ │ ├── 0026_auto_20180308_0801.py │ │ │ │ ├── 0027_auto_20180307_1345.py │ │ │ │ ├── 0028_merge_20180308_1136.py │ │ │ │ ├── 0029_auto_20180309_1732.py │ │ │ │ ├── 0030_auto_20180314_1447.py │ │ │ │ ├── 0031_auto_20180315_1458.py │ │ │ │ ├── 0032_auto_20180330_1305.py │ │ │ │ ├── 0033_auto_20180401_0739.py │ │ │ │ ├── 0034_auto_20180401_0739.py │ │ │ │ ├── 0035_auto_20180404_1559.py │ │ │ │ ├── 0036_document_status.py │ │ │ │ ├── 0037_auto_20180405_1710.py │ │ │ │ ├── 0038_auto_20180406_1945.py │ │ │ │ ├── 0039_auto_20180407_1217.py │ │ │ │ ├── 0040_auto_20180420_1142.py │ │ │ │ ├── 0041_auto_20180420_1528.py │ │ │ │ ├── 0042_auto_20180426_1551.py │ │ │ │ ├── 0043_auto_20180426_1943.py │ │ │ │ ├── 0044_auto_20180426_1954.py │ │ │ │ ├── 0045_auto_20180615_1050.py │ │ │ │ ├── 0046_auto_20180622_1138.py │ │ │ │ ├── 0047_auto_20180628_1116.py │ │ │ │ ├── 0048_auto_20180705_1411.py │ │ │ │ ├── 0049_auto_20180706_0553.py │ │ │ │ ├── 0050_migrate_doc_size_20180706_0608.py │ │ │ │ ├── 0051_auto_20180718_0713.py │ │ │ │ ├── 0052_documentfield_description.py │ │ │ │ ├── 0053_custom_document_type_field_relation.py │ │ │ │ ├── 0054_auto_20180730_1013.py │ │ │ │ ├── 0055_auto_20180730_1433.py │ │ │ │ ├── 0056_auto_20180731_1435.py │ │ │ │ ├── 0056_externalfieldvalue.py │ │ │ │ ├── 0057_merge_20180802_0716.py │ │ │ │ ├── 0058_documentfield_value_regexp.py │ │ │ │ ├── 0059_auto_20180816_0457.py │ │ │ │ ├── 0060_auto_20180819_0534.py │ │ │ │ ├── 0061_auto_20180822_1708.py │ │ │ │ ├── 0062_fix_catastrophic_backtracking.py │ │ │ │ ├── 0063_fix_catastrophic_backtracking_for_all_detectors.py │ │ │ │ ├── 0064_auto_20180827_1330.py │ │ │ │ ├── 0065_auto_20180828_0757.py │ │ │ │ ├── 0066_fix_catastrophic_backtracking.py │ │ │ │ ├── 0067_auto_20180830_1347.py │ │ │ │ ├── 0068_auto_20180902_1951.py │ │ │ │ ├── 0069_documenttypefieldcategory.py │ │ │ │ ├── 0070_auto_20180911_0648.py │ │ │ │ ├── 0071_auto_20180911_0821.py │ │ │ │ ├── 0072_auto_20180914_0907.py │ │ │ │ ├── 0073_auto_20180919_0715.py │ │ │ │ ├── 0074_documentfield_require_text_annotations.py │ │ │ │ ├── 0075_auto_20180924_1728.py │ │ │ │ ├── 0076_auto_20180925_1232.py │ │ │ │ ├── 0077_auto_20180925_1626.py │ │ │ │ ├── 0078_auto_20180926_1702.py │ │ │ │ ├── 0079_documenttypefield_order.py │ │ │ │ ├── 0080_auto_20181002_1716.py │ │ │ │ ├── 0081_auto_20181003_2032.py │ │ │ │ ├── 0082_auto_20181003_2335.py │ │ │ │ ├── 0083_auto_20181003_2350.py │ │ │ │ ├── 0084_documenttype_editor_type.py │ │ │ │ ├── 0085_clean_dependends_on.py │ │ │ │ ├── 0086_textunit_metadata.py │ │ │ │ ├── 0087_documentfield_text_unit_type.py │ │ │ │ ├── 0088_documenttype_metadata.py │ │ │ │ ├── 0089_documentfield_metadata.py │ │ │ │ ├── 0090_auto_20181009_1149.py │ │ │ │ ├── 0091_auto_20181012_0827.py │ │ │ │ ├── 0092_auto_20181012_2155.py │ │ │ │ ├── 0093_auto_20181014_1748.py │ │ │ │ ├── 0094_documenttype_field_code_aliases.py │ │ │ │ ├── 0095_auto_20181019_2329.py │ │ │ │ ├── 0096_auto_20181022_0811.py │ │ │ │ ├── 0097_auto_20181022_0813.py │ │ │ │ ├── 0098_fix_geography_field_serialization.py │ │ │ │ ├── 0099_auto_20181025_1253.py │ │ │ │ ├── 0100_fix_date_field_serialization.py │ │ │ │ ├── 0101_auto_20181105_1144.py │ │ │ │ ├── 0102_auto_20181106_2359.py │ │ │ │ ├── 0103_documentfield_classifier_init_script.py │ │ │ │ ├── 0104_auto_20181123_1122.py │ │ │ │ ├── 0105_auto_20181128_1238.py │ │ │ │ ├── 0106_new_schema_document_type_fields_to_1_n.py │ │ │ │ ├── 0107_data_document_type_fields_to_1_n.py │ │ │ │ ├── 0108_apply_new_schema.py │ │ │ │ ├── 0109_fix_cached_fields.py │ │ │ │ ├── 0110_remove_temporary_fields.py │ │ │ │ ├── 0111_documentfielddetector_text_part.py │ │ │ │ ├── 0112_auto_20181222_1630.py │ │ │ │ ├── 0113_auto_20190104_1605.py │ │ │ │ ├── 0114_documentfield_allow_adding_choices.py │ │ │ │ ├── 0115_auto_20190116_1413.py │ │ │ │ ├── 0116_documentfield_default_value.py │ │ │ │ ├── 0117_auto_20190118_1214.py │ │ │ │ ├── 0118_auto_20190125_1551.py │ │ │ │ ├── 0119_auto_20190129_1253.py │ │ │ │ ├── 0120_auto_20190209_1201.py │ │ │ │ ├── 0121_auto_20190213_0952.py │ │ │ │ ├── 0122_auto_20190215_1040.py │ │ │ │ ├── 0123_auto_20190218_1341.py │ │ │ │ ├── 0124_auto_20190311_0855.py │ │ │ │ ├── 0125_auto_20190325_1530.py │ │ │ │ ├── 0125_documentfieldcategory_export_key.py │ │ │ │ ├── 0126_merge_20190327_1150.py │ │ │ │ ├── 0127_auto_20190405_0747.py │ │ │ │ ├── 0127_auto_20190408_1009.py │ │ │ │ ├── 0128_auto_20190409_1443.py │ │ │ │ ├── 0129_auto_20190418_1355.py │ │ │ │ ├── 0130_auto_20190419_1038.py │ │ │ │ ├── 0131_auto_20190419_1134.py │ │ │ │ ├── 0132_auto_20190419_1144.py │ │ │ │ ├── 0133_auto_20190424_1038.py │ │ │ │ ├── 0134_docfield_default_value.py │ │ │ │ ├── 0135_auto_20190510_0727.py │ │ │ │ ├── 0138_auto_20190527_1446.py │ │ │ │ ├── 0139_auto_20190527_1622.py │ │ │ │ ├── 0140_auto_20190530_0845.py │ │ │ │ ├── 0141_auto_20190531_0709.py │ │ │ │ ├── 0142_auto_20190531_1437.py │ │ │ │ ├── 0143_auto_20190716_1807.py │ │ │ │ ├── 0144_auto_20190725_0832.py │ │ │ │ ├── 0145_drop_index_20190731_1305.py │ │ │ │ ├── 0146_drop_index_20190731_1325.py │ │ │ │ ├── 0147_auto_20190823_1140.py │ │ │ │ ├── 0150_auto_20190902_1400.py │ │ │ │ ├── 0151_move_document_table.py │ │ │ │ ├── 0152_auto_20190902_1549.py │ │ │ │ ├── 0155_auto_20190924_0822.py │ │ │ │ ├── 0156_auto_20190930_1245.py │ │ │ │ ├── 0156_auto_20191002_0835.py │ │ │ │ ├── 0157_migrate_fieldvalues.py │ │ │ │ ├── 0158_update_processed.py │ │ │ │ ├── 0159_auto_20191004_0608.py │ │ │ │ ├── 0160_remove_docfieldval.py │ │ │ │ ├── 0161_auto_20191024_0903.py │ │ │ │ ├── 0162_auto_20191025_0412.py │ │ │ │ ├── 0163_auto_20191101_0752.py │ │ │ │ ├── 0164_auto_20191107_0831.py │ │ │ │ ├── 0165_fill_documenttext_metadata.py │ │ │ │ ├── 0166_auto_20191107_1047.py │ │ │ │ ├── 0167_remove_textunit_metadata.py │ │ │ │ ├── 0168_auto_20191114_1808.py │ │ │ │ ├── 0169_documentfield_vectorizer_stop_words.py │ │ │ │ ├── 0170_textunittext.py │ │ │ │ ├── 0171_migrate_textunit_text.py │ │ │ │ ├── 0172_auto_20191206_0650.py │ │ │ │ ├── 0173_auto_20191223_0908.py │ │ │ │ ├── 0174_auto_20200115_0823.py │ │ │ │ ├── 0175_auto_20200115_0828.py │ │ │ │ ├── 0176_auto_20200115_0829.py │ │ │ │ ├── 0177_auto_20200113_2143.py │ │ │ │ ├── 0178_documentfield_mlflow_detect_on_document_level.py │ │ │ │ ├── 0178_fieldannotationsavedfilter.py │ │ │ │ ├── 0179_auto_20200123_1327.py │ │ │ │ ├── 0180_auto_20200123_1330.py │ │ │ │ ├── 0181_merge_20200123_2008.py │ │ │ │ ├── 0182_auto_20200130_0752.py │ │ │ │ ├── 0183_auto_20200210_1427.py │ │ │ │ ├── 0184_auto_20200218_1714.py │ │ │ │ ├── 0185_auto_20200219_0706.py │ │ │ │ ├── 0186_auto_20200303_0857.py │ │ │ │ ├── 0187_auto_20200318_1430.py │ │ │ │ ├── 0188_auto_20200323_1551.py │ │ │ │ ├── 0189_auto_20200323_1551.py │ │ │ │ ├── 0190_auto_20200323_1551.py │ │ │ │ ├── 0191_auto_20200323_1551.py │ │ │ │ ├── 0192_auto_20200403_1148.py │ │ │ │ ├── 0193_auto_20200406_0833.py │ │ │ │ ├── 0194_auto_20200415_1545.py │ │ │ │ ├── 0195_auto_20200420_0936.py │ │ │ │ ├── 0196_auto_20200422_1059.py │ │ │ │ ├── 0197_auto_20200512_0940.py │ │ │ │ ├── 0198_auto_20200512_1157.py │ │ │ │ ├── 0199_auto_20200115_0828.py │ │ │ │ ├── 0200_auto_20200512_1815.py │ │ │ │ ├── 0201_auto_20200513_1844.py │ │ │ │ ├── 0202_auto_20200610_0917.py │ │ │ │ ├── 0203_auto_20200617_1327.py │ │ │ │ ├── 0204_auto_20200629_0743.py │ │ │ │ ├── 0205_add_dock_page.py │ │ │ │ ├── 0206_auto_20200713_1430.py │ │ │ │ ├── 0207_auto_20200718_1606.py │ │ │ │ ├── 0208_auto_20200805_1622.py │ │ │ │ ├── 0209_auto_20200818_1011.py │ │ │ │ ├── 0210_fill_note_user.py │ │ │ │ ├── 0211_set_rel_info_20200821_1030.py │ │ │ │ ├── 0212_detect_limit_count.py │ │ │ │ ├── 0213_field_category_per_document.py │ │ │ │ ├── 0214_auto_20200910_0719.py │ │ │ │ ├── 0215_auto_20200914_1449.py │ │ │ │ ├── 0216_ocr_rating.py │ │ │ │ ├── 0217_auto_20201111_2137.py │ │ │ │ ├── 0218_auto_20201118_1104.py │ │ │ │ ├── 0218_b_auto_20201117_0429.py │ │ │ │ ├── 0218_permissions.py │ │ │ │ ├── 0219_auto_20201119_0645.py │ │ │ │ ├── 0220_merge_20201119_1037.py │ │ │ │ ├── 0221_auto_20201216_1437.py │ │ │ │ ├── 0222_auto_20201224_1533.py │ │ │ │ ├── 0223_document_contract_class.py │ │ │ │ ├── 0224_auto_20210106_1234.py │ │ │ │ ├── 0225_auto_20210128_1213.py │ │ │ │ ├── 0226_remove_documentfield_stop_words.py │ │ │ │ ├── 0227_remove_fields_dirty_flag.py │ │ │ │ ├── 0228_auto_20210210_1241.py │ │ │ │ ├── 0229_add_mod_hist_rawdb_fields.py │ │ │ │ ├── 0230_auto_20210212_2324.py │ │ │ │ ├── 0231_move_detecting_limits.py │ │ │ │ ├── 0232_document_pdf_presentation_binary.py │ │ │ │ ├── 0233_auto_20210222_0851.py │ │ │ │ ├── 0234_boolean_to_related_type.py │ │ │ │ ├── 0235_amount_to_float_type.py │ │ │ │ ├── 0236_auto_20210330_1150.py │ │ │ │ ├── 0237_auto_20210330_1327.py │ │ │ │ ├── 0238_replace_removed_value_detection_strategies.py │ │ │ │ ├── 0239_auto_20210402_1120.py │ │ │ │ ├── 0240_auto_20210419_1117.py │ │ │ │ ├── 0241_documenttable_bounding_rect.py │ │ │ │ ├── 0242_auto_20210426_1209.py │ │ │ │ ├── 0243_remove_orphan_fields.py │ │ │ │ ├── 0244_obligatory_field_doc_type.py │ │ │ │ ├── 0245_fix_decimal_format.py │ │ │ │ ├── 0246_auto_20210722_0711.py │ │ │ │ ├── 0247_auto_20210722_1001.py │ │ │ │ ├── 0248_textunittext_document.py │ │ │ │ ├── 0249_document_field_detector_update.py │ │ │ │ ├── 0250_auto_20210830_0843.py │ │ │ │ ├── 0251_merge_textunit.py │ │ │ │ ├── 0252_remove_textunittext.py │ │ │ │ ├── 0253_modify_textunit_trigger.py │ │ │ │ ├── 0254_auto_20220511_1444.py │ │ │ │ ├── 0255_auto_20220617_0913.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── notifications.py │ │ │ ├── pdf_coordinates/ │ │ │ │ ├── __init__.py │ │ │ │ ├── pdf_coords_commons.py │ │ │ │ ├── tests/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── pdf_test_common.py │ │ │ │ │ └── test_coords_location.py │ │ │ │ └── text_coord_map.py │ │ │ ├── repository/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_document_repository.py │ │ │ │ ├── base_field_detector_repository.py │ │ │ │ ├── base_text_unit_repository.py │ │ │ │ ├── document_bulk_delete.py │ │ │ │ ├── document_field_repository.py │ │ │ │ ├── document_repository.py │ │ │ │ ├── dto.py │ │ │ │ ├── field_detector_repository.py │ │ │ │ └── text_unit_repository.py │ │ │ ├── schemas.py │ │ │ ├── scheme_migrations/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_scheme_migration.py │ │ │ │ ├── document_scheme_migration.py │ │ │ │ ├── scheme_migration.py │ │ │ │ └── tests/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_scheme_migration.py │ │ │ ├── signals.py │ │ │ ├── sync_tasks/ │ │ │ │ ├── __init__.py │ │ │ │ ├── document_files_cleaner.py │ │ │ │ ├── ensure_new_paths_unique_task.py │ │ │ │ ├── rename_old_documents_task.py │ │ │ │ └── soft_delete_document_task.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ ├── documentfield_admin_select.html │ │ │ │ └── task_menu_item.html │ │ │ ├── tests.py │ │ │ ├── unit_tests/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_models.py │ │ │ ├── urls.py │ │ │ ├── utils.py │ │ │ ├── value_extraction_hints.py │ │ │ └── views.py │ │ ├── dump/ │ │ │ ├── __init__.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── app_dump.py │ │ │ ├── apps.py │ │ │ ├── document_type_import.py │ │ │ ├── management/ │ │ │ │ ├── __init__.py │ │ │ │ └── commands/ │ │ │ │ ├── __init__.py │ │ │ │ ├── dump_data.py │ │ │ │ └── dump_field_values.py │ │ │ └── urls.py │ │ ├── extract/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── app_vars.py │ │ │ ├── apps.py │ │ │ ├── companies_extractor.py │ │ │ ├── company_types.py │ │ │ ├── dict_data_cache.py │ │ │ ├── locating_performance_meter.py │ │ │ ├── locators.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_auto_20170805_0955.py │ │ │ │ ├── 0003_auto_20170805_1140.py │ │ │ │ ├── 0004_auto_20170807_1327.py │ │ │ │ ├── 0005_auto_20170810_2015.py │ │ │ │ ├── 0006_auto_20170831_1607.py │ │ │ │ ├── 0007_auto_20170831_1611.py │ │ │ │ ├── 0008_auto_20170906_0735.py │ │ │ │ ├── 0009_auto_20170920_1515.py │ │ │ │ ├── 0010_auto_20170920_1523.py │ │ │ │ ├── 0011_auto_20170920_1523.py │ │ │ │ ├── 0012_remove_currencyusage_amount0.py │ │ │ │ ├── 0013_auto_20170920_2012.py │ │ │ │ ├── 0014_auto_20170920_2023.py │ │ │ │ ├── 0015_amountusage.py │ │ │ │ ├── 0016_distanceusage.py │ │ │ │ ├── 0017_ratiousage.py │ │ │ │ ├── 0018_percentusage.py │ │ │ │ ├── 0019_auto_20170923_0833.py │ │ │ │ ├── 0020_auto_20170923_0833.py │ │ │ │ ├── 0021_auto_20170923_0848.py │ │ │ │ ├── 0022_auto_20170923_0849.py │ │ │ │ ├── 0023_auto_20170923_0850.py │ │ │ │ ├── 0024_definitionusage_definition_str.py │ │ │ │ ├── 0025_dateusage_date_str.py │ │ │ │ ├── 0026_auto_20170924_0824.py │ │ │ │ ├── 0027_auto_20170924_0850.py │ │ │ │ ├── 0028_citationusage.py │ │ │ │ ├── 0029_auto_20171031_0849.py │ │ │ │ ├── 0030_auto_20171031_0924.py │ │ │ │ ├── 0031_auto_20171031_1553.py │ │ │ │ ├── 0032_auto_20171031_1610.py │ │ │ │ ├── 0033_auto_20171103_1131.py │ │ │ │ ├── 0034_auto_20171108_1200.py │ │ │ │ ├── 0035_auto_20171110_1239.py │ │ │ │ ├── 0036_auto_20171110_1419.py │ │ │ │ ├── 0037_geoentity_priority.py │ │ │ │ ├── 0038_cache_locate_configs.py │ │ │ │ ├── 0039_auto_20190204_1246.py │ │ │ │ ├── 0040_auto_20190204_1301.py │ │ │ │ ├── 0041_auto_20190209_1201.py │ │ │ │ ├── 0042_auto_20190212_1337.py │ │ │ │ ├── 0043_auto_20190227_1952.py │ │ │ │ ├── 0044_cache_locate_configs.py │ │ │ │ ├── 0045_documenttermusage.py │ │ │ │ ├── 0046_auto_20200321_1322.py │ │ │ │ ├── 0047_documentdefinitionusage.py │ │ │ │ ├── 0048_auto_20200323_1702.py │ │ │ │ ├── 0053_auto_20200402_0909.py │ │ │ │ ├── 0054_systemwidedefinitionusage_systemwidegeoentityusage_systemwidepartyusage_systemwidetermusage.py │ │ │ │ ├── 0055_project_mat_views.py │ │ │ │ ├── 0056_auto_20200515_1323.py │ │ │ │ ├── 0057_blacklistrecord.py │ │ │ │ ├── 0058_auto_20200713_1430.py │ │ │ │ ├── 0059_add_matviews_index.py │ │ │ │ ├── 0060_typed_dict_entities.py │ │ │ │ ├── 0061_auto_20200826_0719.py │ │ │ │ ├── 0062_auto_20201207_1241.py │ │ │ │ ├── 0063_companytype_companytypetag.py │ │ │ │ ├── 0064_auto_20210222_0747.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── signals.py │ │ │ ├── term_stems.py │ │ │ ├── tests.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── highq_integration/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── apps.py │ │ │ ├── dto.py │ │ │ ├── forms.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_auto_20201224_1533.py │ │ │ │ ├── 0003_auto_20210106_1923.py │ │ │ │ ├── 0004_auto_20210402_1913.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ ├── column_mapping_form.html │ │ │ │ └── task_menu_item.html │ │ │ ├── urls.py │ │ │ ├── utils.py │ │ │ └── views.py │ │ ├── imanage_integration/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── apps.py │ │ │ ├── debug/ │ │ │ │ ├── __init__.py │ │ │ │ ├── data/ │ │ │ │ │ └── .gitignore │ │ │ │ └── mock_imanage_server.py │ │ │ ├── forms.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_imanagedocument_imanage_doc_number.py │ │ │ │ ├── 0003_auto_20190206_1353.py │ │ │ │ ├── 0004_imanagedocument_import_problem.py │ │ │ │ ├── 0005_imanagedocument_import_problem_false.py │ │ │ │ ├── 0006_auto_20190325_1530.py │ │ │ │ ├── 0007_auto_20190424_1047.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ └── task_menu_item.html │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── logging/ │ │ │ ├── __init__.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ └── app_vars.py │ │ ├── materialized_views/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── app_vars.py │ │ │ ├── forms.py │ │ │ ├── mat_views.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_materializedview_status.py │ │ │ │ ├── 0003_remove_materializedview_last_update_duration.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ └── task_menu_item.html │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── mlflow/ │ │ │ ├── .gitignore │ │ │ ├── __init__.py │ │ │ ├── app_vars.py │ │ │ ├── mlflow_model_client.py │ │ │ ├── mlflow_model_manager.py │ │ │ ├── mlflow_socket_server_script.py │ │ │ └── tasks.py │ │ ├── notifications/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── app_vars.py │ │ │ ├── apps.py │ │ │ ├── document_notification.py │ │ │ ├── forms.py │ │ │ ├── mail_server_config.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_auto_20190311_0855.py │ │ │ │ ├── 0003_auto_20190315_0901.py │ │ │ │ ├── 0004_auto_20190319_1455.py │ │ │ │ ├── 0005_documentnotificationsubscription_recipients_cc.py │ │ │ │ ├── 0006_auto_20190424_1047.py │ │ │ │ ├── 0007_auto_20190724_1238.py │ │ │ │ ├── 0008_documentnotificationsubscription_max_stack.py │ │ │ │ ├── 0009_auto_20191003_0546.py │ │ │ │ ├── 0010_auto_20201007_0926.py │ │ │ │ ├── 0011_auto_20201224_1533.py │ │ │ │ ├── 0012_update_mail_appvar.py │ │ │ │ ├── 0013_webnotification_webnotificationmessage.py │ │ │ │ ├── 0014_webnotificationmessage_notification_type.py │ │ │ │ ├── 0015_remove_webnotificationmessage_redirect_link.py │ │ │ │ ├── 0016_webnotificationmessage_redirect_link.py │ │ │ │ ├── 0017_auto_20210805_1238.py │ │ │ │ ├── 0018_webnotificationmessage_message.py │ │ │ │ ├── 0019_update_web_notifications_message_field.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── notification_renderer.py │ │ │ ├── notification_templates/ │ │ │ │ ├── document_digest/ │ │ │ │ │ ├── template.html │ │ │ │ │ └── template.txt │ │ │ │ └── document_notification/ │ │ │ │ ├── template.html │ │ │ │ ├── template.txt │ │ │ │ ├── template_pack.html │ │ │ │ └── template_pack.txt │ │ │ ├── notifications.py │ │ │ ├── schemas.py │ │ │ ├── signals.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ ├── notifications/ │ │ │ │ │ └── digest_config_change.html │ │ │ │ └── task_menu_item.html │ │ │ ├── tests/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_send_email.py │ │ │ │ ├── test_values_look_equal.py │ │ │ │ └── test_web_notifications.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── project/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── constants.py │ │ │ ├── context_processors.py │ │ │ ├── forms.py │ │ │ ├── management/ │ │ │ │ ├── __init__.py │ │ │ │ └── commands/ │ │ │ │ ├── __init__.py │ │ │ │ └── delete_projects.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_auto_20170731_0948.py │ │ │ │ ├── 0003_auto_20180302_0904.py │ │ │ │ ├── 0004_auto_20180305_1915.py │ │ │ │ ├── 0005_projectupload.py │ │ │ │ ├── 0006_auto_20180306_1208.py │ │ │ │ ├── 0007_auto_20180307_0653.py │ │ │ │ ├── 0008_uploadsession_completed.py │ │ │ │ ├── 0009_auto_20180313_1330.py │ │ │ │ ├── 0010_projectclustering.py │ │ │ │ ├── 0011_auto_20180324_0503.py │ │ │ │ ├── 0012_auto_20180401_2046.py │ │ │ │ ├── 0013_auto_20180405_1710.py │ │ │ │ ├── 0014_auto_20180406_0522.py │ │ │ │ ├── 0015_auto_20180406_1103.py │ │ │ │ ├── 0016_auto_20180406_1945.py │ │ │ │ ├── 0017_delete_reviewstatus.py │ │ │ │ ├── 0018_auto_20180510_1105.py │ │ │ │ ├── 0019_auto_20180630_0807.py │ │ │ │ ├── 0020_fix_projectclustering_task_id_type_20180706_0858.py │ │ │ │ ├── 0021_auto_20180725_1829.py │ │ │ │ ├── 0022_project_super_reviewers.py │ │ │ │ ├── 0023_auto_20180730_1013.py │ │ │ │ ├── 0024_project_send_email_notification.py │ │ │ │ ├── 0025_auto_20181010_1739.py │ │ │ │ ├── 0026_auto_20181013_0730.py │ │ │ │ ├── 0027_documentfilter_created_by.py │ │ │ │ ├── 0028_projectdocumentsfilter.py │ │ │ │ ├── 0029_auto_20181102_1910.py │ │ │ │ ├── 0030_auto_20190424_1047.py │ │ │ │ ├── 0031_delete_pending_field.py │ │ │ │ ├── 0032_auto_20190527_1446.py │ │ │ │ ├── 0033_auto_20190916_1356.py │ │ │ │ ├── 0034_auto_20191016_0857.py │ │ │ │ ├── 0035_projecttermconfiguration.py │ │ │ │ ├── 0036_auto_20191112_1039.py │ │ │ │ ├── 0037_auto_20191113_1208.py │ │ │ │ ├── 0038_project_hide_clause_review.py │ │ │ │ ├── 0039_userprojectssavedfilter.py │ │ │ │ ├── 0040_auto_20200512_1829.py │ │ │ │ ├── 0041_auto_20200522_0811.py │ │ │ │ ├── 0042_auto_20200713_1518.py │ │ │ │ ├── 0043_permissions.py │ │ │ │ ├── 0044_auto_20201201_0954.py │ │ │ │ ├── 0045_auto_20201209_1541.py │ │ │ │ ├── 0045_project_term_tags.py │ │ │ │ ├── 0046_delete_projecttermconfiguration.py │ │ │ │ ├── 0047_merge_20201218_0901.py │ │ │ │ ├── 0048_project_companytype_tags.py │ │ │ │ ├── 0049_project_default_tags.py │ │ │ │ ├── 0050_auto_20210222_0851.py │ │ │ │ ├── 0051_clear_project_transformers.py │ │ │ │ ├── 0052_retarget_project_transformers.py │ │ │ │ ├── 0053_auto_20211104_1244.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── notifications.py │ │ │ ├── repository/ │ │ │ │ ├── __init__.py │ │ │ │ └── project_repository.py │ │ │ ├── schemas.py │ │ │ ├── signals.py │ │ │ ├── sync_tasks/ │ │ │ │ ├── __init__.py │ │ │ │ └── soft_delete_project_task.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ └── email/ │ │ │ │ ├── notify_upload_completed.html │ │ │ │ ├── notify_upload_completed.txt │ │ │ │ ├── notify_upload_started.html │ │ │ │ └── notify_upload_started.txt │ │ │ ├── tests.py │ │ │ ├── urls.py │ │ │ ├── utils/ │ │ │ │ ├── __init__.py │ │ │ │ ├── tests/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_unique_name_builder.py │ │ │ │ └── unique_name.py │ │ │ └── views.py │ │ ├── rawdb/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── app_dump_models.py │ │ │ ├── app_vars.py │ │ │ ├── apps.py │ │ │ ├── constants.py │ │ │ ├── field_value_tables.py │ │ │ ├── forms.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_auto_20181207_0817.py │ │ │ │ ├── 0003_auto_20181211_1034.py │ │ │ │ ├── 0004_savedfilter.py │ │ │ │ ├── 0005_remove_savedfilter_document_sort_order.py │ │ │ │ ├── 0006_remove_savedfilter_filter_sql.py │ │ │ │ ├── 0007_auto_20181219_2013.py │ │ │ │ ├── 0008_auto_20181219_2122.py │ │ │ │ ├── 0009_auto_20181219_2124.py │ │ │ │ ├── 0010_auto_20181226_1111.py │ │ │ │ ├── 0011_savedfilter_filter_type.py │ │ │ │ ├── 0012_add_postgres_index_extension.py │ │ │ │ ├── 0013_add_app_vars_descriptions.py │ │ │ │ ├── 0014_auto_20190104_1605.py │ │ │ │ ├── 0015_auto_20190319_1501.py │ │ │ │ ├── 0016_auto_20190705_1123.py │ │ │ │ ├── 0017_auto_20190710_1314.py │ │ │ │ ├── 0018_initiate_reindex.py │ │ │ │ ├── 0019_auto_20191024_1632.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── notifications.py │ │ │ ├── rawdb/ │ │ │ │ ├── __init__.py │ │ │ │ ├── errors.py │ │ │ │ ├── query_parsing.py │ │ │ │ ├── rawdb_field_handlers.py │ │ │ │ └── system_rawdb_config.py │ │ │ ├── repository/ │ │ │ │ ├── __init__.py │ │ │ │ ├── base_raw_db_repository.py │ │ │ │ ├── raw_db_migrations.py │ │ │ │ └── raw_db_repository.py │ │ │ ├── schemas.py │ │ │ ├── signals.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ └── task_menu_item.html │ │ │ ├── tests/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_calc_doctype_cache_columns.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── similarity/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── chunk_similarity_task.py │ │ │ ├── forms.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_remove_documentsimilarityconfig_project.py │ │ │ │ ├── 0003_auto_20190530_0845.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── notifications.py │ │ │ ├── signals.py │ │ │ ├── similarity_metrics.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ └── task_menu_item.html │ │ │ ├── tests/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_document_chunk_similarity_processor.py │ │ │ │ └── test_similatiry_processor.py │ │ │ ├── urls.py │ │ │ └── views.py │ │ ├── task/ │ │ │ ├── __init__.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── app_vars.py │ │ │ ├── celery_backend/ │ │ │ │ ├── __init__.py │ │ │ │ ├── advanced_celery.py │ │ │ │ ├── autoscaler.py │ │ │ │ ├── constants.py │ │ │ │ ├── database.py │ │ │ │ ├── managers.py │ │ │ │ ├── task_utils.py │ │ │ │ └── utils.py │ │ │ ├── forms.py │ │ │ ├── management/ │ │ │ │ ├── __init__.py │ │ │ │ └── commands/ │ │ │ │ ├── __init__.py │ │ │ │ ├── load_documents.py │ │ │ │ ├── load_entities.py │ │ │ │ ├── load_terms.py │ │ │ │ ├── locate_entities.py │ │ │ │ ├── locate_parties.py │ │ │ │ ├── locate_terms.py │ │ │ │ └── total_cleanup.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_task_user.py │ │ │ │ ├── 0003_task_metadata.py │ │ │ │ ├── 0004_task_celery_task_result.py │ │ │ │ ├── 0005_task_visible.py │ │ │ │ ├── 0006_auto_20180315_1759.py │ │ │ │ ├── 0007_auto_20180330_1305.py │ │ │ │ ├── 0008_auto_20180330_1522.py │ │ │ │ ├── 0009_auto_20180404_0851.py │ │ │ │ ├── 0010_auto_20180510_1105.py │ │ │ │ ├── 0011_taskconfig.py │ │ │ │ ├── 0012_auto_20180606_1630.py │ │ │ │ ├── 0013_auto_20180606_1928.py │ │ │ │ ├── 0014_auto_20180606_1956.py │ │ │ │ ├── 0015_auto_20180610_2212.py │ │ │ │ ├── 0016_auto_20180613_1529.py │ │ │ │ ├── 0017_auto_20180615_1400.py │ │ │ │ ├── 0018_auto_20180615_1423.py │ │ │ │ ├── 0019_remove_task_duration_at_last_update_time.py │ │ │ │ ├── 0020_remove_task_progress.py │ │ │ │ ├── 0021_remove_task_date_done.py │ │ │ │ ├── 0022_auto_20180619_1629.py │ │ │ │ ├── 0023_task_description.py │ │ │ │ ├── 0024_auto_20180621_0845.py │ │ │ │ ├── 0025_auto_20180622_1528.py │ │ │ │ ├── 0026_auto_20180624_1632.py │ │ │ │ ├── 0027_auto_20180624_1633.py │ │ │ │ ├── 0028_auto_20180624_2227.py │ │ │ │ ├── 0029_task_log_extra.py │ │ │ │ ├── 0030_create_undex_20180712_1131.py │ │ │ │ ├── 0031_auto_20180725_1416.py │ │ │ │ ├── 0032_data_migration_20180725_1417.py │ │ │ │ ├── 0033_task_completed.py │ │ │ │ ├── 0034_data_migration_20180725_1445.py │ │ │ │ ├── 0035_auto_20180816_1249.py │ │ │ │ ├── 0036_task_run_count.py │ │ │ │ ├── 0037_auto_20180822_1258.py │ │ │ │ ├── 0038_remove_task_own_date_work_start.py │ │ │ │ ├── 0039_task_worker.py │ │ │ │ ├── 0040_auto_20180910_0913.py │ │ │ │ ├── 0040_task_run_after_sub_tasks_finished.py │ │ │ │ ├── 0041_merge_20180911_0538.py │ │ │ │ ├── 0042_task_args.py │ │ │ │ ├── 0043_create_document_soft_time_limit.py │ │ │ │ ├── 0044_fix_document_soft_time_limit.py │ │ │ │ ├── 0045_fix_document_soft_time_limit.py │ │ │ │ ├── 0046_fix_document_soft_time_limit.py │ │ │ │ ├── 0047_task_priority.py │ │ │ │ ├── 0048_task_call_stack.py │ │ │ │ ├── 0049_auto_20190911_1646.py │ │ │ │ ├── 0050_task_run_after_sub_tasks_failed.py │ │ │ │ ├── 0051_auto_20191113_1825.py │ │ │ │ ├── 0052_task_has_sub_tasks.py │ │ │ │ ├── 0053_auto_20191114_0825.py │ │ │ │ ├── 0054_auto_remove_args_index.py │ │ │ │ ├── 0055_auto_20200113_2143.py │ │ │ │ ├── 0056_auto_20200206_1030.py │ │ │ │ ├── 0057_add_task_display_name.py │ │ │ │ ├── 0058_auto_20200323_1529.py │ │ │ │ ├── 0059_auto_20200420_1504.py │ │ │ │ ├── 0060_auto_20200424_1121.py │ │ │ │ ├── 0061_auto_20200424_1341.py │ │ │ │ ├── 0062_auto_20200609_0914.py │ │ │ │ ├── 0063_auto_20200630_1353.py │ │ │ │ ├── 0064_task_spawned_processes.py │ │ │ │ ├── 0065_raise_failure_status_order.py │ │ │ │ ├── 0066_taskstatentry.py │ │ │ │ ├── 0067_task_bad_health_check_num.py │ │ │ │ ├── 0068_task_queue.py │ │ │ │ ├── 0069_auto_20201208_0911.py │ │ │ │ ├── 0070_auto_20201208_1813.py │ │ │ │ ├── 0071_add_reindex_task.py │ │ │ │ ├── 0072_auto_20210402_1120.py │ │ │ │ ├── 0073_remove_dirty_from_task_names.py │ │ │ │ ├── 0075_task_weight.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── ocr_rating/ │ │ │ │ ├── __init__.py │ │ │ │ └── ocr_rating_calculator.py │ │ │ ├── schemas.py │ │ │ ├── signals.py │ │ │ ├── static/ │ │ │ │ └── moment-duration-format.js │ │ │ ├── task_health_check/ │ │ │ │ ├── __init__.py │ │ │ │ └── task_health_check.py │ │ │ ├── task_monitor.py │ │ │ ├── task_visibility.py │ │ │ ├── tasks.py │ │ │ ├── templates/ │ │ │ │ └── task/ │ │ │ │ ├── task_detail.html │ │ │ │ ├── task_form.html │ │ │ │ └── task_list.html │ │ │ ├── tests/ │ │ │ │ ├── __init__.py │ │ │ │ └── test_calc_task_status.py │ │ │ ├── urls.py │ │ │ ├── utils/ │ │ │ │ ├── __init__.py │ │ │ │ ├── task_utils.py │ │ │ │ └── tests/ │ │ │ │ └── __init__.py │ │ │ └── views.py │ │ ├── tus/ │ │ │ ├── __init__.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── schemas.py │ │ │ └── storage.py │ │ ├── users/ │ │ │ ├── __init__.py │ │ │ ├── adapters.py │ │ │ ├── admin.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ └── v1.py │ │ │ ├── app_vars.py │ │ │ ├── authentication.py │ │ │ ├── forms.py │ │ │ ├── management/ │ │ │ │ ├── __init__.py │ │ │ │ └── commands/ │ │ │ │ └── __init__.py │ │ │ ├── migrations/ │ │ │ │ ├── 0001_initial.py │ │ │ │ ├── 0002_auto_20180522_0810.py │ │ │ │ ├── 0003_role.py │ │ │ │ ├── 0004_load_roles_20180626_1435.py │ │ │ │ ├── 0005_migrate_users_20180626_1514.py │ │ │ │ ├── 0006_auto_20180626_1523.py │ │ │ │ ├── 0007_user_photo.py │ │ │ │ ├── 0008_auto_20180919_0715.py │ │ │ │ ├── 0009_user_timezone.py │ │ │ │ ├── 0010_auto_20190424_1047.py │ │ │ │ ├── 0011_auto_20200113_2143.py │ │ │ │ ├── 0012_auto_20200706_0907.py │ │ │ │ ├── 0013_auto_20200706_0912.py │ │ │ │ ├── 0014_auto_20200713_1531.py │ │ │ │ ├── 0015_socialappuri.py │ │ │ │ ├── 0016_user_origin.py │ │ │ │ ├── 0017_permissions.py │ │ │ │ ├── 0017_user_name.py │ │ │ │ ├── 0018_permissions.py │ │ │ │ ├── 0019_merge_20201119_1037.py │ │ │ │ ├── 0020_auto_20201218_0759.py │ │ │ │ ├── 0021_auto_20201224_1533.py │ │ │ │ ├── 0022_unique_email.py │ │ │ │ ├── 0023_user_initials.py │ │ │ │ ├── 0024_add_doctype_manager_permissions.py │ │ │ │ ├── 0025_user_uid.py │ │ │ │ ├── 0026_add_task_permissions_to_project_creator_group.py │ │ │ │ ├── 0027_add_task_perms_to_project_and_doc_type_creator_group.py │ │ │ │ ├── 0028_auto_20220615_1302.py │ │ │ │ └── __init__.py │ │ │ ├── models.py │ │ │ ├── permissions.py │ │ │ ├── rest_auth_urls.py │ │ │ ├── schemas.py │ │ │ ├── serializers.py │ │ │ ├── signals.py │ │ │ ├── social/ │ │ │ │ ├── __init__.py │ │ │ │ ├── adapters.py │ │ │ │ ├── clients.py │ │ │ │ ├── custom_auxilary.py │ │ │ │ ├── custom_uris.py │ │ │ │ ├── elevate/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── adapters.py │ │ │ │ │ ├── clients.py │ │ │ │ │ ├── provider.py │ │ │ │ │ ├── schemas.py │ │ │ │ │ └── views.py │ │ │ │ ├── google/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── adapters.py │ │ │ │ │ ├── provider.py │ │ │ │ │ └── views.py │ │ │ │ ├── office365/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── adapters.py │ │ │ │ │ ├── provider.py │ │ │ │ │ └── views.py │ │ │ │ ├── okta/ │ │ │ │ │ ├── adapters.py │ │ │ │ │ ├── provider.py │ │ │ │ │ └── views.py │ │ │ │ ├── provider.py │ │ │ │ ├── serializers.py │ │ │ │ └── urls.py │ │ │ ├── tests.py │ │ │ ├── unit_tests/ │ │ │ │ ├── __init__.py │ │ │ │ └── tests/ │ │ │ │ ├── __init__.py │ │ │ │ ├── factories.py │ │ │ │ ├── manual_test_admin.py │ │ │ │ ├── manual_test_models.py │ │ │ │ ├── manual_test_urls.py │ │ │ │ ├── manual_test_views.py │ │ │ │ ├── test_adapters.py │ │ │ │ └── test_auxilary.py │ │ │ ├── urls.py │ │ │ ├── user_utils.py │ │ │ └── views.py │ │ └── websocket/ │ │ ├── __init__.py │ │ ├── channel_message.py │ │ ├── channel_message_types.py │ │ ├── routing.py │ │ └── websockets.py │ ├── asgi.py │ ├── contraxsuite_logging.py │ ├── data/ │ │ └── README.md │ ├── deploy/ │ │ ├── README.md │ │ └── base/ │ │ ├── debian-requirements.txt │ │ ├── notes.txt │ │ ├── python-requirements-all-3.8.txt │ │ ├── python-requirements-all.txt │ │ ├── python-requirements-ignore-conflicts.txt │ │ ├── python-requirements-lexnlp.txt │ │ ├── python-requirements-text-extraction.txt │ │ ├── python-unwanted-requirements.txt │ │ └── supported_locales.txt │ ├── fixtures/ │ │ ├── additional/ │ │ │ ├── .gitignore │ │ │ └── README.md │ │ ├── common/ │ │ │ ├── 2_ReviewStatusGroup.json │ │ │ ├── 3_ReviewStatus.json │ │ │ └── 4_FieldAnnotationStatus.json │ │ └── demo/ │ │ └── document_data/ │ │ └── LeaseDemo.json │ ├── jars/ │ │ └── .keep │ ├── local_settings.py.example │ ├── manage.py │ ├── nodb_settings.py │ ├── notebooks/ │ │ └── demo/ │ │ ├── accessing_field_values_sql.ipynb │ │ ├── api_usage_example.ipynb │ │ ├── clone_document_type.ipynb │ │ ├── clustering.ipynb │ │ ├── delete_user.ipynb │ │ ├── doc_type_export_csv.ipynb │ │ ├── download_imanage_document_files.ipynb │ │ ├── field_value_rename.ipynb │ │ ├── migrate_field.ipynb │ │ ├── remove_extra_terms.ipynb │ │ └── replace_field_code_in_formulas.ipynb │ ├── run_celery.sh │ ├── runpylint.sh │ ├── settings.py │ ├── smtp.py │ ├── swagger_view.py │ ├── task_names.py │ ├── templates/ │ │ ├── 400.html │ │ ├── 403.html │ │ ├── 403_csrf.html │ │ ├── 404.html │ │ ├── 405.html │ │ ├── 500.html │ │ ├── _base_grid_buttons_block.html │ │ ├── _base_jqxgrid_block.html │ │ ├── _django_ql_searchbox.html │ │ ├── _form_field.html │ │ ├── _jq_imports_block.html │ │ ├── about.html │ │ ├── account/ │ │ │ ├── account_inactive.html │ │ │ ├── base.html │ │ │ ├── email/ │ │ │ │ ├── password_reset_key_message.html │ │ │ │ └── password_reset_key_subject.txt │ │ │ ├── email.html │ │ │ ├── email_confirm.html │ │ │ ├── login.html │ │ │ ├── logout.html │ │ │ ├── old_templates/ │ │ │ │ ├── login_old.html │ │ │ │ ├── password_reset_done.html │ │ │ │ ├── password_reset_from_key.html │ │ │ │ ├── password_reset_from_key_done.html │ │ │ │ └── password_reset_old.html │ │ │ ├── password_change.html │ │ │ ├── password_reset.html │ │ │ ├── password_reset_done.html │ │ │ ├── password_reset_from_key.html │ │ │ ├── password_reset_from_key_done.html │ │ │ ├── password_set.html │ │ │ ├── signup.html │ │ │ ├── signup_closed.html │ │ │ ├── verification_sent.html │ │ │ └── verified_email_required.html │ │ ├── admin/ │ │ │ ├── actions.html │ │ │ ├── analyze/ │ │ │ │ └── mlmodel/ │ │ │ │ └── change_form.html │ │ │ ├── base.html │ │ │ ├── base_site.html │ │ │ ├── common/ │ │ │ │ └── confirm_delete_view.html │ │ │ ├── document/ │ │ │ │ ├── document/ │ │ │ │ │ └── change_list.html │ │ │ │ ├── documentfield/ │ │ │ │ │ ├── change_form.html │ │ │ │ │ ├── confirm_newchoices_view.html │ │ │ │ │ ├── delete_confirmation.html │ │ │ │ │ └── delete_selected_confirmation.html │ │ │ │ ├── documentfieldmultilineregexdetector/ │ │ │ │ │ └── change_form.html │ │ │ │ ├── documenttype/ │ │ │ │ │ ├── change_form.html │ │ │ │ │ ├── delete_confirmation.html │ │ │ │ │ └── delete_selected_confirmation.html │ │ │ │ ├── field_combobox.html │ │ │ │ ├── field_values_warning_save_form.html │ │ │ │ ├── ql_searchbox.html │ │ │ │ ├── softdeletedocument/ │ │ │ │ │ ├── change_list.html │ │ │ │ │ └── confirm_delete_view.html │ │ │ │ ├── text_unit/ │ │ │ │ │ └── change_list.html │ │ │ │ ├── users_tasks_warning.html │ │ │ │ └── users_tasks_warning_save_form.html │ │ │ ├── extract/ │ │ │ │ ├── companytype/ │ │ │ │ │ ├── change_list.html │ │ │ │ │ └── companytypes_csv_import.html │ │ │ │ └── term/ │ │ │ │ ├── change_list.html │ │ │ │ └── terms_csv_import.html │ │ │ ├── ms_exchange_integration/ │ │ │ │ └── mailboxmessage/ │ │ │ │ ├── change_list.html │ │ │ │ └── confirm_delete_view.html │ │ │ ├── notifications/ │ │ │ │ └── documentnotificationsubscription/ │ │ │ │ └── change_form.html │ │ │ ├── project/ │ │ │ │ └── softdeleteproject/ │ │ │ │ ├── change_list.html │ │ │ │ └── confirm_delete_view.html │ │ │ └── task/ │ │ │ └── reindexroutine/ │ │ │ └── change_form.html │ │ ├── allauth_2fa/ │ │ │ ├── authenticate.html │ │ │ ├── backup_tokens.html │ │ │ ├── remove.html │ │ │ └── setup.html │ │ ├── analyze/ │ │ │ ├── document_classification_list.html │ │ │ ├── document_classifier_list.html │ │ │ ├── document_classifier_suggestion_list.html │ │ │ ├── document_cluster_list.html │ │ │ ├── document_similarity_list.html │ │ │ ├── text_unit_classification_list.html │ │ │ ├── text_unit_classifier_list.html │ │ │ ├── text_unit_classifier_suggestion_list.html │ │ │ ├── text_unit_cluster_list.html │ │ │ └── text_unit_similarity_list.html │ │ ├── base.html │ │ ├── base_delete.html │ │ ├── base_detail.html │ │ ├── base_error.html │ │ ├── base_form.html │ │ ├── base_list.html │ │ ├── base_list_ajax.html │ │ ├── common/ │ │ │ ├── db_schema_visualization/ │ │ │ │ ├── input.html │ │ │ │ └── output.html │ │ │ ├── db_stats.html │ │ │ ├── docker_stats.html │ │ │ └── method_stats_overview.html │ │ ├── django_extensions/ │ │ │ └── graph_models/ │ │ │ ├── contraxsuite/ │ │ │ │ ├── digraph.dot │ │ │ │ ├── label.dot │ │ │ │ └── relation.dot │ │ │ └── contraxsuite_with_repository_permalinks/ │ │ │ ├── digraph.dot │ │ │ ├── label.dot │ │ │ └── relation.dot │ │ ├── document/ │ │ │ ├── _document_lang_popup_js.html │ │ │ ├── _document_property_popup_js.html │ │ │ ├── _document_tables.html │ │ │ ├── _document_tasks.html │ │ │ ├── _note_js.html │ │ │ ├── document_action_list.html │ │ │ ├── document_detail.html │ │ │ ├── document_enhanced_view.html │ │ │ ├── document_list.html │ │ │ ├── document_note_list.html │ │ │ ├── document_property_list.html │ │ │ ├── document_relation_list.html │ │ │ ├── document_source.html │ │ │ ├── document_tag_list.html │ │ │ ├── stats.html │ │ │ ├── text_unit_detail.html │ │ │ ├── text_unit_lang_list.html │ │ │ ├── text_unit_list.html │ │ │ ├── text_unit_note_list.html │ │ │ ├── text_unit_property_list.html │ │ │ ├── text_unit_ref_usage_list.html │ │ │ └── text_unit_tag_list.html │ │ ├── email/ │ │ │ ├── email_base.html │ │ │ ├── logo_new.html │ │ │ ├── logo_old.html │ │ │ └── logo_svg.html │ │ ├── extract/ │ │ │ ├── amount_usage_list.html │ │ │ ├── citation_usage_list.html │ │ │ ├── copyright_usage_list.html │ │ │ ├── court_usage_list.html │ │ │ ├── currency_usage_list.html │ │ │ ├── date_duration_usage_list.html │ │ │ ├── date_usage_calendar.html │ │ │ ├── date_usage_list.html │ │ │ ├── date_usage_timeline.html │ │ │ ├── definition_usage_list.html │ │ │ ├── distance_usage_list.html │ │ │ ├── geo_entity_list.html │ │ │ ├── geo_entity_usage_chart.html │ │ │ ├── geo_entity_usage_list.html │ │ │ ├── geo_entity_usage_map.html │ │ │ ├── party_network_chart.html │ │ │ ├── party_summary.html │ │ │ ├── party_usage_list.html │ │ │ ├── percent_usage_list.html │ │ │ ├── ratio_usage_list.html │ │ │ ├── regulation_usage_list.html │ │ │ ├── term_usage_list.html │ │ │ ├── top_amount_usage_list.html │ │ │ ├── top_citation_usage_list.html │ │ │ ├── top_copyright_usage_list.html │ │ │ ├── top_court_usage_list.html │ │ │ ├── top_currency_usage_list.html │ │ │ ├── top_date_duration_usage_list.html │ │ │ ├── top_date_usage_list.html │ │ │ ├── top_definition_usage_list.html │ │ │ ├── top_distance_usage_list.html │ │ │ ├── top_geo_entity_usage_list.html │ │ │ ├── top_party_usage_list.html │ │ │ ├── top_percent_usage_list.html │ │ │ ├── top_ratio_usage_list.html │ │ │ ├── top_regulation_usage_list.html │ │ │ ├── top_term_usage_list.html │ │ │ ├── top_trademark_usage_list.html │ │ │ ├── top_url_usage_list.html │ │ │ ├── trademark_usage_list.html │ │ │ └── url_usage_list.html │ │ ├── filebrowser/ │ │ │ ├── base.html │ │ │ ├── createdir.html │ │ │ ├── delete_confirm.html │ │ │ ├── detail.html │ │ │ ├── include/ │ │ │ │ ├── breadcrumbs.html │ │ │ │ └── tableheader.html │ │ │ ├── index.html │ │ │ └── upload.html │ │ ├── home.html │ │ ├── layout/ │ │ │ ├── breadcrumbs.html │ │ │ ├── header.html │ │ │ └── left_sidebar.html │ │ ├── pdf_export.html │ │ ├── project/ │ │ │ ├── dashboard.html │ │ │ ├── project_action_list.html │ │ │ ├── project_list.html │ │ │ └── task_queue_list.html │ │ ├── registration/ │ │ │ ├── password_reset_email.html │ │ │ └── password_reset_subject.txt │ │ ├── social_app/ │ │ │ └── index.html │ │ ├── socialaccount/ │ │ │ └── authentication_error.html │ │ ├── swagger_ui/ │ │ │ └── base.html │ │ └── users/ │ │ ├── user_detail.html │ │ ├── user_form.html │ │ ├── user_list.html │ │ └── user_object_permissions.html │ ├── tests/ │ │ ├── __init__.py │ │ ├── django_db_mock.py │ │ ├── django_test_case.py │ │ ├── nodb_runner.py │ │ ├── resources/ │ │ │ └── documents/ │ │ │ ├── ocr/ │ │ │ │ └── wordx/ │ │ │ │ ├── doc_table_01.docx │ │ │ │ ├── doc_table_02.docx │ │ │ │ ├── hyperlink.docx │ │ │ │ ├── lists.docx │ │ │ │ ├── numbered_headings.docx │ │ │ │ ├── tables_only.docx │ │ │ │ ├── template_01.docx │ │ │ │ ├── template_02.docx │ │ │ │ └── text_headings.docx │ │ │ ├── parsing/ │ │ │ │ ├── heading_doc_paragraphs.csv │ │ │ │ ├── heading_doc_sections.txt │ │ │ │ ├── heading_doc_sentences.txt │ │ │ │ ├── heading_document.txt │ │ │ │ ├── parsed_mixed_pdf.xhtml │ │ │ │ ├── pdf_malformat_parsed_default.txt │ │ │ │ ├── pdf_malformat_parsed_stripper.txt │ │ │ │ ├── text_abusing_headers.txt │ │ │ │ ├── word_table.docx │ │ │ │ ├── xhtml_ocr_emptyimages.xhtml │ │ │ │ ├── xhtml_ocr_mixed.xhtml │ │ │ │ ├── xhtml_ocr_mixed_long.xhtml │ │ │ │ ├── xhtml_ocr_mixed_short.xhtml │ │ │ │ └── xhtml_pdf.xhtml │ │ │ ├── pdf_coordinates/ │ │ │ │ ├── page_boxes.json │ │ │ │ ├── page_fragment.txt │ │ │ │ ├── rendered/ │ │ │ │ │ └── empty │ │ │ │ ├── three_pages_boxes.json │ │ │ │ ├── three_pages_pages.json │ │ │ │ └── three_pages_text.txt │ │ │ └── scheme_migrations/ │ │ │ ├── doc_type_v_16.json │ │ │ └── doc_type_v_17.json │ │ └── testutils.py │ ├── urls.py │ └── util/ │ ├── create_release_branch.sh │ ├── setenv.sh │ └── unify_py_file_structure.py ├── docker/ │ ├── .gitignore │ ├── README.md │ ├── build/ │ │ ├── .gitignore │ │ ├── build_setenv.sh │ │ ├── contraxsuite-app/ │ │ │ ├── .gitignore │ │ │ ├── Dockerfile.template │ │ │ ├── check_celery.sh │ │ │ ├── dump.sh │ │ │ ├── install_ssl_certs_to_python.sh │ │ │ ├── prepare-image-app.sh │ │ │ ├── start.template.sh │ │ │ └── webdav_upload.sh │ │ └── prepare-docker-images.sh │ ├── deploy/ │ │ ├── .gitignore │ │ ├── config-templates/ │ │ │ ├── backup-cron.conf │ │ │ ├── db-backup.sh.template │ │ │ ├── elastalert-config.yaml.template │ │ │ ├── elastalert-examples/ │ │ │ │ ├── elastalert-bad-gateway-error.yaml │ │ │ │ ├── elastalert-disk-usage.yaml │ │ │ │ ├── elastalert-down-docker-services.yaml │ │ │ │ └── elastalert-task-failed.yaml │ │ │ ├── elastalert-server-config.json.template │ │ │ ├── elastalert-smtp-auth.yaml │ │ │ ├── elasticsearch.yml.template │ │ │ ├── filebeat-backend-dev.template.yml │ │ │ ├── filebeat.template.yml │ │ │ ├── jupyter_notebook_config.py.template │ │ │ ├── kibana.yml.template │ │ │ ├── local_settings_celery.py.template │ │ │ ├── local_settings_websrv.py.template │ │ │ ├── metricbeat.yml.template │ │ │ ├── nginx/ │ │ │ │ ├── cors_disable │ │ │ │ ├── cors_enable │ │ │ │ ├── mime.types │ │ │ │ └── uwsgi_params │ │ │ ├── nginx-customer.conf.template │ │ │ ├── nginx-external-routes.conf.template │ │ │ ├── nginx-frontend-routes.conf.template │ │ │ ├── nginx-http.conf.template │ │ │ ├── nginx-https.conf.template │ │ │ ├── nginx-internal.conf.template │ │ │ ├── nginx-powa.conf.template │ │ │ ├── nginx.conf.template │ │ │ ├── pg_hba.conf │ │ │ ├── pgbouncer.celery.template.ini │ │ │ ├── pgbouncer.userlist.template.txt │ │ │ ├── pgbouncer.websrv.template.ini │ │ │ ├── postgres_init.sql.template │ │ │ ├── postgresql.template.conf │ │ │ ├── powa-web.conf.template │ │ │ ├── rabbitmq.template.conf │ │ │ └── uwsgi.ini.template │ │ ├── dependencies/ │ │ │ └── README.md │ │ ├── deploy-contraxsuite-to-swarm-cluster.sh │ │ ├── docker-compose-templates/ │ │ │ ├── docker-compose-backend-develop-mini.yml │ │ │ ├── docker-compose-backend-develop.yml │ │ │ ├── docker-compose-single-host-db-open.yml │ │ │ ├── docker-compose-single-host.yml │ │ │ └── docker-compose-single-master-many-workers.yml │ │ ├── k8s/ │ │ │ ├── .gitignore │ │ │ ├── aks/ │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── aks_setenv.sh │ │ │ │ └── scripts/ │ │ │ │ ├── .gitignore │ │ │ │ ├── az_01_login_use_device_code.sh │ │ │ │ ├── az_02_get_k8s_versions.sh │ │ │ │ ├── az_03_create_cluster.sh │ │ │ │ ├── az_04_connect_kubectl_to_cluster.sh │ │ │ │ ├── ceph_add_nodepool.sh │ │ │ │ ├── ceph_cephblockpool_cs.yaml │ │ │ │ ├── ceph_cluster_cs.yaml │ │ │ │ ├── ceph_operator_cs.yaml │ │ │ │ ├── ceph_remove_nodepool.sh │ │ │ │ ├── ceph_rook_common.yaml │ │ │ │ ├── ceph_rook_install.sh │ │ │ │ ├── ceph_storageclass_cs.yaml │ │ │ │ ├── certmanager_install.sh │ │ │ │ ├── dockerhub_01_authenticate.sh │ │ │ │ ├── helm_01_install.sh │ │ │ │ ├── helm_02_init_with_service_acc_run_once.sh │ │ │ │ ├── kubeapps_01_install.sh │ │ │ │ ├── kubeapps_02_open_dashboard.sh │ │ │ │ ├── kubeapps_03_retrieve_token.sh │ │ │ │ ├── kubectl_create_dashboard_rolebinding.sh │ │ │ │ ├── kubectl_get_nodes.sh │ │ │ │ ├── prometheus_grafana_del_dns_records.sh │ │ │ │ ├── prometheus_grafana_get_ip.sh │ │ │ │ ├── prometheus_grafana_install.sh │ │ │ │ └── prometheuscert.template.yml │ │ │ ├── azure-file-sc.yaml │ │ │ ├── contraxsuite/ │ │ │ │ ├── .helmignore │ │ │ │ ├── Chart.template.yaml │ │ │ │ ├── templates/ │ │ │ │ │ ├── _helpers.tpl │ │ │ │ │ ├── configmap.yaml │ │ │ │ │ ├── daemonset.yaml │ │ │ │ │ ├── deployment.yaml │ │ │ │ │ ├── horizontalpodautoscaler.yaml │ │ │ │ │ ├── ingress.yaml │ │ │ │ │ ├── issuer.yaml │ │ │ │ │ ├── job.yaml │ │ │ │ │ ├── keda.yaml │ │ │ │ │ ├── pdb.yaml │ │ │ │ │ ├── pvcs.yaml │ │ │ │ │ ├── secret.yaml │ │ │ │ │ ├── service.yaml │ │ │ │ │ ├── statefulset.yaml │ │ │ │ │ └── tests/ │ │ │ │ │ └── storage.yaml │ │ │ │ └── values.template.yaml │ │ │ ├── helm_setenv.sh │ │ │ ├── prepare_helm_configs.sh │ │ │ ├── pvc.yaml │ │ │ └── values.yaml │ │ ├── nginx-error-pages/ │ │ │ ├── 404.html │ │ │ └── 502.html │ │ ├── prepare_configs.sh │ │ ├── registry/ │ │ │ ├── deploy-registry.sh │ │ │ ├── docker-compose.yml │ │ │ ├── registry_hard_reset.sh │ │ │ ├── registry_list_contents.sh │ │ │ └── registry_rm_prev_versions.sh │ │ └── undeploy-contraxsuite-from-swarm-cluster.sh │ ├── init_local_env.sh │ ├── link_media_to_docker_volume.sh │ ├── setenv.sh │ ├── setup_local_contraxsuite_ubuntu_18_04.sh │ ├── util/ │ │ ├── allow-insecure-registry.sh │ │ ├── change_apt_sources_to_https.sh │ │ ├── check_rabbit_queues.sh │ │ ├── collect_docker_stats.sh │ │ ├── commons.sh │ │ ├── configure_host.sh │ │ ├── configure_proxy.sh │ │ ├── docker-prune-worker.sh │ │ ├── docker-prune-workers.sh │ │ ├── docker_volumes_full_backup.sh │ │ ├── es_recovery.sh │ │ ├── fix_nginx_logs.sh │ │ ├── gen_self_signed_nginx_certs.sh │ │ ├── gen_worker_init_script.sh │ │ ├── install-docker-shared-user.sh │ │ ├── install-docker-swarm.sh │ │ ├── install-docker-ubuntu-20-04.sh │ │ ├── install-docker-ubuntu.sh │ │ ├── install-swarmpit.sh │ │ ├── install_powa.sh │ │ ├── load_dict_data.sh │ │ ├── monitor_disk_usage.sh │ │ ├── monitor_docker_services.sh │ │ ├── postgres_external_backup.sh │ │ ├── postgres_s3_backup.sh │ │ ├── reboot-worker.sh │ │ ├── reboot-workers.sh │ │ ├── remove_down_nodes.sh │ │ ├── set-docker-target-dir.sh │ │ ├── thread_dump_worker.sh │ │ ├── thread_dump_workers.sh │ │ ├── total_cleanup.sh │ │ ├── update-nginx-certificates-no-input.sh │ │ ├── update-nginx-certificates.sh │ │ ├── worker-init-script.sh.template │ │ └── write-crontab-cert-script.sh │ └── volumes.sh ├── documentation/ │ └── docs/ │ ├── Makefile │ ├── README.md │ ├── contraxsuite_documentation_center/ │ │ ├── assets/ │ │ │ └── css/ │ │ │ └── contraxsuite_documentation_center.css │ │ └── index.html │ ├── docstring_coverage_skipmagic.txt │ ├── make.bat │ ├── make.py │ ├── requirements.txt │ ├── source/ │ │ ├── _ext/ │ │ │ └── formfield_extension.py │ │ ├── _static/ │ │ │ └── css/ │ │ │ └── custom_styles.css │ │ ├── _templates/ │ │ │ └── layout.html │ │ ├── api/ │ │ │ └── contraxsuite_orm/ │ │ │ ├── analyze.rst │ │ │ ├── common.rst │ │ │ ├── datascience.rst │ │ │ ├── deployment.rst │ │ │ ├── document.rst │ │ │ ├── extract.rst │ │ │ ├── highq_integration.rst │ │ │ ├── imanage_integration.rst │ │ │ ├── materialized_views.rst │ │ │ ├── mlflow.rst │ │ │ ├── notifications.rst │ │ │ ├── project.rst │ │ │ ├── rawdb.rst │ │ │ ├── similarity.rst │ │ │ ├── task.rst │ │ │ └── users.rst │ │ ├── conf.py │ │ ├── configuration/ │ │ │ ├── core_concepts.md │ │ │ ├── install.rst │ │ │ └── setup.rst │ │ ├── developer_documentation_schema.yaml │ │ ├── index.rst │ │ ├── introduction/ │ │ │ ├── intro_legal_analytics.rst │ │ │ ├── overview.md │ │ │ └── pricing_support.md │ │ └── user_guides/ │ │ ├── doc_exp/ │ │ │ ├── admin.md │ │ │ ├── custom_project_terms.md │ │ │ ├── doc_type_migration.md │ │ │ ├── documents.md │ │ │ ├── intro.md │ │ │ ├── locators.md │ │ │ ├── pass_notif.md │ │ │ └── text_units.md │ │ ├── power_users/ │ │ │ ├── create_document_field.md │ │ │ ├── create_document_type.md │ │ │ ├── create_field_detectors.md │ │ │ ├── import_jupyter_notebooks.md │ │ │ ├── integration_highq.rst │ │ │ ├── user_roles.md │ │ │ └── writing_formulas.md │ │ └── reviewers/ │ │ ├── batch_analysis.md │ │ ├── contract_analysis.md │ │ ├── contract_clause_analysis.md │ │ ├── create_manage.md │ │ └── stats.md │ └── utils/ │ ├── __init__.py │ ├── autodoc_rst_maker.py │ └── strip_license.py ├── notebook-examples/ │ ├── clustering.ipynb │ ├── custom_ocr_workflow.ipynb │ ├── document_model_tutorial.ipynb │ ├── example_image.tif │ ├── example_image_messy.tif │ ├── topic_modeling_lda.ipynb │ └── topic_modeling_word2vec.ipynb ├── scripts/ │ ├── init_empty_dev_db.sh │ ├── init_lexnlp_private_models.sh │ ├── run_tests_nodb.sh │ ├── run_uwsgi.sh │ └── sub_project_utils.sh ├── sdk/ │ ├── README │ ├── csharp/ │ │ └── sdk/ │ │ ├── .gitignore │ │ ├── .openapi-generator/ │ │ │ ├── FILES │ │ │ └── VERSION │ │ ├── .openapi-generator-ignore │ │ ├── .travis.yml │ │ ├── Org.OpenAPITools.sln │ │ ├── README.md │ │ ├── build.bat │ │ ├── build.sh │ │ ├── docs/ │ │ │ ├── AccessTokenSchema.md │ │ │ ├── Action.md │ │ │ ├── AmountUsage.md │ │ │ ├── AnalyzeApi.md │ │ │ ├── Annotation.md │ │ │ ├── AnnotationBatchRequest.md │ │ │ ├── AnnotationBatchResponse.md │ │ │ ├── AnnotationInDocument.md │ │ │ ├── AnnotationSuggestRequest.md │ │ │ ├── AnnotationUpdateResponse.md │ │ │ ├── ApiApi.md │ │ │ ├── AppVar.md │ │ │ ├── AssignProjectAnnotationsRequest.md │ │ │ ├── AssignProjectDocumentRequest.md │ │ │ ├── AssignProjectDocumentsRequest.md │ │ │ ├── CheckDocumentFieldFormulaRequest.md │ │ │ ├── CheckNewDocumentFieldFormulaRequest.md │ │ │ ├── CitationUsage.md │ │ │ ├── CleanupProjectRequest.md │ │ │ ├── CloneDocumentFieldRequest.md │ │ │ ├── CloneDocumentTypeRequest.md │ │ │ ├── ClusterProjectRequest.md │ │ │ ├── ClusterProjectResponse.md │ │ │ ├── Code.md │ │ │ ├── CommonApi.md │ │ │ ├── CopyrightUsage.md │ │ │ ├── CountSuccessResponse.md │ │ │ ├── CourtUsage.md │ │ │ ├── CurrencyUsage.md │ │ │ ├── CustomPasswordChange.md │ │ │ ├── CustomPasswordReset.md │ │ │ ├── CustomPasswordResetConfirm.md │ │ │ ├── DateDurationUsage.md │ │ │ ├── DateUsage.md │ │ │ ├── DateUsageCalendar.md │ │ │ ├── DateUsageTimeline.md │ │ │ ├── DefinitionUsage.md │ │ │ ├── DetectProjectFieldValuesRequest.md │ │ │ ├── DistanceUsage.md │ │ │ ├── DocumentApi.md │ │ │ ├── DocumentCluster.md │ │ │ ├── DocumentClusterDocumentData.md │ │ │ ├── DocumentClusterDocumentDataInner.md │ │ │ ├── DocumentClusterUpdate.md │ │ │ ├── DocumentDefinitions.md │ │ │ ├── DocumentDetail.md │ │ │ ├── DocumentDetailAssigneeData.md │ │ │ ├── DocumentDetailAvailableAssigneesData.md │ │ │ ├── DocumentDetailAvailableAssigneesDataInner.md │ │ │ ├── DocumentDetailNotes.md │ │ │ ├── DocumentDetailStatusData.md │ │ │ ├── DocumentDetailUser.md │ │ │ ├── DocumentDocumentsDownloadZipGET404Response.md │ │ │ ├── DocumentDownloadZipResponse.md │ │ │ ├── DocumentFieldAnnotation.md │ │ │ ├── DocumentFieldCategoryCreate.md │ │ │ ├── DocumentFieldCategoryList.md │ │ │ ├── DocumentFieldCategoryListFields.md │ │ │ ├── DocumentFieldCategoryListFieldsInner.md │ │ │ ├── DocumentFieldCreate.md │ │ │ ├── DocumentFieldDetail.md │ │ │ ├── DocumentFieldDetectorCreate.md │ │ │ ├── DocumentFieldDetectorDetail.md │ │ │ ├── DocumentFieldList.md │ │ │ ├── DocumentFieldListCategory.md │ │ │ ├── DocumentFieldListFamily.md │ │ │ ├── DocumentFieldStatsResponse.md │ │ │ ├── DocumentFieldValue.md │ │ │ ├── DocumentNoteCreate.md │ │ │ ├── DocumentNoteDetail.md │ │ │ ├── DocumentNoteDetailUser.md │ │ │ ├── DocumentNoteUpdate.md │ │ │ ├── DocumentPDFRepr.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.md │ │ │ ├── DocumentSimilarity.md │ │ │ ├── DocumentSimilarityByFeaturesForm.md │ │ │ ├── DocumentSimilarityRun.md │ │ │ ├── DocumentTypeCreate.md │ │ │ ├── DocumentTypeDetail.md │ │ │ ├── DocumentTypeDetailCategories.md │ │ │ ├── DocumentTypeDetailCategoriesInner.md │ │ │ ├── DocumentTypeDetailFieldsData.md │ │ │ ├── DocumentTypeDetailFieldsDataInner.md │ │ │ ├── DocumentTypeForStats.md │ │ │ ├── DocumentTypeImportRequest.md │ │ │ ├── DocumentTypeImportResponse.md │ │ │ ├── DocumentTypeStats.md │ │ │ ├── DocumentTypeStatsData.md │ │ │ ├── DocumentsForUser.md │ │ │ ├── DocumentsForUserResponse.md │ │ │ ├── DocumentsForUserResponseData.md │ │ │ ├── DocumentsForUserResponseDataInner.md │ │ │ ├── DumpApi.md │ │ │ ├── DumpDocumentConfigGET200Response.md │ │ │ ├── DumpFixture.md │ │ │ ├── DumpPUTErrorResponse.md │ │ │ ├── ExtractApi.md │ │ │ ├── FieldAnnotationStatus.md │ │ │ ├── GeoAliasUsage.md │ │ │ ├── GeoEntityList.md │ │ │ ├── GeoEntityUpdate.md │ │ │ ├── GeoEntityUsage.md │ │ │ ├── InlineResponse400.md │ │ │ ├── InlineResponse404.md │ │ │ ├── InlineResponse4041.md │ │ │ ├── LoadFixture.md │ │ │ ├── LocateItemsRequest.md │ │ │ ├── LoggingAPIViewRequest.md │ │ │ ├── LoggingApi.md │ │ │ ├── Login.md │ │ │ ├── LoginResponse.md │ │ │ ├── MLModel.md │ │ │ ├── MarkForSeenWebNotificationRequest.md │ │ │ ├── MarkForSeenWebNotificationResponse.md │ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.md │ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.md │ │ │ ├── MarkUnmarkForDeleteProjectsReponse.md │ │ │ ├── MarkUnmarkForDeleteProjectsRequest.md │ │ │ ├── MediaDataApi.md │ │ │ ├── MenuGroup.md │ │ │ ├── MenuItem.md │ │ │ ├── NotificationsApi.md │ │ │ ├── Party.md │ │ │ ├── PartySimilarity.md │ │ │ ├── PartySimilarityForm.md │ │ │ ├── PartyUsage.md │ │ │ ├── PercentUsage.md │ │ │ ├── ProjectActiveTasks.md │ │ │ ├── ProjectActiveTasksTasks.md │ │ │ ├── ProjectAnnotationsAssigneesResponse.md │ │ │ ├── ProjectApi.md │ │ │ ├── ProjectAppVar.md │ │ │ ├── ProjectClustering.md │ │ │ ├── ProjectClusteringDocumentClusters.md │ │ │ ├── ProjectClusteringDocumentClustersInner.md │ │ │ ├── ProjectClusteringStatusResponse.md │ │ │ ├── ProjectCreate.md │ │ │ ├── ProjectDetail.md │ │ │ ├── ProjectDetailOwnersData.md │ │ │ ├── ProjectDetailOwnersDataInner.md │ │ │ ├── ProjectDocumentSimilarity.md │ │ │ ├── ProjectDocumentSimilarityResponse.md │ │ │ ├── ProjectDocumentSimilarityResponseData.md │ │ │ ├── ProjectDocumentSimilarityResponseDataInner.md │ │ │ ├── ProjectDocumentsAssigneesResponse.md │ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.md │ │ │ ├── ProjectList.md │ │ │ ├── ProjectListStatusData.md │ │ │ ├── ProjectListTypeData.md │ │ │ ├── ProjectProgressResponse.md │ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.md │ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.md │ │ │ ├── ProjectSearchSimilarDocumentsRequest.md │ │ │ ├── ProjectSearchSimilarTextUnitsRequest.md │ │ │ ├── ProjectStats.md │ │ │ ├── ProjectTasks.md │ │ │ ├── ProjectTextUnitSimilarity.md │ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.md │ │ │ ├── ProjectUpdate.md │ │ │ ├── ProjectUploadSessionFilesResponse.md │ │ │ ├── ProjectUploadSessionPOSTResponse.md │ │ │ ├── ProjectUploadSessionProgressResponse.md │ │ │ ├── RatioUsage.md │ │ │ ├── RawdbApi.md │ │ │ ├── RawdbDocumentsPOSTRequest.md │ │ │ ├── Register.md │ │ │ ├── RegulationUsage.md │ │ │ ├── RestAuthApi.md │ │ │ ├── RestAuthCommonResponse.md │ │ │ ├── ReviewStatus.md │ │ │ ├── ReviewStatusDetail.md │ │ │ ├── ReviewStatusDetailGroupData.md │ │ │ ├── ReviewStatusGroup.md │ │ │ ├── SelectProjectsRequest.md │ │ │ ├── SelectProjectsResponse.md │ │ │ ├── SendClusterToProjectRequest.md │ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.md │ │ │ ├── SetProjectAnnotationsStatusRequest.md │ │ │ ├── SetProjectDocumentsStatusRequest.md │ │ │ ├── SimilarProjectTextUnitsRequest.md │ │ │ ├── SimilarityApi.md │ │ │ ├── SimilarityForm.md │ │ │ ├── SimilarityPOSTObjectResponse.md │ │ │ ├── SimilarityRun.md │ │ │ ├── SocialAccountsResponse.md │ │ │ ├── SocialAccountsResponseSocialAccounts.md │ │ │ ├── SocialClientList.md │ │ │ ├── SocialClientListUrls.md │ │ │ ├── SocialLogin.md │ │ │ ├── Task.md │ │ │ ├── TaskApi.md │ │ │ ├── TaskIdResponse.md │ │ │ ├── TaskLogResponse.md │ │ │ ├── TaskLogResponseRecords.md │ │ │ ├── TaskQueue.md │ │ │ ├── TaskQueueDocumentsData.md │ │ │ ├── TaskQueueDocumentsDataInner.md │ │ │ ├── TaskQueueReviewersData.md │ │ │ ├── TaskQueueReviewersDataInner.md │ │ │ ├── TermTag.md │ │ │ ├── TermUsage.md │ │ │ ├── TextUnitClassification.md │ │ │ ├── TextUnitClassificationCreate.md │ │ │ ├── TextUnitClassifier.md │ │ │ ├── TextUnitClassifierSuggestion.md │ │ │ ├── TextUnitCluster.md │ │ │ ├── TextUnitDjangoQL.md │ │ │ ├── TextUnitSimilarity.md │ │ │ ├── TextUnitSimilarityByFeaturesForm.md │ │ │ ├── TrademarkUsage.md │ │ │ ├── Transformer.md │ │ │ ├── TusApi.md │ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.md │ │ │ ├── Typeahead.md │ │ │ ├── UpdateProjectDocumentsFieldsRequest.md │ │ │ ├── UpdateProjectDocumentsFieldsResponse.md │ │ │ ├── Upload.md │ │ │ ├── UploadSessionBatchUploadRequest.md │ │ │ ├── UploadSessionCreate.md │ │ │ ├── UploadSessionDeleteFileRequest.md │ │ │ ├── UploadSessionDetail.md │ │ │ ├── UploadSessionUpdate.md │ │ │ ├── UrlUsage.md │ │ │ ├── User.md │ │ │ ├── UserProfile.md │ │ │ ├── UserStats.md │ │ │ ├── UsersApi.md │ │ │ ├── V1Api.md │ │ │ ├── VarApi.md │ │ │ ├── VerifyAuthTokenRequest.md │ │ │ ├── VerifyAuthTokenResponse.md │ │ │ ├── VerifyEmail.md │ │ │ ├── WebNotificationDetail.md │ │ │ └── WebNotificationDetailNotification.md │ │ ├── git_push.sh │ │ ├── mono_nunit_test.sh │ │ └── src/ │ │ ├── Org.OpenAPITools/ │ │ │ ├── Api/ │ │ │ │ ├── AnalyzeApi.cs │ │ │ │ ├── ApiApi.cs │ │ │ │ ├── CommonApi.cs │ │ │ │ ├── DocumentApi.cs │ │ │ │ ├── DumpApi.cs │ │ │ │ ├── ExtractApi.cs │ │ │ │ ├── LoggingApi.cs │ │ │ │ ├── MediaDataApi.cs │ │ │ │ ├── NotificationsApi.cs │ │ │ │ ├── ProjectApi.cs │ │ │ │ ├── RawdbApi.cs │ │ │ │ ├── RestAuthApi.cs │ │ │ │ ├── SimilarityApi.cs │ │ │ │ ├── TaskApi.cs │ │ │ │ ├── TusApi.cs │ │ │ │ ├── UsersApi.cs │ │ │ │ ├── V1Api.cs │ │ │ │ └── VarApi.cs │ │ │ ├── Client/ │ │ │ │ ├── ApiClient.cs │ │ │ │ ├── ApiException.cs │ │ │ │ ├── ApiResponse.cs │ │ │ │ ├── Configuration.cs │ │ │ │ ├── ExceptionFactory.cs │ │ │ │ ├── GlobalConfiguration.cs │ │ │ │ ├── IApiAccessor.cs │ │ │ │ ├── IReadableConfiguration.cs │ │ │ │ └── OpenAPIDateConverter.cs │ │ │ ├── Model/ │ │ │ │ ├── AccessTokenSchema.cs │ │ │ │ ├── Action.cs │ │ │ │ ├── AmountUsage.cs │ │ │ │ ├── Annotation.cs │ │ │ │ ├── AnnotationBatchRequest.cs │ │ │ │ ├── AnnotationBatchResponse.cs │ │ │ │ ├── AnnotationInDocument.cs │ │ │ │ ├── AnnotationSuggestRequest.cs │ │ │ │ ├── AnnotationUpdateResponse.cs │ │ │ │ ├── AppVar.cs │ │ │ │ ├── AssignProjectAnnotationsRequest.cs │ │ │ │ ├── AssignProjectDocumentRequest.cs │ │ │ │ ├── AssignProjectDocumentsRequest.cs │ │ │ │ ├── CheckDocumentFieldFormulaRequest.cs │ │ │ │ ├── CheckNewDocumentFieldFormulaRequest.cs │ │ │ │ ├── CitationUsage.cs │ │ │ │ ├── CleanupProjectRequest.cs │ │ │ │ ├── CloneDocumentFieldRequest.cs │ │ │ │ ├── CloneDocumentTypeRequest.cs │ │ │ │ ├── ClusterProjectRequest.cs │ │ │ │ ├── ClusterProjectResponse.cs │ │ │ │ ├── Code.cs │ │ │ │ ├── CopyrightUsage.cs │ │ │ │ ├── CountSuccessResponse.cs │ │ │ │ ├── CourtUsage.cs │ │ │ │ ├── CurrencyUsage.cs │ │ │ │ ├── CustomPasswordChange.cs │ │ │ │ ├── CustomPasswordReset.cs │ │ │ │ ├── CustomPasswordResetConfirm.cs │ │ │ │ ├── DateDurationUsage.cs │ │ │ │ ├── DateUsage.cs │ │ │ │ ├── DateUsageCalendar.cs │ │ │ │ ├── DateUsageTimeline.cs │ │ │ │ ├── DefinitionUsage.cs │ │ │ │ ├── DetectProjectFieldValuesRequest.cs │ │ │ │ ├── DistanceUsage.cs │ │ │ │ ├── DocumentCluster.cs │ │ │ │ ├── DocumentClusterDocumentData.cs │ │ │ │ ├── DocumentClusterDocumentDataInner.cs │ │ │ │ ├── DocumentClusterUpdate.cs │ │ │ │ ├── DocumentDefinitions.cs │ │ │ │ ├── DocumentDetail.cs │ │ │ │ ├── DocumentDetailAssigneeData.cs │ │ │ │ ├── DocumentDetailAvailableAssigneesData.cs │ │ │ │ ├── DocumentDetailAvailableAssigneesDataInner.cs │ │ │ │ ├── DocumentDetailNotes.cs │ │ │ │ ├── DocumentDetailStatusData.cs │ │ │ │ ├── DocumentDetailUser.cs │ │ │ │ ├── DocumentDocumentsDownloadZipGET404Response.cs │ │ │ │ ├── DocumentDownloadZipResponse.cs │ │ │ │ ├── DocumentFieldAnnotation.cs │ │ │ │ ├── DocumentFieldCategoryCreate.cs │ │ │ │ ├── DocumentFieldCategoryList.cs │ │ │ │ ├── DocumentFieldCategoryListFields.cs │ │ │ │ ├── DocumentFieldCategoryListFieldsInner.cs │ │ │ │ ├── DocumentFieldCreate.cs │ │ │ │ ├── DocumentFieldDetail.cs │ │ │ │ ├── DocumentFieldDetectorCreate.cs │ │ │ │ ├── DocumentFieldDetectorDetail.cs │ │ │ │ ├── DocumentFieldList.cs │ │ │ │ ├── DocumentFieldListCategory.cs │ │ │ │ ├── DocumentFieldListFamily.cs │ │ │ │ ├── DocumentFieldStatsResponse.cs │ │ │ │ ├── DocumentFieldValue.cs │ │ │ │ ├── DocumentNoteCreate.cs │ │ │ │ ├── DocumentNoteDetail.cs │ │ │ │ ├── DocumentNoteDetailUser.cs │ │ │ │ ├── DocumentNoteUpdate.cs │ │ │ │ ├── DocumentPDFRepr.cs │ │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.cs │ │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.cs │ │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.cs │ │ │ │ ├── DocumentSimilarity.cs │ │ │ │ ├── DocumentSimilarityByFeaturesForm.cs │ │ │ │ ├── DocumentSimilarityRun.cs │ │ │ │ ├── DocumentTypeCreate.cs │ │ │ │ ├── DocumentTypeDetail.cs │ │ │ │ ├── DocumentTypeDetailCategories.cs │ │ │ │ ├── DocumentTypeDetailCategoriesInner.cs │ │ │ │ ├── DocumentTypeDetailFieldsData.cs │ │ │ │ ├── DocumentTypeDetailFieldsDataInner.cs │ │ │ │ ├── DocumentTypeForStats.cs │ │ │ │ ├── DocumentTypeImportRequest.cs │ │ │ │ ├── DocumentTypeImportResponse.cs │ │ │ │ ├── DocumentTypeStats.cs │ │ │ │ ├── DocumentTypeStatsData.cs │ │ │ │ ├── DocumentsForUser.cs │ │ │ │ ├── DocumentsForUserResponse.cs │ │ │ │ ├── DocumentsForUserResponseData.cs │ │ │ │ ├── DocumentsForUserResponseDataInner.cs │ │ │ │ ├── DumpDocumentConfigGET200Response.cs │ │ │ │ ├── DumpFixture.cs │ │ │ │ ├── DumpPUTErrorResponse.cs │ │ │ │ ├── FieldAnnotationStatus.cs │ │ │ │ ├── GeoAliasUsage.cs │ │ │ │ ├── GeoEntityList.cs │ │ │ │ ├── GeoEntityUpdate.cs │ │ │ │ ├── GeoEntityUsage.cs │ │ │ │ ├── InlineResponse400.cs │ │ │ │ ├── InlineResponse404.cs │ │ │ │ ├── InlineResponse4041.cs │ │ │ │ ├── LoadFixture.cs │ │ │ │ ├── LocateItemsRequest.cs │ │ │ │ ├── LoggingAPIViewRequest.cs │ │ │ │ ├── Login.cs │ │ │ │ ├── LoginResponse.cs │ │ │ │ ├── MLModel.cs │ │ │ │ ├── MarkForSeenWebNotificationRequest.cs │ │ │ │ ├── MarkForSeenWebNotificationResponse.cs │ │ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.cs │ │ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.cs │ │ │ │ ├── MarkUnmarkForDeleteProjectsReponse.cs │ │ │ │ ├── MarkUnmarkForDeleteProjectsRequest.cs │ │ │ │ ├── MenuGroup.cs │ │ │ │ ├── MenuItem.cs │ │ │ │ ├── Party.cs │ │ │ │ ├── PartySimilarity.cs │ │ │ │ ├── PartySimilarityForm.cs │ │ │ │ ├── PartyUsage.cs │ │ │ │ ├── PercentUsage.cs │ │ │ │ ├── ProjectActiveTasks.cs │ │ │ │ ├── ProjectActiveTasksTasks.cs │ │ │ │ ├── ProjectAnnotationsAssigneesResponse.cs │ │ │ │ ├── ProjectAppVar.cs │ │ │ │ ├── ProjectClustering.cs │ │ │ │ ├── ProjectClusteringDocumentClusters.cs │ │ │ │ ├── ProjectClusteringDocumentClustersInner.cs │ │ │ │ ├── ProjectClusteringStatusResponse.cs │ │ │ │ ├── ProjectCreate.cs │ │ │ │ ├── ProjectDetail.cs │ │ │ │ ├── ProjectDetailOwnersData.cs │ │ │ │ ├── ProjectDetailOwnersDataInner.cs │ │ │ │ ├── ProjectDocumentSimilarity.cs │ │ │ │ ├── ProjectDocumentSimilarityResponse.cs │ │ │ │ ├── ProjectDocumentSimilarityResponseData.cs │ │ │ │ ├── ProjectDocumentSimilarityResponseDataInner.cs │ │ │ │ ├── ProjectDocumentsAssigneesResponse.cs │ │ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.cs │ │ │ │ ├── ProjectList.cs │ │ │ │ ├── ProjectListStatusData.cs │ │ │ │ ├── ProjectListTypeData.cs │ │ │ │ ├── ProjectProgressResponse.cs │ │ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.cs │ │ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.cs │ │ │ │ ├── ProjectSearchSimilarDocumentsRequest.cs │ │ │ │ ├── ProjectSearchSimilarTextUnitsRequest.cs │ │ │ │ ├── ProjectStats.cs │ │ │ │ ├── ProjectTasks.cs │ │ │ │ ├── ProjectTextUnitSimilarity.cs │ │ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.cs │ │ │ │ ├── ProjectUpdate.cs │ │ │ │ ├── ProjectUploadSessionFilesResponse.cs │ │ │ │ ├── ProjectUploadSessionPOSTResponse.cs │ │ │ │ ├── ProjectUploadSessionProgressResponse.cs │ │ │ │ ├── RatioUsage.cs │ │ │ │ ├── RawdbDocumentsPOSTRequest.cs │ │ │ │ ├── Register.cs │ │ │ │ ├── RegulationUsage.cs │ │ │ │ ├── RestAuthCommonResponse.cs │ │ │ │ ├── ReviewStatus.cs │ │ │ │ ├── ReviewStatusDetail.cs │ │ │ │ ├── ReviewStatusDetailGroupData.cs │ │ │ │ ├── ReviewStatusGroup.cs │ │ │ │ ├── SelectProjectsRequest.cs │ │ │ │ ├── SelectProjectsResponse.cs │ │ │ │ ├── SendClusterToProjectRequest.cs │ │ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.cs │ │ │ │ ├── SetProjectAnnotationsStatusRequest.cs │ │ │ │ ├── SetProjectDocumentsStatusRequest.cs │ │ │ │ ├── SimilarProjectTextUnitsRequest.cs │ │ │ │ ├── SimilarityForm.cs │ │ │ │ ├── SimilarityPOSTObjectResponse.cs │ │ │ │ ├── SimilarityRun.cs │ │ │ │ ├── SocialAccountsResponse.cs │ │ │ │ ├── SocialAccountsResponseSocialAccounts.cs │ │ │ │ ├── SocialClientList.cs │ │ │ │ ├── SocialClientListUrls.cs │ │ │ │ ├── SocialLogin.cs │ │ │ │ ├── Task.cs │ │ │ │ ├── TaskIdResponse.cs │ │ │ │ ├── TaskLogResponse.cs │ │ │ │ ├── TaskLogResponseRecords.cs │ │ │ │ ├── TaskQueue.cs │ │ │ │ ├── TaskQueueDocumentsData.cs │ │ │ │ ├── TaskQueueDocumentsDataInner.cs │ │ │ │ ├── TaskQueueReviewersData.cs │ │ │ │ ├── TaskQueueReviewersDataInner.cs │ │ │ │ ├── TermTag.cs │ │ │ │ ├── TermUsage.cs │ │ │ │ ├── TextUnitClassification.cs │ │ │ │ ├── TextUnitClassificationCreate.cs │ │ │ │ ├── TextUnitClassifier.cs │ │ │ │ ├── TextUnitClassifierSuggestion.cs │ │ │ │ ├── TextUnitCluster.cs │ │ │ │ ├── TextUnitDjangoQL.cs │ │ │ │ ├── TextUnitSimilarity.cs │ │ │ │ ├── TextUnitSimilarityByFeaturesForm.cs │ │ │ │ ├── TrademarkUsage.cs │ │ │ │ ├── Transformer.cs │ │ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.cs │ │ │ │ ├── Typeahead.cs │ │ │ │ ├── UpdateProjectDocumentsFieldsRequest.cs │ │ │ │ ├── UpdateProjectDocumentsFieldsResponse.cs │ │ │ │ ├── Upload.cs │ │ │ │ ├── UploadSessionBatchUploadRequest.cs │ │ │ │ ├── UploadSessionCreate.cs │ │ │ │ ├── UploadSessionDeleteFileRequest.cs │ │ │ │ ├── UploadSessionDetail.cs │ │ │ │ ├── UploadSessionUpdate.cs │ │ │ │ ├── UrlUsage.cs │ │ │ │ ├── User.cs │ │ │ │ ├── UserProfile.cs │ │ │ │ ├── UserStats.cs │ │ │ │ ├── VerifyAuthTokenRequest.cs │ │ │ │ ├── VerifyAuthTokenResponse.cs │ │ │ │ ├── VerifyEmail.cs │ │ │ │ ├── WebNotificationDetail.cs │ │ │ │ └── WebNotificationDetailNotification.cs │ │ │ ├── Org.OpenAPITools.csproj │ │ │ ├── Org.OpenAPITools.nuspec │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ └── packages.config │ │ └── Org.OpenAPITools.Test/ │ │ ├── Api/ │ │ │ ├── AnalyzeApiTests.cs │ │ │ ├── ApiApiTests.cs │ │ │ ├── CommonApiTests.cs │ │ │ ├── DocumentApiTests.cs │ │ │ ├── DumpApiTests.cs │ │ │ ├── ExtractApiTests.cs │ │ │ ├── LoggingApiTests.cs │ │ │ ├── MediaDataApiTests.cs │ │ │ ├── NotificationsApiTests.cs │ │ │ ├── ProjectApiTests.cs │ │ │ ├── RawdbApiTests.cs │ │ │ ├── RestAuthApiTests.cs │ │ │ ├── SimilarityApiTests.cs │ │ │ ├── TaskApiTests.cs │ │ │ ├── TusApiTests.cs │ │ │ ├── UsersApiTests.cs │ │ │ ├── V1ApiTests.cs │ │ │ └── VarApiTests.cs │ │ ├── Model/ │ │ │ ├── AccessTokenSchemaTests.cs │ │ │ ├── ActionTests.cs │ │ │ ├── AmountUsageTests.cs │ │ │ ├── AnnotationBatchRequestTests.cs │ │ │ ├── AnnotationBatchResponseTests.cs │ │ │ ├── AnnotationInDocumentTests.cs │ │ │ ├── AnnotationSuggestRequestTests.cs │ │ │ ├── AnnotationTests.cs │ │ │ ├── AnnotationUpdateResponseTests.cs │ │ │ ├── AppVarTests.cs │ │ │ ├── AssignProjectAnnotationsRequestTests.cs │ │ │ ├── AssignProjectDocumentRequestTests.cs │ │ │ ├── AssignProjectDocumentsRequestTests.cs │ │ │ ├── CheckDocumentFieldFormulaRequestTests.cs │ │ │ ├── CheckNewDocumentFieldFormulaRequestTests.cs │ │ │ ├── CitationUsageTests.cs │ │ │ ├── CleanupProjectRequestTests.cs │ │ │ ├── CloneDocumentFieldRequestTests.cs │ │ │ ├── CloneDocumentTypeRequestTests.cs │ │ │ ├── ClusterProjectRequestTests.cs │ │ │ ├── ClusterProjectResponseTests.cs │ │ │ ├── CodeTests.cs │ │ │ ├── CopyrightUsageTests.cs │ │ │ ├── CountSuccessResponseTests.cs │ │ │ ├── CourtUsageTests.cs │ │ │ ├── CurrencyUsageTests.cs │ │ │ ├── CustomPasswordChangeTests.cs │ │ │ ├── CustomPasswordResetConfirmTests.cs │ │ │ ├── CustomPasswordResetTests.cs │ │ │ ├── DateDurationUsageTests.cs │ │ │ ├── DateUsageCalendarTests.cs │ │ │ ├── DateUsageTests.cs │ │ │ ├── DateUsageTimelineTests.cs │ │ │ ├── DefinitionUsageTests.cs │ │ │ ├── DetectProjectFieldValuesRequestTests.cs │ │ │ ├── DistanceUsageTests.cs │ │ │ ├── DocumentClusterDocumentDataInnerTests.cs │ │ │ ├── DocumentClusterDocumentDataTests.cs │ │ │ ├── DocumentClusterTests.cs │ │ │ ├── DocumentClusterUpdateTests.cs │ │ │ ├── DocumentDefinitionsTests.cs │ │ │ ├── DocumentDetailAssigneeDataTests.cs │ │ │ ├── DocumentDetailAvailableAssigneesDataInnerTests.cs │ │ │ ├── DocumentDetailAvailableAssigneesDataTests.cs │ │ │ ├── DocumentDetailNotesTests.cs │ │ │ ├── DocumentDetailStatusDataTests.cs │ │ │ ├── DocumentDetailTests.cs │ │ │ ├── DocumentDetailUserTests.cs │ │ │ ├── DocumentDocumentsDownloadZipGET404ResponseTests.cs │ │ │ ├── DocumentDownloadZipResponseTests.cs │ │ │ ├── DocumentFieldAnnotationTests.cs │ │ │ ├── DocumentFieldCategoryCreateTests.cs │ │ │ ├── DocumentFieldCategoryListFieldsInnerTests.cs │ │ │ ├── DocumentFieldCategoryListFieldsTests.cs │ │ │ ├── DocumentFieldCategoryListTests.cs │ │ │ ├── DocumentFieldCreateTests.cs │ │ │ ├── DocumentFieldDetailTests.cs │ │ │ ├── DocumentFieldDetectorCreateTests.cs │ │ │ ├── DocumentFieldDetectorDetailTests.cs │ │ │ ├── DocumentFieldListCategoryTests.cs │ │ │ ├── DocumentFieldListFamilyTests.cs │ │ │ ├── DocumentFieldListTests.cs │ │ │ ├── DocumentFieldStatsResponseTests.cs │ │ │ ├── DocumentFieldValueTests.cs │ │ │ ├── DocumentNoteCreateTests.cs │ │ │ ├── DocumentNoteDetailTests.cs │ │ │ ├── DocumentNoteDetailUserTests.cs │ │ │ ├── DocumentNoteUpdateTests.cs │ │ │ ├── DocumentPDFReprTests.cs │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInnerTests.cs │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestTests.cs │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponseTests.cs │ │ │ ├── DocumentSimilarityByFeaturesFormTests.cs │ │ │ ├── DocumentSimilarityRunTests.cs │ │ │ ├── DocumentSimilarityTests.cs │ │ │ ├── DocumentTypeCreateTests.cs │ │ │ ├── DocumentTypeDetailCategoriesInnerTests.cs │ │ │ ├── DocumentTypeDetailCategoriesTests.cs │ │ │ ├── DocumentTypeDetailFieldsDataInnerTests.cs │ │ │ ├── DocumentTypeDetailFieldsDataTests.cs │ │ │ ├── DocumentTypeDetailTests.cs │ │ │ ├── DocumentTypeForStatsTests.cs │ │ │ ├── DocumentTypeImportRequestTests.cs │ │ │ ├── DocumentTypeImportResponseTests.cs │ │ │ ├── DocumentTypeStatsDataTests.cs │ │ │ ├── DocumentTypeStatsTests.cs │ │ │ ├── DocumentsForUserResponseDataInnerTests.cs │ │ │ ├── DocumentsForUserResponseDataTests.cs │ │ │ ├── DocumentsForUserResponseTests.cs │ │ │ ├── DocumentsForUserTests.cs │ │ │ ├── DumpDocumentConfigGET200ResponseTests.cs │ │ │ ├── DumpFixtureTests.cs │ │ │ ├── DumpPUTErrorResponseTests.cs │ │ │ ├── FieldAnnotationStatusTests.cs │ │ │ ├── GeoAliasUsageTests.cs │ │ │ ├── GeoEntityListTests.cs │ │ │ ├── GeoEntityUpdateTests.cs │ │ │ ├── GeoEntityUsageTests.cs │ │ │ ├── InlineResponse400Tests.cs │ │ │ ├── InlineResponse4041Tests.cs │ │ │ ├── InlineResponse404Tests.cs │ │ │ ├── LoadFixtureTests.cs │ │ │ ├── LocateItemsRequestTests.cs │ │ │ ├── LoggingAPIViewRequestTests.cs │ │ │ ├── LoginResponseTests.cs │ │ │ ├── LoginTests.cs │ │ │ ├── MLModelTests.cs │ │ │ ├── MarkForSeenWebNotificationRequestTests.cs │ │ │ ├── MarkForSeenWebNotificationResponseTests.cs │ │ │ ├── MarkUnmarkForDeleteDocumentsRequestTests.cs │ │ │ ├── MarkUnmarkForDeleteDocumentsResponseTests.cs │ │ │ ├── MarkUnmarkForDeleteProjectsReponseTests.cs │ │ │ ├── MarkUnmarkForDeleteProjectsRequestTests.cs │ │ │ ├── MenuGroupTests.cs │ │ │ ├── MenuItemTests.cs │ │ │ ├── PartySimilarityFormTests.cs │ │ │ ├── PartySimilarityTests.cs │ │ │ ├── PartyTests.cs │ │ │ ├── PartyUsageTests.cs │ │ │ ├── PercentUsageTests.cs │ │ │ ├── ProjectActiveTasksTasksTests.cs │ │ │ ├── ProjectActiveTasksTests.cs │ │ │ ├── ProjectAnnotationsAssigneesResponseTests.cs │ │ │ ├── ProjectAppVarTests.cs │ │ │ ├── ProjectClusteringDocumentClustersInnerTests.cs │ │ │ ├── ProjectClusteringDocumentClustersTests.cs │ │ │ ├── ProjectClusteringStatusResponseTests.cs │ │ │ ├── ProjectClusteringTests.cs │ │ │ ├── ProjectCreateTests.cs │ │ │ ├── ProjectDetailOwnersDataInnerTests.cs │ │ │ ├── ProjectDetailOwnersDataTests.cs │ │ │ ├── ProjectDetailTests.cs │ │ │ ├── ProjectDocumentSimilarityResponseDataInnerTests.cs │ │ │ ├── ProjectDocumentSimilarityResponseDataTests.cs │ │ │ ├── ProjectDocumentSimilarityResponseTests.cs │ │ │ ├── ProjectDocumentSimilarityTests.cs │ │ │ ├── ProjectDocumentsAssigneesResponseTests.cs │ │ │ ├── ProjectDocumentsSimilarityByVectorsFormTests.cs │ │ │ ├── ProjectListStatusDataTests.cs │ │ │ ├── ProjectListTests.cs │ │ │ ├── ProjectListTypeDataTests.cs │ │ │ ├── ProjectProgressResponseTests.cs │ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404ResponseTests.cs │ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200ResponseTests.cs │ │ │ ├── ProjectSearchSimilarDocumentsRequestTests.cs │ │ │ ├── ProjectSearchSimilarTextUnitsRequestTests.cs │ │ │ ├── ProjectStatsTests.cs │ │ │ ├── ProjectTasksTests.cs │ │ │ ├── ProjectTextUnitSimilarityTests.cs │ │ │ ├── ProjectTextUnitsSimilarityByVectorsFormTests.cs │ │ │ ├── ProjectUpdateTests.cs │ │ │ ├── ProjectUploadSessionFilesResponseTests.cs │ │ │ ├── ProjectUploadSessionPOSTResponseTests.cs │ │ │ ├── ProjectUploadSessionProgressResponseTests.cs │ │ │ ├── RatioUsageTests.cs │ │ │ ├── RawdbDocumentsPOSTRequestTests.cs │ │ │ ├── RegisterTests.cs │ │ │ ├── RegulationUsageTests.cs │ │ │ ├── RestAuthCommonResponseTests.cs │ │ │ ├── ReviewStatusDetailGroupDataTests.cs │ │ │ ├── ReviewStatusDetailTests.cs │ │ │ ├── ReviewStatusGroupTests.cs │ │ │ ├── ReviewStatusTests.cs │ │ │ ├── SelectProjectsRequestTests.cs │ │ │ ├── SelectProjectsResponseTests.cs │ │ │ ├── SendClusterToProjectRequestTests.cs │ │ │ ├── SetProjectAnnotationsStatusAsyncResponseTests.cs │ │ │ ├── SetProjectAnnotationsStatusRequestTests.cs │ │ │ ├── SetProjectDocumentsStatusRequestTests.cs │ │ │ ├── SimilarProjectTextUnitsRequestTests.cs │ │ │ ├── SimilarityFormTests.cs │ │ │ ├── SimilarityPOSTObjectResponseTests.cs │ │ │ ├── SimilarityRunTests.cs │ │ │ ├── SocialAccountsResponseSocialAccountsTests.cs │ │ │ ├── SocialAccountsResponseTests.cs │ │ │ ├── SocialClientListTests.cs │ │ │ ├── SocialClientListUrlsTests.cs │ │ │ ├── SocialLoginTests.cs │ │ │ ├── TaskIdResponseTests.cs │ │ │ ├── TaskLogResponseRecordsTests.cs │ │ │ ├── TaskLogResponseTests.cs │ │ │ ├── TaskQueueDocumentsDataInnerTests.cs │ │ │ ├── TaskQueueDocumentsDataTests.cs │ │ │ ├── TaskQueueReviewersDataInnerTests.cs │ │ │ ├── TaskQueueReviewersDataTests.cs │ │ │ ├── TaskQueueTests.cs │ │ │ ├── TaskTests.cs │ │ │ ├── TermTagTests.cs │ │ │ ├── TermUsageTests.cs │ │ │ ├── TextUnitClassificationCreateTests.cs │ │ │ ├── TextUnitClassificationTests.cs │ │ │ ├── TextUnitClassifierSuggestionTests.cs │ │ │ ├── TextUnitClassifierTests.cs │ │ │ ├── TextUnitClusterTests.cs │ │ │ ├── TextUnitDjangoQLTests.cs │ │ │ ├── TextUnitSimilarityByFeaturesFormTests.cs │ │ │ ├── TextUnitSimilarityTests.cs │ │ │ ├── TrademarkUsageTests.cs │ │ │ ├── TransformerTests.cs │ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400ResponseTests.cs │ │ │ ├── TypeaheadTests.cs │ │ │ ├── UpdateProjectDocumentsFieldsRequestTests.cs │ │ │ ├── UpdateProjectDocumentsFieldsResponseTests.cs │ │ │ ├── UploadSessionBatchUploadRequestTests.cs │ │ │ ├── UploadSessionCreateTests.cs │ │ │ ├── UploadSessionDeleteFileRequestTests.cs │ │ │ ├── UploadSessionDetailTests.cs │ │ │ ├── UploadSessionUpdateTests.cs │ │ │ ├── UploadTests.cs │ │ │ ├── UrlUsageTests.cs │ │ │ ├── UserProfileTests.cs │ │ │ ├── UserStatsTests.cs │ │ │ ├── UserTests.cs │ │ │ ├── VerifyAuthTokenRequestTests.cs │ │ │ ├── VerifyAuthTokenResponseTests.cs │ │ │ ├── VerifyEmailTests.cs │ │ │ ├── WebNotificationDetailNotificationTests.cs │ │ │ └── WebNotificationDetailTests.cs │ │ ├── Org.OpenAPITools.Test.csproj │ │ └── packages.config │ ├── java/ │ │ ├── java.conf │ │ └── sdk/ │ │ ├── .github/ │ │ │ └── workflows/ │ │ │ └── maven.yml │ │ ├── .gitignore │ │ ├── .openapi-generator/ │ │ │ ├── FILES │ │ │ └── VERSION │ │ ├── .openapi-generator-ignore │ │ ├── .travis.yml │ │ ├── README.md │ │ ├── api/ │ │ │ └── openapi.yaml │ │ ├── build.gradle │ │ ├── build.sbt │ │ ├── docs/ │ │ │ ├── AccessTokenSchema.md │ │ │ ├── Action.md │ │ │ ├── AmountUsage.md │ │ │ ├── AnalyzeApi.md │ │ │ ├── Annotation.md │ │ │ ├── AnnotationBatchRequest.md │ │ │ ├── AnnotationBatchResponse.md │ │ │ ├── AnnotationInDocument.md │ │ │ ├── AnnotationSuggestRequest.md │ │ │ ├── AnnotationUpdateResponse.md │ │ │ ├── ApiApi.md │ │ │ ├── AppVar.md │ │ │ ├── AssignProjectAnnotationsRequest.md │ │ │ ├── AssignProjectDocumentRequest.md │ │ │ ├── AssignProjectDocumentsRequest.md │ │ │ ├── CheckDocumentFieldFormulaRequest.md │ │ │ ├── CheckNewDocumentFieldFormulaRequest.md │ │ │ ├── CitationUsage.md │ │ │ ├── CleanupProjectRequest.md │ │ │ ├── CloneDocumentFieldRequest.md │ │ │ ├── CloneDocumentTypeRequest.md │ │ │ ├── ClusterProjectRequest.md │ │ │ ├── ClusterProjectResponse.md │ │ │ ├── Code.md │ │ │ ├── CommonApi.md │ │ │ ├── CopyrightUsage.md │ │ │ ├── CountSuccessResponse.md │ │ │ ├── CourtUsage.md │ │ │ ├── CurrencyUsage.md │ │ │ ├── CustomPasswordChange.md │ │ │ ├── CustomPasswordReset.md │ │ │ ├── CustomPasswordResetConfirm.md │ │ │ ├── DateDurationUsage.md │ │ │ ├── DateUsage.md │ │ │ ├── DateUsageCalendar.md │ │ │ ├── DateUsageTimeline.md │ │ │ ├── DefinitionUsage.md │ │ │ ├── DetectProjectFieldValuesRequest.md │ │ │ ├── DistanceUsage.md │ │ │ ├── DocumentApi.md │ │ │ ├── DocumentCluster.md │ │ │ ├── DocumentClusterDocumentData.md │ │ │ ├── DocumentClusterDocumentDataInner.md │ │ │ ├── DocumentClusterUpdate.md │ │ │ ├── DocumentDefinitions.md │ │ │ ├── DocumentDetail.md │ │ │ ├── DocumentDetailAssigneeData.md │ │ │ ├── DocumentDetailAvailableAssigneesData.md │ │ │ ├── DocumentDetailAvailableAssigneesDataInner.md │ │ │ ├── DocumentDetailNotes.md │ │ │ ├── DocumentDetailStatusData.md │ │ │ ├── DocumentDetailUser.md │ │ │ ├── DocumentDocumentsDownloadZipGET404Response.md │ │ │ ├── DocumentDownloadZipResponse.md │ │ │ ├── DocumentFieldAnnotation.md │ │ │ ├── DocumentFieldCategoryCreate.md │ │ │ ├── DocumentFieldCategoryList.md │ │ │ ├── DocumentFieldCategoryListFields.md │ │ │ ├── DocumentFieldCategoryListFieldsInner.md │ │ │ ├── DocumentFieldCreate.md │ │ │ ├── DocumentFieldDetail.md │ │ │ ├── DocumentFieldDetectorCreate.md │ │ │ ├── DocumentFieldDetectorDetail.md │ │ │ ├── DocumentFieldList.md │ │ │ ├── DocumentFieldListCategory.md │ │ │ ├── DocumentFieldListFamily.md │ │ │ ├── DocumentFieldStatsResponse.md │ │ │ ├── DocumentFieldValue.md │ │ │ ├── DocumentNoteCreate.md │ │ │ ├── DocumentNoteDetail.md │ │ │ ├── DocumentNoteDetailUser.md │ │ │ ├── DocumentNoteUpdate.md │ │ │ ├── DocumentPDFRepr.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.md │ │ │ ├── DocumentSimilarity.md │ │ │ ├── DocumentSimilarityByFeaturesForm.md │ │ │ ├── DocumentSimilarityRun.md │ │ │ ├── DocumentTypeCreate.md │ │ │ ├── DocumentTypeDetail.md │ │ │ ├── DocumentTypeDetailCategories.md │ │ │ ├── DocumentTypeDetailCategoriesInner.md │ │ │ ├── DocumentTypeDetailFieldsData.md │ │ │ ├── DocumentTypeDetailFieldsDataInner.md │ │ │ ├── DocumentTypeForStats.md │ │ │ ├── DocumentTypeImportRequest.md │ │ │ ├── DocumentTypeImportResponse.md │ │ │ ├── DocumentTypeStats.md │ │ │ ├── DocumentTypeStatsData.md │ │ │ ├── DocumentsForUser.md │ │ │ ├── DocumentsForUserResponse.md │ │ │ ├── DocumentsForUserResponseData.md │ │ │ ├── DocumentsForUserResponseDataInner.md │ │ │ ├── DumpApi.md │ │ │ ├── DumpDocumentConfigGET200Response.md │ │ │ ├── DumpFixture.md │ │ │ ├── DumpPUTErrorResponse.md │ │ │ ├── ExtractApi.md │ │ │ ├── FieldAnnotationStatus.md │ │ │ ├── GeoAliasUsage.md │ │ │ ├── GeoEntityList.md │ │ │ ├── GeoEntityUpdate.md │ │ │ ├── GeoEntityUsage.md │ │ │ ├── InlineResponse400.md │ │ │ ├── InlineResponse404.md │ │ │ ├── InlineResponse4041.md │ │ │ ├── LoadFixture.md │ │ │ ├── LocateItemsRequest.md │ │ │ ├── LoggingAPIViewRequest.md │ │ │ ├── LoggingApi.md │ │ │ ├── Login.md │ │ │ ├── LoginResponse.md │ │ │ ├── MLModel.md │ │ │ ├── MarkForSeenWebNotificationRequest.md │ │ │ ├── MarkForSeenWebNotificationResponse.md │ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.md │ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.md │ │ │ ├── MarkUnmarkForDeleteProjectsReponse.md │ │ │ ├── MarkUnmarkForDeleteProjectsRequest.md │ │ │ ├── MediaDataApi.md │ │ │ ├── MenuGroup.md │ │ │ ├── MenuItem.md │ │ │ ├── NotificationsApi.md │ │ │ ├── Party.md │ │ │ ├── PartySimilarity.md │ │ │ ├── PartySimilarityForm.md │ │ │ ├── PartyUsage.md │ │ │ ├── PercentUsage.md │ │ │ ├── ProjectActiveTasks.md │ │ │ ├── ProjectActiveTasksTasks.md │ │ │ ├── ProjectAnnotationsAssigneesResponse.md │ │ │ ├── ProjectApi.md │ │ │ ├── ProjectAppVar.md │ │ │ ├── ProjectClustering.md │ │ │ ├── ProjectClusteringDocumentClusters.md │ │ │ ├── ProjectClusteringDocumentClustersInner.md │ │ │ ├── ProjectClusteringStatusResponse.md │ │ │ ├── ProjectCreate.md │ │ │ ├── ProjectDetail.md │ │ │ ├── ProjectDetailOwnersData.md │ │ │ ├── ProjectDetailOwnersDataInner.md │ │ │ ├── ProjectDocumentSimilarity.md │ │ │ ├── ProjectDocumentSimilarityResponse.md │ │ │ ├── ProjectDocumentSimilarityResponseData.md │ │ │ ├── ProjectDocumentSimilarityResponseDataInner.md │ │ │ ├── ProjectDocumentsAssigneesResponse.md │ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.md │ │ │ ├── ProjectList.md │ │ │ ├── ProjectListStatusData.md │ │ │ ├── ProjectListTypeData.md │ │ │ ├── ProjectProgressResponse.md │ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.md │ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.md │ │ │ ├── ProjectSearchSimilarDocumentsRequest.md │ │ │ ├── ProjectSearchSimilarTextUnitsRequest.md │ │ │ ├── ProjectStats.md │ │ │ ├── ProjectTasks.md │ │ │ ├── ProjectTextUnitSimilarity.md │ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.md │ │ │ ├── ProjectUpdate.md │ │ │ ├── ProjectUploadSessionFilesResponse.md │ │ │ ├── ProjectUploadSessionPOSTResponse.md │ │ │ ├── ProjectUploadSessionProgressResponse.md │ │ │ ├── RatioUsage.md │ │ │ ├── RawdbApi.md │ │ │ ├── RawdbDocumentsPOSTRequest.md │ │ │ ├── Register.md │ │ │ ├── RegulationUsage.md │ │ │ ├── RestAuthApi.md │ │ │ ├── RestAuthCommonResponse.md │ │ │ ├── ReviewStatus.md │ │ │ ├── ReviewStatusDetail.md │ │ │ ├── ReviewStatusDetailGroupData.md │ │ │ ├── ReviewStatusGroup.md │ │ │ ├── SelectProjectsRequest.md │ │ │ ├── SelectProjectsResponse.md │ │ │ ├── SendClusterToProjectRequest.md │ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.md │ │ │ ├── SetProjectAnnotationsStatusRequest.md │ │ │ ├── SetProjectDocumentsStatusRequest.md │ │ │ ├── SimilarProjectTextUnitsRequest.md │ │ │ ├── SimilarityApi.md │ │ │ ├── SimilarityForm.md │ │ │ ├── SimilarityPOSTObjectResponse.md │ │ │ ├── SimilarityRun.md │ │ │ ├── SocialAccountsResponse.md │ │ │ ├── SocialAccountsResponseSocialAccounts.md │ │ │ ├── SocialClientList.md │ │ │ ├── SocialClientListUrls.md │ │ │ ├── SocialLogin.md │ │ │ ├── Task.md │ │ │ ├── TaskApi.md │ │ │ ├── TaskIdResponse.md │ │ │ ├── TaskLogResponse.md │ │ │ ├── TaskLogResponseRecords.md │ │ │ ├── TaskQueue.md │ │ │ ├── TaskQueueDocumentsData.md │ │ │ ├── TaskQueueDocumentsDataInner.md │ │ │ ├── TaskQueueReviewersData.md │ │ │ ├── TaskQueueReviewersDataInner.md │ │ │ ├── TermTag.md │ │ │ ├── TermUsage.md │ │ │ ├── TextUnitClassification.md │ │ │ ├── TextUnitClassificationCreate.md │ │ │ ├── TextUnitClassifier.md │ │ │ ├── TextUnitClassifierSuggestion.md │ │ │ ├── TextUnitCluster.md │ │ │ ├── TextUnitDjangoQL.md │ │ │ ├── TextUnitSimilarity.md │ │ │ ├── TextUnitSimilarityByFeaturesForm.md │ │ │ ├── TrademarkUsage.md │ │ │ ├── Transformer.md │ │ │ ├── TusApi.md │ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.md │ │ │ ├── Typeahead.md │ │ │ ├── UpdateProjectDocumentsFieldsRequest.md │ │ │ ├── UpdateProjectDocumentsFieldsResponse.md │ │ │ ├── Upload.md │ │ │ ├── UploadSessionBatchUploadRequest.md │ │ │ ├── UploadSessionCreate.md │ │ │ ├── UploadSessionDeleteFileRequest.md │ │ │ ├── UploadSessionDetail.md │ │ │ ├── UploadSessionUpdate.md │ │ │ ├── UrlUsage.md │ │ │ ├── User.md │ │ │ ├── UserProfile.md │ │ │ ├── UserStats.md │ │ │ ├── UsersApi.md │ │ │ ├── V1Api.md │ │ │ ├── VarApi.md │ │ │ ├── VerifyAuthTokenRequest.md │ │ │ ├── VerifyAuthTokenResponse.md │ │ │ ├── VerifyEmail.md │ │ │ ├── WebNotificationDetail.md │ │ │ └── WebNotificationDetailNotification.md │ │ ├── git_push.sh │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── pom.xml │ │ ├── settings.gradle │ │ └── src/ │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── openapitools/ │ │ │ └── client/ │ │ │ ├── ApiCallback.java │ │ │ ├── ApiClient.java │ │ │ ├── ApiException.java │ │ │ ├── ApiResponse.java │ │ │ ├── Configuration.java │ │ │ ├── GzipRequestInterceptor.java │ │ │ ├── JSON.java │ │ │ ├── Pair.java │ │ │ ├── ProgressRequestBody.java │ │ │ ├── ProgressResponseBody.java │ │ │ ├── ServerConfiguration.java │ │ │ ├── ServerVariable.java │ │ │ ├── StringUtil.java │ │ │ ├── api/ │ │ │ │ ├── AnalyzeApi.java │ │ │ │ ├── ApiApi.java │ │ │ │ ├── CommonApi.java │ │ │ │ ├── DocumentApi.java │ │ │ │ ├── DumpApi.java │ │ │ │ ├── ExtractApi.java │ │ │ │ ├── LoggingApi.java │ │ │ │ ├── MediaDataApi.java │ │ │ │ ├── NotificationsApi.java │ │ │ │ ├── ProjectApi.java │ │ │ │ ├── RawdbApi.java │ │ │ │ ├── RestAuthApi.java │ │ │ │ ├── SimilarityApi.java │ │ │ │ ├── TaskApi.java │ │ │ │ ├── TusApi.java │ │ │ │ ├── UsersApi.java │ │ │ │ ├── V1Api.java │ │ │ │ └── VarApi.java │ │ │ ├── auth/ │ │ │ │ ├── ApiKeyAuth.java │ │ │ │ ├── Authentication.java │ │ │ │ ├── HttpBasicAuth.java │ │ │ │ └── HttpBearerAuth.java │ │ │ └── model/ │ │ │ ├── AbstractOpenApiSchema.java │ │ │ ├── AccessTokenSchema.java │ │ │ ├── Action.java │ │ │ ├── AmountUsage.java │ │ │ ├── Annotation.java │ │ │ ├── AnnotationBatchRequest.java │ │ │ ├── AnnotationBatchResponse.java │ │ │ ├── AnnotationInDocument.java │ │ │ ├── AnnotationSuggestRequest.java │ │ │ ├── AnnotationUpdateResponse.java │ │ │ ├── AppVar.java │ │ │ ├── AssignProjectAnnotationsRequest.java │ │ │ ├── AssignProjectDocumentRequest.java │ │ │ ├── AssignProjectDocumentsRequest.java │ │ │ ├── CheckDocumentFieldFormulaRequest.java │ │ │ ├── CheckNewDocumentFieldFormulaRequest.java │ │ │ ├── CitationUsage.java │ │ │ ├── CleanupProjectRequest.java │ │ │ ├── CloneDocumentFieldRequest.java │ │ │ ├── CloneDocumentTypeRequest.java │ │ │ ├── ClusterProjectRequest.java │ │ │ ├── ClusterProjectResponse.java │ │ │ ├── Code.java │ │ │ ├── CopyrightUsage.java │ │ │ ├── CountSuccessResponse.java │ │ │ ├── CourtUsage.java │ │ │ ├── CurrencyUsage.java │ │ │ ├── CustomPasswordChange.java │ │ │ ├── CustomPasswordReset.java │ │ │ ├── CustomPasswordResetConfirm.java │ │ │ ├── DateDurationUsage.java │ │ │ ├── DateUsage.java │ │ │ ├── DateUsageCalendar.java │ │ │ ├── DateUsageTimeline.java │ │ │ ├── DefinitionUsage.java │ │ │ ├── DetectProjectFieldValuesRequest.java │ │ │ ├── DistanceUsage.java │ │ │ ├── DocumentCluster.java │ │ │ ├── DocumentClusterDocumentData.java │ │ │ ├── DocumentClusterDocumentDataInner.java │ │ │ ├── DocumentClusterUpdate.java │ │ │ ├── DocumentDefinitions.java │ │ │ ├── DocumentDetail.java │ │ │ ├── DocumentDetailAssigneeData.java │ │ │ ├── DocumentDetailAvailableAssigneesData.java │ │ │ ├── DocumentDetailAvailableAssigneesDataInner.java │ │ │ ├── DocumentDetailNotes.java │ │ │ ├── DocumentDetailStatusData.java │ │ │ ├── DocumentDetailUser.java │ │ │ ├── DocumentDocumentsDownloadZipGET404Response.java │ │ │ ├── DocumentDownloadZipResponse.java │ │ │ ├── DocumentFieldAnnotation.java │ │ │ ├── DocumentFieldCategoryCreate.java │ │ │ ├── DocumentFieldCategoryList.java │ │ │ ├── DocumentFieldCategoryListFields.java │ │ │ ├── DocumentFieldCategoryListFieldsInner.java │ │ │ ├── DocumentFieldCreate.java │ │ │ ├── DocumentFieldDetail.java │ │ │ ├── DocumentFieldDetectorCreate.java │ │ │ ├── DocumentFieldDetectorDetail.java │ │ │ ├── DocumentFieldList.java │ │ │ ├── DocumentFieldListCategory.java │ │ │ ├── DocumentFieldListFamily.java │ │ │ ├── DocumentFieldStatsResponse.java │ │ │ ├── DocumentFieldValue.java │ │ │ ├── DocumentNoteCreate.java │ │ │ ├── DocumentNoteDetail.java │ │ │ ├── DocumentNoteDetailUser.java │ │ │ ├── DocumentNoteUpdate.java │ │ │ ├── DocumentPDFRepr.java │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.java │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.java │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.java │ │ │ ├── DocumentSimilarity.java │ │ │ ├── DocumentSimilarityByFeaturesForm.java │ │ │ ├── DocumentSimilarityRun.java │ │ │ ├── DocumentTypeCreate.java │ │ │ ├── DocumentTypeDetail.java │ │ │ ├── DocumentTypeDetailCategories.java │ │ │ ├── DocumentTypeDetailCategoriesInner.java │ │ │ ├── DocumentTypeDetailFieldsData.java │ │ │ ├── DocumentTypeDetailFieldsDataInner.java │ │ │ ├── DocumentTypeForStats.java │ │ │ ├── DocumentTypeImportRequest.java │ │ │ ├── DocumentTypeImportResponse.java │ │ │ ├── DocumentTypeStats.java │ │ │ ├── DocumentTypeStatsData.java │ │ │ ├── DocumentsForUser.java │ │ │ ├── DocumentsForUserResponse.java │ │ │ ├── DocumentsForUserResponseData.java │ │ │ ├── DocumentsForUserResponseDataInner.java │ │ │ ├── DumpDocumentConfigGET200Response.java │ │ │ ├── DumpFixture.java │ │ │ ├── DumpPUTErrorResponse.java │ │ │ ├── FieldAnnotationStatus.java │ │ │ ├── GeoAliasUsage.java │ │ │ ├── GeoEntityList.java │ │ │ ├── GeoEntityUpdate.java │ │ │ ├── GeoEntityUsage.java │ │ │ ├── InlineResponse400.java │ │ │ ├── InlineResponse404.java │ │ │ ├── InlineResponse4041.java │ │ │ ├── LoadFixture.java │ │ │ ├── LocateItemsRequest.java │ │ │ ├── LoggingAPIViewRequest.java │ │ │ ├── Login.java │ │ │ ├── LoginResponse.java │ │ │ ├── MLModel.java │ │ │ ├── MarkForSeenWebNotificationRequest.java │ │ │ ├── MarkForSeenWebNotificationResponse.java │ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.java │ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.java │ │ │ ├── MarkUnmarkForDeleteProjectsReponse.java │ │ │ ├── MarkUnmarkForDeleteProjectsRequest.java │ │ │ ├── MenuGroup.java │ │ │ ├── MenuItem.java │ │ │ ├── Party.java │ │ │ ├── PartySimilarity.java │ │ │ ├── PartySimilarityForm.java │ │ │ ├── PartyUsage.java │ │ │ ├── PercentUsage.java │ │ │ ├── ProjectActiveTasks.java │ │ │ ├── ProjectActiveTasksTasks.java │ │ │ ├── ProjectAnnotationsAssigneesResponse.java │ │ │ ├── ProjectAppVar.java │ │ │ ├── ProjectClustering.java │ │ │ ├── ProjectClusteringDocumentClusters.java │ │ │ ├── ProjectClusteringDocumentClustersInner.java │ │ │ ├── ProjectClusteringStatusResponse.java │ │ │ ├── ProjectCreate.java │ │ │ ├── ProjectDetail.java │ │ │ ├── ProjectDetailOwnersData.java │ │ │ ├── ProjectDetailOwnersDataInner.java │ │ │ ├── ProjectDocumentSimilarity.java │ │ │ ├── ProjectDocumentSimilarityResponse.java │ │ │ ├── ProjectDocumentSimilarityResponseData.java │ │ │ ├── ProjectDocumentSimilarityResponseDataInner.java │ │ │ ├── ProjectDocumentsAssigneesResponse.java │ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.java │ │ │ ├── ProjectList.java │ │ │ ├── ProjectListStatusData.java │ │ │ ├── ProjectListTypeData.java │ │ │ ├── ProjectProgressResponse.java │ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.java │ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.java │ │ │ ├── ProjectSearchSimilarDocumentsRequest.java │ │ │ ├── ProjectSearchSimilarTextUnitsRequest.java │ │ │ ├── ProjectStats.java │ │ │ ├── ProjectTasks.java │ │ │ ├── ProjectTextUnitSimilarity.java │ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.java │ │ │ ├── ProjectUpdate.java │ │ │ ├── ProjectUploadSessionFilesResponse.java │ │ │ ├── ProjectUploadSessionPOSTResponse.java │ │ │ ├── ProjectUploadSessionProgressResponse.java │ │ │ ├── RatioUsage.java │ │ │ ├── RawdbDocumentsPOSTRequest.java │ │ │ ├── Register.java │ │ │ ├── RegulationUsage.java │ │ │ ├── RestAuthCommonResponse.java │ │ │ ├── ReviewStatus.java │ │ │ ├── ReviewStatusDetail.java │ │ │ ├── ReviewStatusDetailGroupData.java │ │ │ ├── ReviewStatusGroup.java │ │ │ ├── SelectProjectsRequest.java │ │ │ ├── SelectProjectsResponse.java │ │ │ ├── SendClusterToProjectRequest.java │ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.java │ │ │ ├── SetProjectAnnotationsStatusRequest.java │ │ │ ├── SetProjectDocumentsStatusRequest.java │ │ │ ├── SimilarProjectTextUnitsRequest.java │ │ │ ├── SimilarityForm.java │ │ │ ├── SimilarityPOSTObjectResponse.java │ │ │ ├── SimilarityRun.java │ │ │ ├── SocialAccountsResponse.java │ │ │ ├── SocialAccountsResponseSocialAccounts.java │ │ │ ├── SocialClientList.java │ │ │ ├── SocialClientListUrls.java │ │ │ ├── SocialLogin.java │ │ │ ├── Task.java │ │ │ ├── TaskIdResponse.java │ │ │ ├── TaskLogResponse.java │ │ │ ├── TaskLogResponseRecords.java │ │ │ ├── TaskQueue.java │ │ │ ├── TaskQueueDocumentsData.java │ │ │ ├── TaskQueueDocumentsDataInner.java │ │ │ ├── TaskQueueReviewersData.java │ │ │ ├── TaskQueueReviewersDataInner.java │ │ │ ├── TermTag.java │ │ │ ├── TermUsage.java │ │ │ ├── TextUnitClassification.java │ │ │ ├── TextUnitClassificationCreate.java │ │ │ ├── TextUnitClassifier.java │ │ │ ├── TextUnitClassifierSuggestion.java │ │ │ ├── TextUnitCluster.java │ │ │ ├── TextUnitDjangoQL.java │ │ │ ├── TextUnitSimilarity.java │ │ │ ├── TextUnitSimilarityByFeaturesForm.java │ │ │ ├── TrademarkUsage.java │ │ │ ├── Transformer.java │ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.java │ │ │ ├── Typeahead.java │ │ │ ├── UpdateProjectDocumentsFieldsRequest.java │ │ │ ├── UpdateProjectDocumentsFieldsResponse.java │ │ │ ├── Upload.java │ │ │ ├── UploadSessionBatchUploadRequest.java │ │ │ ├── UploadSessionCreate.java │ │ │ ├── UploadSessionDeleteFileRequest.java │ │ │ ├── UploadSessionDetail.java │ │ │ ├── UploadSessionUpdate.java │ │ │ ├── UrlUsage.java │ │ │ ├── User.java │ │ │ ├── UserProfile.java │ │ │ ├── UserStats.java │ │ │ ├── VerifyAuthTokenRequest.java │ │ │ ├── VerifyAuthTokenResponse.java │ │ │ ├── VerifyEmail.java │ │ │ ├── WebNotificationDetail.java │ │ │ └── WebNotificationDetailNotification.java │ │ └── test/ │ │ └── java/ │ │ └── org/ │ │ └── openapitools/ │ │ └── client/ │ │ ├── api/ │ │ │ ├── AnalyzeApiTest.java │ │ │ ├── ApiApiTest.java │ │ │ ├── CommonApiTest.java │ │ │ ├── DocumentApiTest.java │ │ │ ├── DumpApiTest.java │ │ │ ├── ExtractApiTest.java │ │ │ ├── LoggingApiTest.java │ │ │ ├── MediaDataApiTest.java │ │ │ ├── NotificationsApiTest.java │ │ │ ├── ProjectApiTest.java │ │ │ ├── RawdbApiTest.java │ │ │ ├── RestAuthApiTest.java │ │ │ ├── SimilarityApiTest.java │ │ │ ├── TaskApiTest.java │ │ │ ├── TusApiTest.java │ │ │ ├── UsersApiTest.java │ │ │ ├── V1ApiTest.java │ │ │ └── VarApiTest.java │ │ └── model/ │ │ ├── AccessTokenSchemaTest.java │ │ ├── ActionTest.java │ │ ├── AmountUsageTest.java │ │ ├── AnnotationBatchRequestTest.java │ │ ├── AnnotationBatchResponseTest.java │ │ ├── AnnotationInDocumentTest.java │ │ ├── AnnotationSuggestRequestTest.java │ │ ├── AnnotationTest.java │ │ ├── AnnotationUpdateResponseTest.java │ │ ├── AppVarTest.java │ │ ├── AssignProjectAnnotationsRequestTest.java │ │ ├── AssignProjectDocumentRequestTest.java │ │ ├── AssignProjectDocumentsRequestTest.java │ │ ├── CheckDocumentFieldFormulaRequestTest.java │ │ ├── CheckNewDocumentFieldFormulaRequestTest.java │ │ ├── CitationUsageTest.java │ │ ├── CleanupProjectRequestTest.java │ │ ├── CloneDocumentFieldRequestTest.java │ │ ├── CloneDocumentTypeRequestTest.java │ │ ├── ClusterProjectRequestTest.java │ │ ├── ClusterProjectResponseTest.java │ │ ├── CodeTest.java │ │ ├── CopyrightUsageTest.java │ │ ├── CountSuccessResponseTest.java │ │ ├── CourtUsageTest.java │ │ ├── CurrencyUsageTest.java │ │ ├── CustomPasswordChangeTest.java │ │ ├── CustomPasswordResetConfirmTest.java │ │ ├── CustomPasswordResetTest.java │ │ ├── DateDurationUsageTest.java │ │ ├── DateUsageCalendarTest.java │ │ ├── DateUsageTest.java │ │ ├── DateUsageTimelineTest.java │ │ ├── DefinitionUsageTest.java │ │ ├── DetectProjectFieldValuesRequestTest.java │ │ ├── DistanceUsageTest.java │ │ ├── DocumentClusterDocumentDataInnerTest.java │ │ ├── DocumentClusterDocumentDataTest.java │ │ ├── DocumentClusterTest.java │ │ ├── DocumentClusterUpdateTest.java │ │ ├── DocumentDefinitionsTest.java │ │ ├── DocumentDetailAssigneeDataTest.java │ │ ├── DocumentDetailAvailableAssigneesDataInnerTest.java │ │ ├── DocumentDetailAvailableAssigneesDataTest.java │ │ ├── DocumentDetailNotesTest.java │ │ ├── DocumentDetailStatusDataTest.java │ │ ├── DocumentDetailTest.java │ │ ├── DocumentDetailUserTest.java │ │ ├── DocumentDocumentsDownloadZipGET404ResponseTest.java │ │ ├── DocumentDownloadZipResponseTest.java │ │ ├── DocumentFieldAnnotationTest.java │ │ ├── DocumentFieldCategoryCreateTest.java │ │ ├── DocumentFieldCategoryListFieldsInnerTest.java │ │ ├── DocumentFieldCategoryListFieldsTest.java │ │ ├── DocumentFieldCategoryListTest.java │ │ ├── DocumentFieldCreateTest.java │ │ ├── DocumentFieldDetailTest.java │ │ ├── DocumentFieldDetectorCreateTest.java │ │ ├── DocumentFieldDetectorDetailTest.java │ │ ├── DocumentFieldListCategoryTest.java │ │ ├── DocumentFieldListFamilyTest.java │ │ ├── DocumentFieldListTest.java │ │ ├── DocumentFieldStatsResponseTest.java │ │ ├── DocumentFieldValueTest.java │ │ ├── DocumentNoteCreateTest.java │ │ ├── DocumentNoteDetailTest.java │ │ ├── DocumentNoteDetailUserTest.java │ │ ├── DocumentNoteUpdateTest.java │ │ ├── DocumentPDFReprTest.java │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInnerTest.java │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestTest.java │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponseTest.java │ │ ├── DocumentSimilarityByFeaturesFormTest.java │ │ ├── DocumentSimilarityRunTest.java │ │ ├── DocumentSimilarityTest.java │ │ ├── DocumentTypeCreateTest.java │ │ ├── DocumentTypeDetailCategoriesInnerTest.java │ │ ├── DocumentTypeDetailCategoriesTest.java │ │ ├── DocumentTypeDetailFieldsDataInnerTest.java │ │ ├── DocumentTypeDetailFieldsDataTest.java │ │ ├── DocumentTypeDetailTest.java │ │ ├── DocumentTypeForStatsTest.java │ │ ├── DocumentTypeImportRequestTest.java │ │ ├── DocumentTypeImportResponseTest.java │ │ ├── DocumentTypeStatsDataTest.java │ │ ├── DocumentTypeStatsTest.java │ │ ├── DocumentsForUserResponseDataInnerTest.java │ │ ├── DocumentsForUserResponseDataTest.java │ │ ├── DocumentsForUserResponseTest.java │ │ ├── DocumentsForUserTest.java │ │ ├── DumpDocumentConfigGET200ResponseTest.java │ │ ├── DumpFixtureTest.java │ │ ├── DumpPUTErrorResponseTest.java │ │ ├── FieldAnnotationStatusTest.java │ │ ├── GeoAliasUsageTest.java │ │ ├── GeoEntityListTest.java │ │ ├── GeoEntityUpdateTest.java │ │ ├── GeoEntityUsageTest.java │ │ ├── InlineResponse400Test.java │ │ ├── InlineResponse4041Test.java │ │ ├── InlineResponse404Test.java │ │ ├── LoadFixtureTest.java │ │ ├── LocateItemsRequestTest.java │ │ ├── LoggingAPIViewRequestTest.java │ │ ├── LoginResponseTest.java │ │ ├── LoginTest.java │ │ ├── MLModelTest.java │ │ ├── MarkForSeenWebNotificationRequestTest.java │ │ ├── MarkForSeenWebNotificationResponseTest.java │ │ ├── MarkUnmarkForDeleteDocumentsRequestTest.java │ │ ├── MarkUnmarkForDeleteDocumentsResponseTest.java │ │ ├── MarkUnmarkForDeleteProjectsReponseTest.java │ │ ├── MarkUnmarkForDeleteProjectsRequestTest.java │ │ ├── MenuGroupTest.java │ │ ├── MenuItemTest.java │ │ ├── PartySimilarityFormTest.java │ │ ├── PartySimilarityTest.java │ │ ├── PartyTest.java │ │ ├── PartyUsageTest.java │ │ ├── PercentUsageTest.java │ │ ├── ProjectActiveTasksTasksTest.java │ │ ├── ProjectActiveTasksTest.java │ │ ├── ProjectAnnotationsAssigneesResponseTest.java │ │ ├── ProjectAppVarTest.java │ │ ├── ProjectClusteringDocumentClustersInnerTest.java │ │ ├── ProjectClusteringDocumentClustersTest.java │ │ ├── ProjectClusteringStatusResponseTest.java │ │ ├── ProjectClusteringTest.java │ │ ├── ProjectCreateTest.java │ │ ├── ProjectDetailOwnersDataInnerTest.java │ │ ├── ProjectDetailOwnersDataTest.java │ │ ├── ProjectDetailTest.java │ │ ├── ProjectDocumentSimilarityResponseDataInnerTest.java │ │ ├── ProjectDocumentSimilarityResponseDataTest.java │ │ ├── ProjectDocumentSimilarityResponseTest.java │ │ ├── ProjectDocumentSimilarityTest.java │ │ ├── ProjectDocumentsAssigneesResponseTest.java │ │ ├── ProjectDocumentsSimilarityByVectorsFormTest.java │ │ ├── ProjectListStatusDataTest.java │ │ ├── ProjectListTest.java │ │ ├── ProjectListTypeDataTest.java │ │ ├── ProjectProgressResponseTest.java │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404ResponseTest.java │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200ResponseTest.java │ │ ├── ProjectSearchSimilarDocumentsRequestTest.java │ │ ├── ProjectSearchSimilarTextUnitsRequestTest.java │ │ ├── ProjectStatsTest.java │ │ ├── ProjectTasksTest.java │ │ ├── ProjectTextUnitSimilarityTest.java │ │ ├── ProjectTextUnitsSimilarityByVectorsFormTest.java │ │ ├── ProjectUpdateTest.java │ │ ├── ProjectUploadSessionFilesResponseTest.java │ │ ├── ProjectUploadSessionPOSTResponseTest.java │ │ ├── ProjectUploadSessionProgressResponseTest.java │ │ ├── RatioUsageTest.java │ │ ├── RawdbDocumentsPOSTRequestTest.java │ │ ├── RegisterTest.java │ │ ├── RegulationUsageTest.java │ │ ├── RestAuthCommonResponseTest.java │ │ ├── ReviewStatusDetailGroupDataTest.java │ │ ├── ReviewStatusDetailTest.java │ │ ├── ReviewStatusGroupTest.java │ │ ├── ReviewStatusTest.java │ │ ├── SelectProjectsRequestTest.java │ │ ├── SelectProjectsResponseTest.java │ │ ├── SendClusterToProjectRequestTest.java │ │ ├── SetProjectAnnotationsStatusAsyncResponseTest.java │ │ ├── SetProjectAnnotationsStatusRequestTest.java │ │ ├── SetProjectDocumentsStatusRequestTest.java │ │ ├── SimilarProjectTextUnitsRequestTest.java │ │ ├── SimilarityFormTest.java │ │ ├── SimilarityPOSTObjectResponseTest.java │ │ ├── SimilarityRunTest.java │ │ ├── SocialAccountsResponseSocialAccountsTest.java │ │ ├── SocialAccountsResponseTest.java │ │ ├── SocialClientListTest.java │ │ ├── SocialClientListUrlsTest.java │ │ ├── SocialLoginTest.java │ │ ├── TaskIdResponseTest.java │ │ ├── TaskLogResponseRecordsTest.java │ │ ├── TaskLogResponseTest.java │ │ ├── TaskQueueDocumentsDataInnerTest.java │ │ ├── TaskQueueDocumentsDataTest.java │ │ ├── TaskQueueReviewersDataInnerTest.java │ │ ├── TaskQueueReviewersDataTest.java │ │ ├── TaskQueueTest.java │ │ ├── TaskTest.java │ │ ├── TermTagTest.java │ │ ├── TermUsageTest.java │ │ ├── TextUnitClassificationCreateTest.java │ │ ├── TextUnitClassificationTest.java │ │ ├── TextUnitClassifierSuggestionTest.java │ │ ├── TextUnitClassifierTest.java │ │ ├── TextUnitClusterTest.java │ │ ├── TextUnitDjangoQLTest.java │ │ ├── TextUnitSimilarityByFeaturesFormTest.java │ │ ├── TextUnitSimilarityTest.java │ │ ├── TrademarkUsageTest.java │ │ ├── TransformerTest.java │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400ResponseTest.java │ │ ├── TypeaheadTest.java │ │ ├── UpdateProjectDocumentsFieldsRequestTest.java │ │ ├── UpdateProjectDocumentsFieldsResponseTest.java │ │ ├── UploadSessionBatchUploadRequestTest.java │ │ ├── UploadSessionCreateTest.java │ │ ├── UploadSessionDeleteFileRequestTest.java │ │ ├── UploadSessionDetailTest.java │ │ ├── UploadSessionUpdateTest.java │ │ ├── UploadTest.java │ │ ├── UrlUsageTest.java │ │ ├── UserProfileTest.java │ │ ├── UserStatsTest.java │ │ ├── UserTest.java │ │ ├── VerifyAuthTokenRequestTest.java │ │ ├── VerifyAuthTokenResponseTest.java │ │ ├── VerifyEmailTest.java │ │ ├── WebNotificationDetailNotificationTest.java │ │ └── WebNotificationDetailTest.java │ ├── openapi_schema.json │ ├── openapitools.json │ └── python/ │ ├── python_sdk_sample.ipynb │ ├── sdk/ │ │ ├── .gitignore │ │ ├── .gitlab-ci.yml │ │ ├── .openapi-generator/ │ │ │ ├── FILES │ │ │ └── VERSION │ │ ├── .openapi-generator-ignore │ │ ├── .travis.yml │ │ ├── README.md │ │ ├── docs/ │ │ │ ├── AccessTokenSchema.md │ │ │ ├── Action.md │ │ │ ├── AmountUsage.md │ │ │ ├── AnalyzeApi.md │ │ │ ├── Annotation.md │ │ │ ├── AnnotationBatchRequest.md │ │ │ ├── AnnotationBatchResponse.md │ │ │ ├── AnnotationInDocument.md │ │ │ ├── AnnotationSuggestRequest.md │ │ │ ├── AnnotationUpdateResponse.md │ │ │ ├── ApiApi.md │ │ │ ├── AppVar.md │ │ │ ├── AssignProjectAnnotationsRequest.md │ │ │ ├── AssignProjectDocumentRequest.md │ │ │ ├── AssignProjectDocumentsRequest.md │ │ │ ├── CheckDocumentFieldFormulaRequest.md │ │ │ ├── CheckNewDocumentFieldFormulaRequest.md │ │ │ ├── CitationUsage.md │ │ │ ├── CleanupProjectRequest.md │ │ │ ├── CloneDocumentFieldRequest.md │ │ │ ├── CloneDocumentTypeRequest.md │ │ │ ├── ClusterProjectRequest.md │ │ │ ├── ClusterProjectResponse.md │ │ │ ├── Code.md │ │ │ ├── CommonApi.md │ │ │ ├── CopyrightUsage.md │ │ │ ├── CountSuccessResponse.md │ │ │ ├── CourtUsage.md │ │ │ ├── CurrencyUsage.md │ │ │ ├── CustomPasswordChange.md │ │ │ ├── CustomPasswordReset.md │ │ │ ├── CustomPasswordResetConfirm.md │ │ │ ├── DateDurationUsage.md │ │ │ ├── DateUsage.md │ │ │ ├── DateUsageCalendar.md │ │ │ ├── DateUsageTimeline.md │ │ │ ├── DefinitionUsage.md │ │ │ ├── DetectProjectFieldValuesRequest.md │ │ │ ├── DistanceUsage.md │ │ │ ├── DocumentApi.md │ │ │ ├── DocumentCluster.md │ │ │ ├── DocumentClusterDocumentData.md │ │ │ ├── DocumentClusterDocumentDataInner.md │ │ │ ├── DocumentClusterUpdate.md │ │ │ ├── DocumentDefinitions.md │ │ │ ├── DocumentDetail.md │ │ │ ├── DocumentDetailAssigneeData.md │ │ │ ├── DocumentDetailAvailableAssigneesData.md │ │ │ ├── DocumentDetailAvailableAssigneesDataInner.md │ │ │ ├── DocumentDetailNotes.md │ │ │ ├── DocumentDetailStatusData.md │ │ │ ├── DocumentDetailUser.md │ │ │ ├── DocumentDocumentsDownloadZipGET404Response.md │ │ │ ├── DocumentDownloadZipResponse.md │ │ │ ├── DocumentFieldAnnotation.md │ │ │ ├── DocumentFieldCategoryCreate.md │ │ │ ├── DocumentFieldCategoryList.md │ │ │ ├── DocumentFieldCategoryListFields.md │ │ │ ├── DocumentFieldCategoryListFieldsInner.md │ │ │ ├── DocumentFieldCreate.md │ │ │ ├── DocumentFieldDetail.md │ │ │ ├── DocumentFieldDetectorCreate.md │ │ │ ├── DocumentFieldDetectorDetail.md │ │ │ ├── DocumentFieldList.md │ │ │ ├── DocumentFieldListCategory.md │ │ │ ├── DocumentFieldListFamily.md │ │ │ ├── DocumentFieldStatsResponse.md │ │ │ ├── DocumentFieldValue.md │ │ │ ├── DocumentNoteCreate.md │ │ │ ├── DocumentNoteDetail.md │ │ │ ├── DocumentNoteDetailUser.md │ │ │ ├── DocumentNoteUpdate.md │ │ │ ├── DocumentPDFRepr.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequest.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceRequestFirstLettersInner.md │ │ │ ├── DocumentSetAnnotatorCoordinatesDifferenceResponse.md │ │ │ ├── DocumentSimilarity.md │ │ │ ├── DocumentSimilarityByFeaturesForm.md │ │ │ ├── DocumentSimilarityRun.md │ │ │ ├── DocumentTypeCreate.md │ │ │ ├── DocumentTypeDetail.md │ │ │ ├── DocumentTypeDetailCategories.md │ │ │ ├── DocumentTypeDetailCategoriesInner.md │ │ │ ├── DocumentTypeDetailFieldsData.md │ │ │ ├── DocumentTypeDetailFieldsDataInner.md │ │ │ ├── DocumentTypeForStats.md │ │ │ ├── DocumentTypeImportRequest.md │ │ │ ├── DocumentTypeImportResponse.md │ │ │ ├── DocumentTypeStats.md │ │ │ ├── DocumentTypeStatsData.md │ │ │ ├── DocumentsForUser.md │ │ │ ├── DocumentsForUserResponse.md │ │ │ ├── DocumentsForUserResponseData.md │ │ │ ├── DocumentsForUserResponseDataInner.md │ │ │ ├── DumpApi.md │ │ │ ├── DumpDocumentConfigGET200Response.md │ │ │ ├── DumpFixture.md │ │ │ ├── DumpPUTErrorResponse.md │ │ │ ├── ExtractApi.md │ │ │ ├── FieldAnnotationStatus.md │ │ │ ├── GeoAliasUsage.md │ │ │ ├── GeoEntityList.md │ │ │ ├── GeoEntityUpdate.md │ │ │ ├── GeoEntityUsage.md │ │ │ ├── InlineResponse400.md │ │ │ ├── InlineResponse404.md │ │ │ ├── InlineResponse4041.md │ │ │ ├── LoadFixture.md │ │ │ ├── LocateItemsRequest.md │ │ │ ├── LoggingAPIViewRequest.md │ │ │ ├── LoggingApi.md │ │ │ ├── Login.md │ │ │ ├── LoginResponse.md │ │ │ ├── MLModel.md │ │ │ ├── MarkForSeenWebNotificationRequest.md │ │ │ ├── MarkForSeenWebNotificationResponse.md │ │ │ ├── MarkUnmarkForDeleteDocumentsRequest.md │ │ │ ├── MarkUnmarkForDeleteDocumentsResponse.md │ │ │ ├── MarkUnmarkForDeleteProjectsReponse.md │ │ │ ├── MarkUnmarkForDeleteProjectsRequest.md │ │ │ ├── MediaDataApi.md │ │ │ ├── MenuGroup.md │ │ │ ├── MenuItem.md │ │ │ ├── NotificationsApi.md │ │ │ ├── Party.md │ │ │ ├── PartySimilarity.md │ │ │ ├── PartySimilarityForm.md │ │ │ ├── PartyUsage.md │ │ │ ├── PercentUsage.md │ │ │ ├── ProjectActiveTasks.md │ │ │ ├── ProjectActiveTasksTasks.md │ │ │ ├── ProjectAnnotationsAssigneesResponse.md │ │ │ ├── ProjectApi.md │ │ │ ├── ProjectAppVar.md │ │ │ ├── ProjectClustering.md │ │ │ ├── ProjectClusteringDocumentClusters.md │ │ │ ├── ProjectClusteringDocumentClustersInner.md │ │ │ ├── ProjectClusteringStatusResponse.md │ │ │ ├── ProjectCreate.md │ │ │ ├── ProjectDetail.md │ │ │ ├── ProjectDetailOwnersData.md │ │ │ ├── ProjectDetailOwnersDataInner.md │ │ │ ├── ProjectDocumentSimilarity.md │ │ │ ├── ProjectDocumentSimilarityResponse.md │ │ │ ├── ProjectDocumentSimilarityResponseData.md │ │ │ ├── ProjectDocumentSimilarityResponseDataInner.md │ │ │ ├── ProjectDocumentsAssigneesResponse.md │ │ │ ├── ProjectDocumentsSimilarityByVectorsForm.md │ │ │ ├── ProjectList.md │ │ │ ├── ProjectListStatusData.md │ │ │ ├── ProjectListTypeData.md │ │ │ ├── ProjectProgressResponse.md │ │ │ ├── ProjectProjectsIdAssignAnnotationsPOST404Response.md │ │ │ ├── ProjectProjectsIdSetAnnotationStatusPOST200Response.md │ │ │ ├── ProjectSearchSimilarDocumentsRequest.md │ │ │ ├── ProjectSearchSimilarTextUnitsRequest.md │ │ │ ├── ProjectStats.md │ │ │ ├── ProjectTasks.md │ │ │ ├── ProjectTextUnitSimilarity.md │ │ │ ├── ProjectTextUnitsSimilarityByVectorsForm.md │ │ │ ├── ProjectUpdate.md │ │ │ ├── ProjectUploadSessionFilesResponse.md │ │ │ ├── ProjectUploadSessionPOSTResponse.md │ │ │ ├── ProjectUploadSessionProgressResponse.md │ │ │ ├── RatioUsage.md │ │ │ ├── RawdbApi.md │ │ │ ├── RawdbDocumentsPOSTRequest.md │ │ │ ├── Register.md │ │ │ ├── RegulationUsage.md │ │ │ ├── RestAuthApi.md │ │ │ ├── RestAuthCommonResponse.md │ │ │ ├── ReviewStatus.md │ │ │ ├── ReviewStatusDetail.md │ │ │ ├── ReviewStatusDetailGroupData.md │ │ │ ├── ReviewStatusGroup.md │ │ │ ├── SelectProjectsRequest.md │ │ │ ├── SelectProjectsResponse.md │ │ │ ├── SendClusterToProjectRequest.md │ │ │ ├── SetProjectAnnotationsStatusAsyncResponse.md │ │ │ ├── SetProjectAnnotationsStatusRequest.md │ │ │ ├── SetProjectDocumentsStatusRequest.md │ │ │ ├── SimilarProjectTextUnitsRequest.md │ │ │ ├── SimilarityApi.md │ │ │ ├── SimilarityForm.md │ │ │ ├── SimilarityPOSTObjectResponse.md │ │ │ ├── SimilarityRun.md │ │ │ ├── SocialAccountsResponse.md │ │ │ ├── SocialAccountsResponseSocialAccounts.md │ │ │ ├── SocialClientList.md │ │ │ ├── SocialClientListUrls.md │ │ │ ├── SocialLogin.md │ │ │ ├── Task.md │ │ │ ├── TaskApi.md │ │ │ ├── TaskIdResponse.md │ │ │ ├── TaskLogResponse.md │ │ │ ├── TaskLogResponseRecords.md │ │ │ ├── TaskQueue.md │ │ │ ├── TaskQueueDocumentsData.md │ │ │ ├── TaskQueueDocumentsDataInner.md │ │ │ ├── TaskQueueReviewersData.md │ │ │ ├── TaskQueueReviewersDataInner.md │ │ │ ├── TermTag.md │ │ │ ├── TermUsage.md │ │ │ ├── TextUnitClassification.md │ │ │ ├── TextUnitClassificationCreate.md │ │ │ ├── TextUnitClassifier.md │ │ │ ├── TextUnitClassifierSuggestion.md │ │ │ ├── TextUnitCluster.md │ │ │ ├── TextUnitDjangoQL.md │ │ │ ├── TextUnitSimilarity.md │ │ │ ├── TextUnitSimilarityByFeaturesForm.md │ │ │ ├── TrademarkUsage.md │ │ │ ├── Transformer.md │ │ │ ├── TusApi.md │ │ │ ├── TusUploadSessionUploadSessionIdUploadPOST400Response.md │ │ │ ├── Typeahead.md │ │ │ ├── UpdateProjectDocumentsFieldsRequest.md │ │ │ ├── UpdateProjectDocumentsFieldsResponse.md │ │ │ ├── Upload.md │ │ │ ├── UploadSessionBatchUploadRequest.md │ │ │ ├── UploadSessionCreate.md │ │ │ ├── UploadSessionDeleteFileRequest.md │ │ │ ├── UploadSessionDetail.md │ │ │ ├── UploadSessionUpdate.md │ │ │ ├── UrlUsage.md │ │ │ ├── User.md │ │ │ ├── UserProfile.md │ │ │ ├── UserStats.md │ │ │ ├── UsersApi.md │ │ │ ├── V1Api.md │ │ │ ├── VarApi.md │ │ │ ├── VerifyAuthTokenRequest.md │ │ │ ├── VerifyAuthTokenResponse.md │ │ │ ├── VerifyEmail.md │ │ │ ├── WebNotificationDetail.md │ │ │ └── WebNotificationDetailNotification.md │ │ ├── git_push.sh │ │ ├── openapi_client/ │ │ │ ├── __init__.py │ │ │ ├── api/ │ │ │ │ ├── __init__.py │ │ │ │ ├── analyze_api.py │ │ │ │ ├── api_api.py │ │ │ │ ├── common_api.py │ │ │ │ ├── document_api.py │ │ │ │ ├── dump_api.py │ │ │ │ ├── extract_api.py │ │ │ │ ├── logging_api.py │ │ │ │ ├── media_data_api.py │ │ │ │ ├── notifications_api.py │ │ │ │ ├── project_api.py │ │ │ │ ├── rawdb_api.py │ │ │ │ ├── rest_auth_api.py │ │ │ │ ├── similarity_api.py │ │ │ │ ├── task_api.py │ │ │ │ ├── tus_api.py │ │ │ │ ├── users_api.py │ │ │ │ ├── v1_api.py │ │ │ │ └── var_api.py │ │ │ ├── api_client.py │ │ │ ├── apis/ │ │ │ │ └── __init__.py │ │ │ ├── configuration.py │ │ │ ├── exceptions.py │ │ │ ├── model/ │ │ │ │ ├── __init__.py │ │ │ │ ├── access_token_schema.py │ │ │ │ ├── action.py │ │ │ │ ├── amount_usage.py │ │ │ │ ├── annotation.py │ │ │ │ ├── annotation_batch_request.py │ │ │ │ ├── annotation_batch_response.py │ │ │ │ ├── annotation_in_document.py │ │ │ │ ├── annotation_suggest_request.py │ │ │ │ ├── annotation_update_response.py │ │ │ │ ├── app_var.py │ │ │ │ ├── assign_project_annotations_request.py │ │ │ │ ├── assign_project_document_request.py │ │ │ │ ├── assign_project_documents_request.py │ │ │ │ ├── check_document_field_formula_request.py │ │ │ │ ├── check_new_document_field_formula_request.py │ │ │ │ ├── citation_usage.py │ │ │ │ ├── cleanup_project_request.py │ │ │ │ ├── clone_document_field_request.py │ │ │ │ ├── clone_document_type_request.py │ │ │ │ ├── cluster_project_request.py │ │ │ │ ├── cluster_project_response.py │ │ │ │ ├── code.py │ │ │ │ ├── copyright_usage.py │ │ │ │ ├── count_success_response.py │ │ │ │ ├── court_usage.py │ │ │ │ ├── currency_usage.py │ │ │ │ ├── custom_password_change.py │ │ │ │ ├── custom_password_reset.py │ │ │ │ ├── custom_password_reset_confirm.py │ │ │ │ ├── date_duration_usage.py │ │ │ │ ├── date_usage.py │ │ │ │ ├── date_usage_calendar.py │ │ │ │ ├── date_usage_timeline.py │ │ │ │ ├── definition_usage.py │ │ │ │ ├── detect_project_field_values_request.py │ │ │ │ ├── distance_usage.py │ │ │ │ ├── document_cluster.py │ │ │ │ ├── document_cluster_document_data.py │ │ │ │ ├── document_cluster_document_data_inner.py │ │ │ │ ├── document_cluster_update.py │ │ │ │ ├── document_definitions.py │ │ │ │ ├── document_detail.py │ │ │ │ ├── document_detail_assignee_data.py │ │ │ │ ├── document_detail_available_assignees_data.py │ │ │ │ ├── document_detail_available_assignees_data_inner.py │ │ │ │ ├── document_detail_notes.py │ │ │ │ ├── document_detail_status_data.py │ │ │ │ ├── document_detail_user.py │ │ │ │ ├── document_documents_download_zip_get404_response.py │ │ │ │ ├── document_download_zip_response.py │ │ │ │ ├── document_field_annotation.py │ │ │ │ ├── document_field_category_create.py │ │ │ │ ├── document_field_category_list.py │ │ │ │ ├── document_field_category_list_fields.py │ │ │ │ ├── document_field_category_list_fields_inner.py │ │ │ │ ├── document_field_create.py │ │ │ │ ├── document_field_detail.py │ │ │ │ ├── document_field_detector_create.py │ │ │ │ ├── document_field_detector_detail.py │ │ │ │ ├── document_field_list.py │ │ │ │ ├── document_field_list_category.py │ │ │ │ ├── document_field_list_family.py │ │ │ │ ├── document_field_stats_response.py │ │ │ │ ├── document_field_value.py │ │ │ │ ├── document_note_create.py │ │ │ │ ├── document_note_detail.py │ │ │ │ ├── document_note_detail_user.py │ │ │ │ ├── document_note_update.py │ │ │ │ ├── document_pdf_repr.py │ │ │ │ ├── document_set_annotator_coordinates_difference_request.py │ │ │ │ ├── document_set_annotator_coordinates_difference_request_first_letters_inner.py │ │ │ │ ├── document_set_annotator_coordinates_difference_response.py │ │ │ │ ├── document_similarity.py │ │ │ │ ├── document_similarity_by_features_form.py │ │ │ │ ├── document_similarity_run.py │ │ │ │ ├── document_type_create.py │ │ │ │ ├── document_type_detail.py │ │ │ │ ├── document_type_detail_categories.py │ │ │ │ ├── document_type_detail_categories_inner.py │ │ │ │ ├── document_type_detail_fields_data.py │ │ │ │ ├── document_type_detail_fields_data_inner.py │ │ │ │ ├── document_type_for_stats.py │ │ │ │ ├── document_type_import_request.py │ │ │ │ ├── document_type_import_response.py │ │ │ │ ├── document_type_stats.py │ │ │ │ ├── document_type_stats_data.py │ │ │ │ ├── documents_for_user.py │ │ │ │ ├── documents_for_user_response.py │ │ │ │ ├── documents_for_user_response_data.py │ │ │ │ ├── documents_for_user_response_data_inner.py │ │ │ │ ├── dump_document_config_get200_response.py │ │ │ │ ├── dump_fixture.py │ │ │ │ ├── dump_put_error_response.py │ │ │ │ ├── field_annotation_status.py │ │ │ │ ├── geo_alias_usage.py │ │ │ │ ├── geo_entity_list.py │ │ │ │ ├── geo_entity_update.py │ │ │ │ ├── geo_entity_usage.py │ │ │ │ ├── inline_response400.py │ │ │ │ ├── inline_response404.py │ │ │ │ ├── inline_response4041.py │ │ │ │ ├── load_fixture.py │ │ │ │ ├── locate_items_request.py │ │ │ │ ├── logging_api_view_request.py │ │ │ │ ├── login.py │ │ │ │ ├── login_response.py │ │ │ │ ├── mark_for_seen_web_notification_request.py │ │ │ │ ├── mark_for_seen_web_notification_response.py │ │ │ │ ├── mark_unmark_for_delete_documents_request.py │ │ │ │ ├── mark_unmark_for_delete_documents_response.py │ │ │ │ ├── mark_unmark_for_delete_projects_reponse.py │ │ │ │ ├── mark_unmark_for_delete_projects_request.py │ │ │ │ ├── menu_group.py │ │ │ │ ├── menu_item.py │ │ │ │ ├── ml_model.py │ │ │ │ ├── party.py │ │ │ │ ├── party_similarity.py │ │ │ │ ├── party_similarity_form.py │ │ │ │ ├── party_usage.py │ │ │ │ ├── percent_usage.py │ │ │ │ ├── project_active_tasks.py │ │ │ │ ├── project_active_tasks_tasks.py │ │ │ │ ├── project_annotations_assignees_response.py │ │ │ │ ├── project_app_var.py │ │ │ │ ├── project_clustering.py │ │ │ │ ├── project_clustering_document_clusters.py │ │ │ │ ├── project_clustering_document_clusters_inner.py │ │ │ │ ├── project_clustering_status_response.py │ │ │ │ ├── project_create.py │ │ │ │ ├── project_detail.py │ │ │ │ ├── project_detail_owners_data.py │ │ │ │ ├── project_detail_owners_data_inner.py │ │ │ │ ├── project_document_similarity.py │ │ │ │ ├── project_document_similarity_response.py │ │ │ │ ├── project_document_similarity_response_data.py │ │ │ │ ├── project_document_similarity_response_data_inner.py │ │ │ │ ├── project_documents_assignees_response.py │ │ │ │ ├── project_documents_similarity_by_vectors_form.py │ │ │ │ ├── project_list.py │ │ │ │ ├── project_list_status_data.py │ │ │ │ ├── project_list_type_data.py │ │ │ │ ├── project_progress_response.py │ │ │ │ ├── project_projects_id_assign_annotations_post404_response.py │ │ │ │ ├── project_projects_id_set_annotation_status_post200_response.py │ │ │ │ ├── project_search_similar_documents_request.py │ │ │ │ ├── project_search_similar_text_units_request.py │ │ │ │ ├── project_stats.py │ │ │ │ ├── project_tasks.py │ │ │ │ ├── project_text_unit_similarity.py │ │ │ │ ├── project_text_units_similarity_by_vectors_form.py │ │ │ │ ├── project_update.py │ │ │ │ ├── project_upload_session_files_response.py │ │ │ │ ├── project_upload_session_post_response.py │ │ │ │ ├── project_upload_session_progress_response.py │ │ │ │ ├── ratio_usage.py │ │ │ │ ├── rawdb_documents_post_request.py │ │ │ │ ├── register.py │ │ │ │ ├── regulation_usage.py │ │ │ │ ├── rest_auth_common_response.py │ │ │ │ ├── review_status.py │ │ │ │ ├── review_status_detail.py │ │ │ │ ├── review_status_detail_group_data.py │ │ │ │ ├── review_status_group.py │ │ │ │ ├── select_projects_request.py │ │ │ │ ├── select_projects_response.py │ │ │ │ ├── send_cluster_to_project_request.py │ │ │ │ ├── set_project_annotations_status_async_response.py │ │ │ │ ├── set_project_annotations_status_request.py │ │ │ │ ├── set_project_documents_status_request.py │ │ │ │ ├── similar_project_text_units_request.py │ │ │ │ ├── similarity_form.py │ │ │ │ ├── similarity_post_object_response.py │ │ │ │ ├── similarity_run.py │ │ │ │ ├── social_accounts_response.py │ │ │ │ ├── social_accounts_response_social_accounts.py │ │ │ │ ├── social_client_list.py │ │ │ │ ├── social_client_list_urls.py │ │ │ │ ├── social_login.py │ │ │ │ ├── task.py │ │ │ │ ├── task_id_response.py │ │ │ │ ├── task_log_response.py │ │ │ │ ├── task_log_response_records.py │ │ │ │ ├── task_queue.py │ │ │ │ ├── task_queue_documents_data.py │ │ │ │ ├── task_queue_documents_data_inner.py │ │ │ │ ├── task_queue_reviewers_data.py │ │ │ │ ├── task_queue_reviewers_data_inner.py │ │ │ │ ├── term_tag.py │ │ │ │ ├── term_usage.py │ │ │ │ ├── text_unit_classification.py │ │ │ │ ├── text_unit_classification_create.py │ │ │ │ ├── text_unit_classifier.py │ │ │ │ ├── text_unit_classifier_suggestion.py │ │ │ │ ├── text_unit_cluster.py │ │ │ │ ├── text_unit_django_ql.py │ │ │ │ ├── text_unit_similarity.py │ │ │ │ ├── text_unit_similarity_by_features_form.py │ │ │ │ ├── trademark_usage.py │ │ │ │ ├── transformer.py │ │ │ │ ├── tus_upload_session_upload_session_id_upload_post400_response.py │ │ │ │ ├── typeahead.py │ │ │ │ ├── update_project_documents_fields_request.py │ │ │ │ ├── update_project_documents_fields_response.py │ │ │ │ ├── upload.py │ │ │ │ ├── upload_session_batch_upload_request.py │ │ │ │ ├── upload_session_create.py │ │ │ │ ├── upload_session_delete_file_request.py │ │ │ │ ├── upload_session_detail.py │ │ │ │ ├── upload_session_update.py │ │ │ │ ├── url_usage.py │ │ │ │ ├── user.py │ │ │ │ ├── user_profile.py │ │ │ │ ├── user_stats.py │ │ │ │ ├── verify_auth_token_request.py │ │ │ │ ├── verify_auth_token_response.py │ │ │ │ ├── verify_email.py │ │ │ │ ├── web_notification_detail.py │ │ │ │ └── web_notification_detail_notification.py │ │ │ ├── model_utils.py │ │ │ ├── models/ │ │ │ │ └── __init__.py │ │ │ └── rest.py │ │ ├── requirements.txt │ │ ├── setup.cfg │ │ ├── setup.py │ │ ├── test/ │ │ │ ├── __init__.py │ │ │ ├── test_access_token_schema.py │ │ │ ├── test_action.py │ │ │ ├── test_amount_usage.py │ │ │ ├── test_analyze_api.py │ │ │ ├── test_annotation.py │ │ │ ├── test_annotation_batch_request.py │ │ │ ├── test_annotation_batch_response.py │ │ │ ├── test_annotation_in_document.py │ │ │ ├── test_annotation_suggest_request.py │ │ │ ├── test_annotation_update_response.py │ │ │ ├── test_api_api.py │ │ │ ├── test_app_var.py │ │ │ ├── test_assign_project_annotations_request.py │ │ │ ├── test_assign_project_document_request.py │ │ │ ├── test_assign_project_documents_request.py │ │ │ ├── test_check_document_field_formula_request.py │ │ │ ├── test_check_new_document_field_formula_request.py │ │ │ ├── test_citation_usage.py │ │ │ ├── test_cleanup_project_request.py │ │ │ ├── test_clone_document_field_request.py │ │ │ ├── test_clone_document_type_request.py │ │ │ ├── test_cluster_project_request.py │ │ │ ├── test_cluster_project_response.py │ │ │ ├── test_code.py │ │ │ ├── test_common_api.py │ │ │ ├── test_copyright_usage.py │ │ │ ├── test_count_success_response.py │ │ │ ├── test_court_usage.py │ │ │ ├── test_currency_usage.py │ │ │ ├── test_custom_password_change.py │ │ │ ├── test_custom_password_reset.py │ │ │ ├── test_custom_password_reset_confirm.py │ │ │ ├── test_date_duration_usage.py │ │ │ ├── test_date_usage.py │ │ │ ├── test_date_usage_calendar.py │ │ │ ├── test_date_usage_timeline.py │ │ │ ├── test_definition_usage.py │ │ │ ├── test_detect_project_field_values_request.py │ │ │ ├── test_distance_usage.py │ │ │ ├── test_document_api.py │ │ │ ├── test_document_cluster.py │ │ │ ├── test_document_cluster_document_data.py │ │ │ ├── test_document_cluster_document_data_inner.py │ │ │ ├── test_document_cluster_update.py │ │ │ ├── test_document_definitions.py │ │ │ ├── test_document_detail.py │ │ │ ├── test_document_detail_assignee_data.py │ │ │ ├── test_document_detail_available_assignees_data.py │ │ │ ├── test_document_detail_available_assignees_data_inner.py │ │ │ ├── test_document_detail_notes.py │ │ │ ├── test_document_detail_status_data.py │ │ │ ├── test_document_detail_user.py │ │ │ ├── test_document_documents_download_zip_get404_response.py │ │ │ ├── test_document_download_zip_response.py │ │ │ ├── test_document_field_annotation.py │ │ │ ├── test_document_field_category_create.py │ │ │ ├── test_document_field_category_list.py │ │ │ ├── test_document_field_category_list_fields.py │ │ │ ├── test_document_field_category_list_fields_inner.py │ │ │ ├── test_document_field_create.py │ │ │ ├── test_document_field_detail.py │ │ │ ├── test_document_field_detector_create.py │ │ │ ├── test_document_field_detector_detail.py │ │ │ ├── test_document_field_list.py │ │ │ ├── test_document_field_list_category.py │ │ │ ├── test_document_field_list_family.py │ │ │ ├── test_document_field_stats_response.py │ │ │ ├── test_document_field_value.py │ │ │ ├── test_document_note_create.py │ │ │ ├── test_document_note_detail.py │ │ │ ├── test_document_note_detail_user.py │ │ │ ├── test_document_note_update.py │ │ │ ├── test_document_pdf_repr.py │ │ │ ├── test_document_set_annotator_coordinates_difference_request.py │ │ │ ├── test_document_set_annotator_coordinates_difference_request_first_letters_inner.py │ │ │ ├── test_document_set_annotator_coordinates_difference_response.py │ │ │ ├── test_document_similarity.py │ │ │ ├── test_document_similarity_by_features_form.py │ │ │ ├── test_document_similarity_run.py │ │ │ ├── test_document_type_create.py │ │ │ ├── test_document_type_detail.py │ │ │ ├── test_document_type_detail_categories.py │ │ │ ├── test_document_type_detail_categories_inner.py │ │ │ ├── test_document_type_detail_fields_data.py │ │ │ ├── test_document_type_detail_fields_data_inner.py │ │ │ ├── test_document_type_for_stats.py │ │ │ ├── test_document_type_import_request.py │ │ │ ├── test_document_type_import_response.py │ │ │ ├── test_document_type_stats.py │ │ │ ├── test_document_type_stats_data.py │ │ │ ├── test_documents_for_user.py │ │ │ ├── test_documents_for_user_response.py │ │ │ ├── test_documents_for_user_response_data.py │ │ │ ├── test_documents_for_user_response_data_inner.py │ │ │ ├── test_dump_api.py │ │ │ ├── test_dump_document_config_get200_response.py │ │ │ ├── test_dump_fixture.py │ │ │ ├── test_dump_put_error_response.py │ │ │ ├── test_extract_api.py │ │ │ ├── test_field_annotation_status.py │ │ │ ├── test_geo_alias_usage.py │ │ │ ├── test_geo_entity_list.py │ │ │ ├── test_geo_entity_update.py │ │ │ ├── test_geo_entity_usage.py │ │ │ ├── test_inline_response400.py │ │ │ ├── test_inline_response404.py │ │ │ ├── test_inline_response4041.py │ │ │ ├── test_load_fixture.py │ │ │ ├── test_locate_items_request.py │ │ │ ├── test_logging_api.py │ │ │ ├── test_logging_api_view_request.py │ │ │ ├── test_login.py │ │ │ ├── test_login_response.py │ │ │ ├── test_mark_for_seen_web_notification_request.py │ │ │ ├── test_mark_for_seen_web_notification_response.py │ │ │ ├── test_mark_unmark_for_delete_documents_request.py │ │ │ ├── test_mark_unmark_for_delete_documents_response.py │ │ │ ├── test_mark_unmark_for_delete_projects_reponse.py │ │ │ ├── test_mark_unmark_for_delete_projects_request.py │ │ │ ├── test_media_data_api.py │ │ │ ├── test_menu_group.py │ │ │ ├── test_menu_item.py │ │ │ ├── test_ml_model.py │ │ │ ├── test_notifications_api.py │ │ │ ├── test_party.py │ │ │ ├── test_party_similarity.py │ │ │ ├── test_party_similarity_form.py │ │ │ ├── test_party_usage.py │ │ │ ├── test_percent_usage.py │ │ │ ├── test_project_active_tasks.py │ │ │ ├── test_project_active_tasks_tasks.py │ │ │ ├── test_project_annotations_assignees_response.py │ │ │ ├── test_project_api.py │ │ │ ├── test_project_app_var.py │ │ │ ├── test_project_clustering.py │ │ │ ├── test_project_clustering_document_clusters.py │ │ │ ├── test_project_clustering_document_clusters_inner.py │ │ │ ├── test_project_clustering_status_response.py │ │ │ ├── test_project_create.py │ │ │ ├── test_project_detail.py │ │ │ ├── test_project_detail_owners_data.py │ │ │ ├── test_project_detail_owners_data_inner.py │ │ │ ├── test_project_document_similarity.py │ │ │ ├── test_project_document_similarity_response.py │ │ │ ├── test_project_document_similarity_response_data.py │ │ │ ├── test_project_document_similarity_response_data_inner.py │ │ │ ├── test_project_documents_assignees_response.py │ │ │ ├── test_project_documents_similarity_by_vectors_form.py │ │ │ ├── test_project_list.py │ │ │ ├── test_project_list_status_data.py │ │ │ ├── test_project_list_type_data.py │ │ │ ├── test_project_progress_response.py │ │ │ ├── test_project_projects_id_assign_annotations_post404_response.py │ │ │ ├── test_project_projects_id_set_annotation_status_post200_response.py │ │ │ ├── test_project_search_similar_documents_request.py │ │ │ ├── test_project_search_similar_text_units_request.py │ │ │ ├── test_project_stats.py │ │ │ ├── test_project_tasks.py │ │ │ ├── test_project_text_unit_similarity.py │ │ │ ├── test_project_text_units_similarity_by_vectors_form.py │ │ │ ├── test_project_update.py │ │ │ ├── test_project_upload_session_files_response.py │ │ │ ├── test_project_upload_session_post_response.py │ │ │ ├── test_project_upload_session_progress_response.py │ │ │ ├── test_ratio_usage.py │ │ │ ├── test_rawdb_api.py │ │ │ ├── test_rawdb_documents_post_request.py │ │ │ ├── test_register.py │ │ │ ├── test_regulation_usage.py │ │ │ ├── test_rest_auth_api.py │ │ │ ├── test_rest_auth_common_response.py │ │ │ ├── test_review_status.py │ │ │ ├── test_review_status_detail.py │ │ │ ├── test_review_status_detail_group_data.py │ │ │ ├── test_review_status_group.py │ │ │ ├── test_select_projects_request.py │ │ │ ├── test_select_projects_response.py │ │ │ ├── test_send_cluster_to_project_request.py │ │ │ ├── test_set_project_annotations_status_async_response.py │ │ │ ├── test_set_project_annotations_status_request.py │ │ │ ├── test_set_project_documents_status_request.py │ │ │ ├── test_similar_project_text_units_request.py │ │ │ ├── test_similarity_api.py │ │ │ ├── test_similarity_form.py │ │ │ ├── test_similarity_post_object_response.py │ │ │ ├── test_similarity_run.py │ │ │ ├── test_social_accounts_response.py │ │ │ ├── test_social_accounts_response_social_accounts.py │ │ │ ├── test_social_client_list.py │ │ │ ├── test_social_client_list_urls.py │ │ │ ├── test_social_login.py │ │ │ ├── test_task.py │ │ │ ├── test_task_api.py │ │ │ ├── test_task_id_response.py │ │ │ ├── test_task_log_response.py │ │ │ ├── test_task_log_response_records.py │ │ │ ├── test_task_queue.py │ │ │ ├── test_task_queue_documents_data.py │ │ │ ├── test_task_queue_documents_data_inner.py │ │ │ ├── test_task_queue_reviewers_data.py │ │ │ ├── test_task_queue_reviewers_data_inner.py │ │ │ ├── test_term_tag.py │ │ │ ├── test_term_usage.py │ │ │ ├── test_text_unit_classification.py │ │ │ ├── test_text_unit_classification_create.py │ │ │ ├── test_text_unit_classifier.py │ │ │ ├── test_text_unit_classifier_suggestion.py │ │ │ ├── test_text_unit_cluster.py │ │ │ ├── test_text_unit_django_ql.py │ │ │ ├── test_text_unit_similarity.py │ │ │ ├── test_text_unit_similarity_by_features_form.py │ │ │ ├── test_trademark_usage.py │ │ │ ├── test_transformer.py │ │ │ ├── test_tus_api.py │ │ │ ├── test_tus_upload_session_upload_session_id_upload_post400_response.py │ │ │ ├── test_typeahead.py │ │ │ ├── test_update_project_documents_fields_request.py │ │ │ ├── test_update_project_documents_fields_response.py │ │ │ ├── test_upload.py │ │ │ ├── test_upload_session_batch_upload_request.py │ │ │ ├── test_upload_session_create.py │ │ │ ├── test_upload_session_delete_file_request.py │ │ │ ├── test_upload_session_detail.py │ │ │ ├── test_upload_session_update.py │ │ │ ├── test_url_usage.py │ │ │ ├── test_user.py │ │ │ ├── test_user_profile.py │ │ │ ├── test_user_stats.py │ │ │ ├── test_users_api.py │ │ │ ├── test_v1_api.py │ │ │ ├── test_var_api.py │ │ │ ├── test_verify_auth_token_request.py │ │ │ ├── test_verify_auth_token_response.py │ │ │ ├── test_verify_email.py │ │ │ ├── test_web_notification_detail.py │ │ │ └── test_web_notification_detail_notification.py │ │ ├── test-requirements.txt │ │ └── tox.ini │ └── tests/ │ ├── .gitignore │ ├── README │ ├── __init__.py │ ├── common/ │ │ ├── __init__.py │ │ └── test_app_vars.py │ ├── config.py │ ├── document/ │ │ └── __init__.py │ ├── project/ │ │ ├── __init__.py │ │ ├── data/ │ │ │ └── doc1.txt │ │ ├── test_document_upload.py │ │ ├── test_project_crud.py │ │ ├── test_upload_session.py │ │ └── utils.py │ ├── rest_auth/ │ │ ├── __init__.py │ │ └── test_login.py │ └── utils.py ├── static/ │ ├── css/ │ │ ├──
Showing preview only (3,563K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (36680 symbols across 2483 files)
FILE: contraxsuite_services/apps/analyze/admin.py
class DocumentClusterAdmin (line 61) | class DocumentClusterAdmin(admin.ModelAdmin):
class TextUnitClusterAdmin (line 66) | class TextUnitClusterAdmin(DocumentClusterAdmin):
class SimilarityRunAdmin (line 70) | class SimilarityRunAdmin(admin.ModelAdmin):
class DocumentSimilarityAdmin (line 75) | class DocumentSimilarityAdmin(admin.ModelAdmin):
method get_queryset (line 79) | def get_queryset(self, request):
class PartySimilarityAdmin (line 86) | class PartySimilarityAdmin(admin.ModelAdmin):
class TextUnitSimilarityAdmin (line 91) | class TextUnitSimilarityAdmin(admin.ModelAdmin):
method document_a_name (line 99) | def document_a_name(self, obj):
method document_b_name (line 102) | def document_b_name(self, obj):
method get_queryset (line 105) | def get_queryset(self, request):
method get_search_fields (line 113) | def get_search_fields(self, request):
class DocumentClassificationAdmin (line 120) | class DocumentClassificationAdmin(admin.ModelAdmin):
method get_queryset (line 124) | def get_queryset(self, request):
class DocumentClassifierAdmin (line 131) | class DocumentClassifierAdmin(admin.ModelAdmin):
method get_queryset (line 135) | def get_queryset(self, request):
class DocumentClassifierSuggestionAdmin (line 141) | class DocumentClassifierSuggestionAdmin(admin.ModelAdmin):
method get_queryset (line 146) | def get_queryset(self, request):
class TextUnitClassificationAdmin (line 154) | class TextUnitClassificationAdmin(admin.ModelAdmin):
method get_queryset (line 159) | def get_queryset(self, request):
class TextUnitClassifierAdmin (line 166) | class TextUnitClassifierAdmin(admin.ModelAdmin):
method get_queryset (line 170) | def get_queryset(self, request):
class TextUnitClassifierSuggestionAdmin (line 176) | class TextUnitClassifierSuggestionAdmin(admin.ModelAdmin):
method get_queryset (line 182) | def get_queryset(self, request):
class DocumentVectorAdmin (line 190) | class DocumentVectorAdmin(admin.ModelAdmin):
method transformer_name (line 194) | def transformer_name(self, obj):
method project (line 199) | def project(self, obj):
method get_queryset (line 204) | def get_queryset(self, request):
class TextUnitVectorAdmin (line 212) | class TextUnitVectorAdmin(admin.ModelAdmin):
method transformer_name (line 217) | def transformer_name(self, obj):
method document (line 222) | def document(self, obj):
method project (line 227) | def project(self, obj):
method get_queryset (line 232) | def get_queryset(self, request):
class MLModelChangeForm (line 240) | class MLModelChangeForm(forms.ModelForm):
class Meta (line 241) | class Meta:
method __init__ (line 245) | def __init__(self, *args, **kwargs):
method clean (line 249) | def clean(self):
class MLModelAdmin (line 255) | class MLModelAdmin(admin.ModelAdmin):
method get_form (line 264) | def get_form(self, request, obj=None, **kwargs):
method delete_with_files (line 270) | def delete_with_files(self, request, queryset):
method render_change_form (line 285) | def render_change_form(self, request, context, add=False, change=False...
method file_upload_view (line 291) | def file_upload_view(self, request, **kwargs):
method check_path_exists_view (line 343) | def check_path_exists_view(self, request, **kwargs):
method create_folder_view (line 349) | def create_folder_view(self, request, **kwargs):
method get_urls (line 387) | def get_urls(self):
FILE: contraxsuite_services/apps/analyze/api/v1.py
class TextUnitClassificationSerializer (line 66) | class TextUnitClassificationSerializer(apps.common.mixins.SimpleRelation...
class Meta (line 67) | class Meta:
class TextUnitClassificationCreateSerializer (line 75) | class TextUnitClassificationCreateSerializer(serializers.ModelSerializer):
class Meta (line 81) | class Meta:
method get_user_id (line 85) | def get_user_id(self, obj):
class TextUnitClassificationViewSet (line 90) | class TextUnitClassificationViewSet(apps.common.mixins.JqListAPIMixin, v...
method get_serializer_class (line 101) | def get_serializer_class(self):
method get_queryset (line 106) | def get_queryset(self):
class TextUnitClassifierSerializer (line 116) | class TextUnitClassifierSerializer(apps.common.mixins.SimpleRelationSeri...
class Meta (line 119) | class Meta:
method get_suggestions (line 123) | def get_suggestions(self, obj):
class TextUnitClassifierViewSet (line 128) | class TextUnitClassifierViewSet(apps.common.mixins.JqListAPIMixin, views...
class TextUnitClassifierSuggestionSerializer (line 142) | class TextUnitClassifierSuggestionSerializer(TextUnitClassificationSeria...
class Meta (line 143) | class Meta:
class TextUnitClassifierSuggestionViewSet (line 152) | class TextUnitClassifierSuggestionViewSet(apps.common.mixins.JqListAPIMi...
class DocumentSerializer (line 167) | class DocumentSerializer(apps.common.mixins.SimpleRelationSerializer):
class Meta (line 168) | class Meta:
class DocumentClusterSerializer (line 173) | class DocumentClusterSerializer(apps.common.mixins.SimpleRelationSeriali...
class Meta (line 178) | class Meta:
method get_documents_count (line 184) | def get_documents_count(self, obj):
class DocumentClusterUpdateSerializer (line 189) | class DocumentClusterUpdateSerializer(apps.common.mixins.SimpleRelationS...
class Meta (line 191) | class Meta:
class DocumentClusterAPIView (line 196) | class DocumentClusterAPIView(apps.common.mixins.JqListAPIView, viewsets....
method get_queryset (line 206) | def get_queryset(self):
method get_serializer_class (line 213) | def get_serializer_class(self):
class TextUnitClusterSerializer (line 223) | class TextUnitClusterSerializer(apps.common.mixins.SimpleRelationSeriali...
class Meta (line 227) | class Meta:
method get_text_unit_count (line 233) | def get_text_unit_count(self, obj):
method get_text_unit_data (line 237) | def get_text_unit_data(self, obj):
class TextUnitClusterListAPIView (line 247) | class TextUnitClusterListAPIView(apps.common.mixins.JqListAPIView):
method get_queryset (line 254) | def get_queryset(self):
class SimilarityRunSerializer (line 269) | class SimilarityRunSerializer(serializers.ModelSerializer):
class Meta (line 272) | class Meta:
class SimilarityRunSchema (line 279) | class SimilarityRunSchema(JqFiltersListViewSchema):
class SimilarityRunPermissions (line 295) | class SimilarityRunPermissions(IsAuthenticated):
method has_permission (line 296) | def has_permission(self, request, view):
class SimilarityRunPermissionMixin (line 306) | class SimilarityRunPermissionMixin:
method get_queryset (line 309) | def get_queryset(self):
class SimilarityRunViewSet (line 315) | class SimilarityRunViewSet(SimilarityRunPermissionMixin,
method get_queryset (line 328) | def get_queryset(self):
class DocumentSimilaritySerializer (line 345) | class DocumentSimilaritySerializer(apps.common.mixins.SimpleRelationSeri...
class Meta (line 348) | class Meta:
class DocumentSimilarityListAPIView (line 355) | class DocumentSimilarityListAPIView(apps.common.mixins.JqListAPIView):
method get_queryset (line 362) | def get_queryset(self):
class ProjectDocumentSimilaritySerializer (line 377) | class ProjectDocumentSimilaritySerializer(apps.common.mixins.SimpleRelat...
class Meta (line 383) | class Meta:
class ProjectDocumentSimilarityResponseSerializer (line 390) | class ProjectDocumentSimilarityResponseSerializer(serializers.Serializer):
class SimilarProjectDocumentsSchema (line 397) | class SimilarProjectDocumentsSchema(JqFiltersListViewSchema):
class ProjectDocumentSimilarityListPermissionViewMixin (line 418) | class ProjectDocumentSimilarityListPermissionViewMixin:
method get_queryset (line 421) | def get_queryset(self):
class ProjectDocumentSimilarityListAPIView (line 425) | class ProjectDocumentSimilarityListAPIView(ProjectDocumentSimilarityList...
method get_queryset (line 441) | def get_queryset(self):
method get_extra_data (line 470) | def get_extra_data(self, queryset, initial_queryset):
class TextUnitSimilaritySerializer (line 483) | class TextUnitSimilaritySerializer(apps.common.mixins.SimpleRelationSeri...
class Meta (line 486) | class Meta:
class TextUnitSimilarityListAPIView (line 497) | class TextUnitSimilarityListAPIView(apps.common.mixins.JqListAPIView):
method get_queryset (line 504) | def get_queryset(self):
class ProjectTextUnitSimilaritySerializer (line 521) | class ProjectTextUnitSimilaritySerializer(apps.common.mixins.SimpleRelat...
class Meta (line 528) | class Meta:
method to_representation (line 538) | def to_representation(self, instance):
class SimilarProjectTextUnitsRequestSerializer (line 543) | class SimilarProjectTextUnitsRequestSerializer(serializers.Serializer):
class ProjectTextUnitSimilarityResponseSerializer (line 555) | class ProjectTextUnitSimilarityResponseSerializer(serializers.Serializer):
class SimilarProjectTextUnitsSchema (line 562) | class SimilarProjectTextUnitsSchema(JqFiltersListViewSchema):
method get_operation (line 566) | def get_operation(self, path, method):
class ProjectTextUnitSimilarityListPermissionViewMixin (line 584) | class ProjectTextUnitSimilarityListPermissionViewMixin:
method get_queryset (line 587) | def get_queryset(self):
class ProjectTextUnitSimilarityListAPIView (line 591) | class ProjectTextUnitSimilarityListAPIView(ProjectTextUnitSimilarityList...
method post (line 607) | def post(self, request, *args, **kwargs):
method get_queryset (line 610) | def get_queryset(self):
method get_text_unit_a_ids (line 674) | def get_text_unit_a_ids(self, kwargs):
method get_extra_data (line 689) | def get_extra_data(self, queryset, initial_queryset):
method add_extra_list_data (line 696) | def add_extra_list_data(self, request, data: ReturnList):
method get_unit_location_coordinates (line 722) | def get_unit_location_coordinates(
class PartySimilaritySerializer (line 747) | class PartySimilaritySerializer(apps.common.mixins.SimpleRelationSeriali...
class Meta (line 750) | class Meta:
class PartySimilarityListAPIView (line 759) | class PartySimilarityListAPIView(apps.common.mixins.JqListAPIView):
method get_queryset (line 766) | def get_queryset(self):
class TypeaheadTextUnitClassification (line 778) | class TypeaheadTextUnitClassification(apps.common.mixins.TypeaheadAPIView):
class MLModelSerializer (line 793) | class MLModelSerializer(apps.common.mixins.SimpleRelationSerializer):
class Meta (line 794) | class Meta:
class MLModelListAPIView (line 800) | class MLModelListAPIView(apps.common.mixins.JqListAPIView):
method get_queryset (line 807) | def get_queryset(self):
class TransformerSerializer (line 816) | class TransformerSerializer(apps.common.mixins.SimpleRelationSerializer):
class Meta (line 817) | class Meta:
class DocumentTransformerListAPIView (line 822) | class DocumentTransformerListAPIView(apps.common.mixins.JqListAPIView):
class TextUnitTransformerListAPIView (line 830) | class TextUnitTransformerListAPIView(apps.common.mixins.JqListAPIView):
FILE: contraxsuite_services/apps/analyze/forms.py
class TrainDocumentDoc2VecTaskForm (line 46) | class TrainDocumentDoc2VecTaskForm(forms.Form):
method clean (line 65) | def clean(self):
class TrainTextUnitDoc2VecTaskForm (line 72) | class TrainTextUnitDoc2VecTaskForm(TrainDocumentDoc2VecTaskForm):
class BuildDocumentVectorsTaskForm (line 95) | class BuildDocumentVectorsTaskForm(forms.Form):
method __init__ (line 108) | def __init__(self, *args, **kwargs):
class BuildTextUnitVectorsTaskForm (line 126) | class BuildTextUnitVectorsTaskForm(BuildDocumentVectorsTaskForm):
method __init__ (line 137) | def __init__(self, *args, **kwargs):
class BaseRunClassifierForm (line 148) | class BaseRunClassifierForm(forms.Form):
class RunTextUnitClassifierForm (line 172) | class RunTextUnitClassifierForm(BaseRunClassifierForm):
class RunDocumentClassifierForm (line 186) | class RunDocumentClassifierForm(BaseRunClassifierForm):
class BaseTrainClassifierForm (line 217) | class BaseTrainClassifierForm(forms.Form):
method __init__ (line 361) | def __init__(self, *args, **kwargs):
method clean_svc_gamma (line 369) | def clean_svc_gamma(self):
class TrainTextUnitClassifierForm (line 378) | class TrainTextUnitClassifierForm(BaseTrainClassifierForm):
class TrainDocumentClassifierForm (line 384) | class TrainDocumentClassifierForm(BaseTrainClassifierForm):
class ClusterForm (line 391) | class ClusterForm(forms.Form):
method clean (line 534) | def clean(self):
FILE: contraxsuite_services/apps/analyze/management/commands/clear_old_transformer_models.py
class Command (line 16) | class Command(BaseCommand):
method is_successful_gensim_3_to_4_migration (line 19) | def is_successful_gensim_3_to_4_migration(self,
method update_default_mlmodel (line 31) | def update_default_mlmodel(self, object_type, languages):
method add_arguments (line 46) | def add_arguments(self, parser):
method handle (line 55) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/analyze/migrations/0001_initial.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0002_auto_20170731_0948.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0003_auto_20170731_0948.py
class Migration (line 10) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0004_auto_20171011_1613.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0005_documenttransformer_documentvector_textunittransformer_textunitvector.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0006_auto_20191203_0833.py
class Migration (line 7) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0007_auto_20191204_1255.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0008_documentclassification_documentclassifier_documentclassifierassessment_documentclassifiersuggestion_.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0009_auto_20200127_1252.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0010_transformer_unique_name.py
function make_trans_name_unique (line 6) | def make_trans_name_unique(apps, schema_editor):
class Migration (line 26) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0011_denorm_textunit_similarity.py
function purge (line 10) | def purge():
function purge_or_skip (line 15) | def purge_or_skip(_apps, _schema_editor):
class Migration (line 20) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0012_populate_textunit_similarity_fields.py
function denormalize (line 13) | def denormalize():
function update_or_skip (line 43) | def update_or_skip(_apps, _schema_editor):
class Migration (line 48) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0013_vacuum_textunit_similarity.py
function vacuum_textunit_similarity (line 11) | def vacuum_textunit_similarity(_apps, schema_editor):
class Migration (line 23) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0014_textunit_similarity_restore_constraints.py
class Migration (line 11) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0015_auto_20201209_1541.py
class Migration (line 7) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0016_auto_20201224_0846.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0017_auto_20201229_0950.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0018_auto_20210104_1313.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0019_auto_20210105_0836.py
class Migration (line 7) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0020_similarityrun_unit_id.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0021_auto_20210106_1009.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0022_load_document_transformer.py
class Migration (line 5) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0023_auto_20210323_0714.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0024_add_mlmodel.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0025_move_contracttype_classifier.py
function move_classifier (line 7) | def move_classifier(apps, schema_editor):
class Migration (line 34) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0026_auto_20210324_1247.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0027_create_transformer_db_records.py
class Migration (line 5) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0028_similarityrun_distance_type.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0029_auto_20210416_1250.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0030_auto_20210505_1344.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0031_auto_20210514_0722.py
class Migration (line 15) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0032_is_contract_migration.py
class Migration (line 5) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0033_textunitvector_document.py
class Migration (line 7) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/migrations/0034_textunitvector_unit_type.py
function log_message (line 10) | def log_message(msg: str):
function add_column (line 15) | def add_column(_, __):
class Migration (line 32) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/analyze/ml/classifier_repository.py
class ClassifierRepository (line 46) | class ClassifierRepository:
method get_fulltext_by_doc (line 47) | def get_fulltext_by_doc(self, project_ids: Iterable[int]):
method get_document_plain_texts (line 51) | def get_document_plain_texts(self,
method get_vector_document_name (line 68) | def get_vector_document_name(self, vector: DocumentVector) -> str:
method save_classifier (line 71) | def save_classifier(self,
method save_classifications (line 75) | def save_classifications(self,
method save_transformer (line 81) | def save_transformer(self,
method ensure_unique_name (line 86) | def ensure_unique_name(self, name: str, model_class) -> str:
class ClassifierRepositoryBuilder (line 98) | class ClassifierRepositoryBuilder:
method __init__ (line 99) | def __init__(self):
method repository (line 103) | def repository(self) -> ClassifierRepository:
FILE: contraxsuite_services/apps/analyze/ml/classify.py
class ClassifierEngine (line 88) | class ClassifierEngine:
method __init__ (line 100) | def __init__(self):
method __call__ (line 105) | def __call__(self, use_tfidf: bool = True, **options):
method get_engine_options (line 117) | def get_engine_options(self):
method get_some_callable_option (line 146) | def get_some_callable_option(self, option_value=None):
method get_model (line 151) | def get_model(self):
class RandomForestClassifierEngine (line 164) | class RandomForestClassifierEngine(ClassifierEngine):
class ExtraTreesClassifierEngine (line 174) | class ExtraTreesClassifierEngine(ClassifierEngine):
class MultinomialNBEngine (line 184) | class MultinomialNBEngine(ClassifierEngine):
class SVCEngine (line 191) | class SVCEngine(ClassifierEngine):
class LogisticRegressionCVEngine (line 201) | class LogisticRegressionCVEngine(ClassifierEngine):
class ClassifyDocuments (line 210) | class ClassifyDocuments:
method get_features_engine_class (line 246) | def get_features_engine_class(cls, classify_by: Optional[str]):
method get_engine_wrapper (line 249) | def get_engine_wrapper(self, classifier_algorithm):
method build_classifier (line 264) | def build_classifier(self,
method run_classifier (line 400) | def run_classifier(self,
class ClassifyTextUnits (line 457) | class ClassifyTextUnits(ClassifyDocuments):
method get_features_engine_class (line 467) | def get_features_engine_class(cls, classify_by: Optional[str]):
FILE: contraxsuite_services/apps/analyze/ml/cluster.py
class ClusterEngine (line 49) | class ClusterEngine:
method __init__ (line 64) | def __init__(self):
method __call__ (line 76) | def __call__(self, features: np.array, term_index: list, use_tfidf: bo...
method get_engine_options (line 94) | def get_engine_options(self):
method get_some_callable_option (line 121) | def get_some_callable_option(self, option_value=None):
method get_model (line 126) | def get_model(self):
method cluster (line 134) | def cluster(self):
method get_cluster_centers (line 168) | def get_cluster_centers(self):
class Dbscan (line 176) | class Dbscan(ClusterEngine):
method get_min_samples (line 183) | def get_min_samples(self, option_value):
method get_cluster_centers (line 186) | def get_cluster_centers(self):
class Birch (line 190) | class Birch(ClusterEngine):
method get_n_clusters (line 195) | def get_n_clusters(self, option_value):
method get_cluster_centers (line 198) | def get_cluster_centers(self):
class Optics (line 202) | class Optics(ClusterEngine):
method get_min_samples (line 208) | def get_min_samples(self, option_value):
method get_cluster_centers (line 211) | def get_cluster_centers(self):
class Kmeans (line 215) | class Kmeans(ClusterEngine):
method get_n_clusters (line 219) | def get_n_clusters(self, option_value):
class MinibatchKmeans (line 223) | class MinibatchKmeans(ClusterEngine):
method get_n_clusters (line 231) | def get_n_clusters(self, option_value):
class ClusterDocuments (line 235) | class ClusterDocuments:
method __init__ (line 252) | def __init__(self,
method init_classifier (line 300) | def init_classifier(self):
method get_engine_wrapper (line 304) | def get_engine_wrapper(self):
method run (line 318) | def run(self):
method create_db_cluster_object (line 436) | def create_db_cluster_object(self, cluster_label_id, cluster_terms, cl...
method get_db_cluster_title (line 466) | def get_db_cluster_title(self, cluster_label_id=None):
method log_message (line 476) | def log_message(self, msg: str, msg_key='') -> None:
class ClusterTextUnits (line 481) | class ClusterTextUnits(ClusterDocuments):
method init_classifier (line 490) | def init_classifier(self):
FILE: contraxsuite_services/apps/analyze/ml/contract_type_classifier.py
function _return_buffered_reader (line 65) | def _return_buffered_reader(
class FileInformation (line 97) | class FileInformation:
method __eq__ (line 105) | def __eq__(self, other) -> bool:
class ContractTypeClassifier (line 115) | class ContractTypeClassifier:
method __new__ (line 154) | def __new__(cls, *args, **kwargs):
method predict_classifications (line 158) | def predict_classifications(
method _update_file_cache (line 248) | def _update_file_cache(
method _get_model_folder (line 336) | def _get_model_folder(cls, language: str, project_id: int) -> str:
method _get_file_storage (line 360) | def _get_file_storage(cls) -> ContraxsuiteFileStorage:
method _load_pipeline (line 369) | def _load_pipeline(cls, key: Tuple[str, int]) -> Pipeline:
method get_probability_predictor_contract_type (line 458) | def get_probability_predictor_contract_type(
FILE: contraxsuite_services/apps/analyze/ml/features.py
class EmptyDataSetError (line 56) | class EmptyDataSetError(Exception):
method __init__ (line 58) | def __init__(self, *args, **kwargs):
class Features (line 63) | class Features:
method __init__ (line 67) | def __init__(self,
method term_frequency_matrix (line 78) | def term_frequency_matrix(self):
method item_index (line 82) | def item_index(self):
method feature_names (line 86) | def feature_names(self):
function get_mb (line 90) | def get_mb(size):
function get_df_info (line 94) | def get_df_info(df):
class DocumentFeatures (line 99) | class DocumentFeatures:
method __init__ (line 140) | def __init__(self,
method check_arguments (line 174) | def check_arguments(self):
method filter_projects_by_name (line 185) | def filter_projects_by_name(self):
method get_queryset (line 192) | def get_queryset(self):
method filter_queryset (line 206) | def filter_queryset(self, queryset) -> Any:
method get_chunk_size (line 220) | def get_chunk_size(self, row_cost, memory_use=0.1, zeros=3):
method get_feature_df (line 227) | def get_feature_df(self) -> Tuple[pd.DataFrame, List[Any]]:
method get_features (line 366) | def get_features(self) -> Features:
method force_use_external_feature_names (line 383) | def force_use_external_feature_names(self, feature_df):
method get_item_names (line 397) | def get_item_names(self, item_index):
method log_message (line 406) | def log_message(self, msg: str, msg_key='') -> None:
class TextUnitFeatures (line 414) | class TextUnitFeatures(DocumentFeatures):
method get_item_names (line 424) | def get_item_names(self, item_index):
method get_queryset (line 432) | def get_queryset(self):
method check (line 437) | def check(self):
method filter_queryset (line 449) | def filter_queryset(self, queryset) -> Any:
class Document2VecFeatures (line 464) | class Document2VecFeatures(DocumentFeatures):
method __init__ (line 471) | def __init__(self, *args, **kwargs):
method check_arguments (line 491) | def check_arguments(self) -> None:
method build_doc2vec_model (line 504) | def build_doc2vec_model(self) -> MLModel:
method get_vectors (line 511) | def get_vectors(self) -> List[DocumentVector]:
method get_document_data (line 530) | def get_document_data(self, qs: Union[QuerySet, Iterable[Document]]):
method get_features (line 533) | def get_features(self) -> Features:
class TextUnit2VecFeatures (line 547) | class TextUnit2VecFeatures(Document2VecFeatures):
method check_arguments (line 554) | def check_arguments(self) -> None:
method get_document_queryset (line 559) | def get_document_queryset(self) -> Union[QuerySet, Iterable[Document]]:
method filter_document_queryset (line 571) | def filter_document_queryset(self, queryset) -> Union[QuerySet, Iterab...
method build_doc2vec_model (line 584) | def build_doc2vec_model(self) -> MLModel:
method get_vectors (line 590) | def get_vectors(self) -> List[TextUnitVector]:
method _ensure_text_unit_vectors (line 607) | def _ensure_text_unit_vectors(self, cursor, document_ids: List[int]):
method get_features (line 631) | def get_features(self) -> Features:
FILE: contraxsuite_services/apps/analyze/ml/similarity.py
class DocumentSimilarityEngine (line 48) | class DocumentSimilarityEngine:
method __init__ (line 64) | def __init__(self,
method check_arguments (line 102) | def check_arguments(self):
method get_feature_extractor (line 106) | def get_feature_extractor(self, feature_source):
method get_features (line 109) | def get_features(self):
method create_sim_obj (line 124) | def create_sim_obj(self, obj_a_id, obj_b_id, similarity):
method _get_similarity (line 136) | def _get_similarity(self):
method get_similarity (line 178) | def get_similarity(self, item_id=None):
method set_refs (line 201) | def set_refs(self, obj_list):
method calc_block_similarity (line 205) | def calc_block_similarity(self,
class TextUnitSimilarityEngine (line 256) | class TextUnitSimilarityEngine(DocumentSimilarityEngine):
method get_feature_extractor (line 272) | def get_feature_extractor(self, feature_source):
method set_refs (line 275) | def set_refs(self, obj_list):
FILE: contraxsuite_services/apps/analyze/ml/sparse_matrix.py
class SparseSingleFeatureTable (line 44) | class SparseSingleFeatureTable:
method __init__ (line 45) | def __init__(self, feature_name: str):
method join (line 49) | def join(self, m: scp.csr_matrix):
class SparseAllFeaturesTable (line 59) | class SparseAllFeaturesTable:
method __init__ (line 60) | def __init__(self, samples: List[int]):
method add_feature_table (line 65) | def add_feature_table(self,
method to_dataframe (line 78) | def to_dataframe(self, samples: Optional[List[int]] = None) -> pd.Data...
method csr_to_df (line 87) | def csr_to_df(cls, data, index=None, columns=None):
FILE: contraxsuite_services/apps/analyze/ml/tests/base_transformer_test.py
class BaseTransformerTest (line 40) | class BaseTransformerTest(TestCase):
method setUpClass (line 44) | def setUpClass(cls):
method tearDownClass (line 56) | def tearDownClass(cls):
method _get_model_path (line 73) | def _get_model_path(cls) -> str:
FILE: contraxsuite_services/apps/analyze/ml/tests/test_classify_doc2vec.py
class MockClassifierRepository (line 51) | class MockClassifierRepository(ClassifierRepository):
method get_fulltext_by_doc (line 56) | def get_fulltext_by_doc(self, project_ids: Iterable[int]):
method get_document_plain_texts (line 59) | def get_document_plain_texts(self,
method get_vector_document_name (line 64) | def get_vector_document_name(self, vector: DocumentVector) -> str:
method save_classifications (line 67) | def save_classifications(self,
method save_classifier (line 73) | def save_classifier(self,
method ensure_unique_name (line 77) | def ensure_unique_name(self, name: str, model_class) -> str:
method save_transformer (line 80) | def save_transformer(self,
class TestFileStorage (line 87) | class TestFileStorage(ContraxsuiteInstanceLocalFileStorage):
method __init__ (line 88) | def __init__(self, local_folder: str):
method init_basic_folders (line 93) | def init_basic_folders(self):
class Document2VecFeaturesMock (line 97) | class Document2VecFeaturesMock(Document2VecFeatures):
method __init__ (line 98) | def __init__(self, *args, **kwargs):
method get_document_data (line 111) | def get_document_data(self, qs: Union[QuerySet, Iterable[Document]]):
method get_vectors (line 115) | def get_vectors(self) -> List[DocumentVector]:
class MockClassifyDocuments (line 122) | class MockClassifyDocuments(ClassifyDocuments):
method get_features_engine_class (line 126) | def get_features_engine_class(cls, classify_by: Optional[str]):
class TestClassifyDoc2Vec (line 130) | class TestClassifyDoc2Vec(BaseTransformerTest):
method setUpClass (line 132) | def setUpClass(cls):
method tearDownClass (line 138) | def tearDownClass(cls):
method make_documents (line 144) | def make_documents(cls, doc_ids: List[int]):
method test_classify (line 159) | def test_classify(self):
FILE: contraxsuite_services/apps/analyze/ml/tests/test_contract_type_classifier.py
class TestFileStorage (line 54) | class TestFileStorage(ContraxsuiteInstanceLocalFileStorage):
method __init__ (line 55) | def __init__(self, local_folder: str):
method init_basic_folders (line 60) | def init_basic_folders(self):
class TestContractTypeClassifier (line 64) | class TestContractTypeClassifier(SimpleTestCase):
method _build_file_storage (line 70) | def _build_file_storage() -> TestFileStorage:
method _f (line 74) | def _f(self, temporary_file: BufferedRandom):
method test_load_from_zip (line 100) | def test_load_from_zip(self):
method test_load_from_tar_gz (line 112) | def test_load_from_tar_gz(self):
method test_load_from_tar_xz (line 124) | def test_load_from_tar_xz(self):
method test_load_from_tar (line 136) | def test_load_from_tar(self):
method test_load_from_file (line 148) | def test_load_from_file(self):
method test_build_predictor (line 159) | def test_build_predictor(self):
method test_runtime_error (line 219) | def test_runtime_error(self):
FILE: contraxsuite_services/apps/analyze/ml/tests/test_doc2vec_transformer.py
class MockClassifierRepository (line 50) | class MockClassifierRepository(ClassifierRepository):
method get_document_plain_texts (line 53) | def get_document_plain_texts(self,
method ensure_unique_name (line 59) | def ensure_unique_name(self, name: str, model_class) -> str:
method save_transformer (line 62) | def save_transformer(self,
class TestFileStorage (line 71) | class TestFileStorage(ContraxsuiteInstanceLocalFileStorage):
method __init__ (line 72) | def __init__(self, local_folder: str):
method init_basic_folders (line 77) | def init_basic_folders(self):
class TestDoc2VecTransformer (line 81) | class TestDoc2VecTransformer(BaseTransformerTest):
method setUpClass (line 83) | def setUpClass(cls):
method tearDownClass (line 89) | def tearDownClass(cls):
method test_train (line 94) | def test_train(self):
method test_build_transformer (line 101) | def test_build_transformer(self):
FILE: contraxsuite_services/apps/analyze/ml/tests/test_sparse_matrix.py
class TestSparseMatrix (line 45) | class TestSparseMatrix(TestCase):
method test_sum_dates (line 102) | def test_sum_dates(self):
method test_sum_up (line 109) | def test_sum_up(self):
method get_term_df (line 128) | def get_term_df(self, data_dict: Dict):
FILE: contraxsuite_services/apps/analyze/ml/tests/test_utils.py
class TestProjectsNameFilter (line 43) | class TestProjectsNameFilter(TestCase):
method test_simple_query (line 44) | def test_simple_query(self):
method test_complex_query (line 50) | def test_complex_query(self):
method non_test_get_ids (line 56) | def non_test_get_ids(self):
FILE: contraxsuite_services/apps/analyze/ml/transform.py
class TrainingCallback (line 63) | class TrainingCallback(CallbackAny2Vec):
method __init__ (line 67) | def __init__(self, log: Callable[[str], None]) -> None:
method on_epoch_begin (line 76) | def on_epoch_begin(self, model: Doc2Vec) -> None:
method on_epoch_end (line 83) | def on_epoch_end(self, model: Doc2Vec) -> None:
method on_train_begin (line 98) | def on_train_begin(self, model: Doc2Vec) -> None:
method on_train_end (line 111) | def on_train_end(self, model: Doc2Vec) -> None:
class Doc2VecTransformer (line 118) | class Doc2VecTransformer:
method __init__ (line 126) | def __init__(
method log_message (line 146) | def log_message(self, msg: str) -> None:
method train_doc2vec_model (line 152) | def train_doc2vec_model(self, data: Iterable[str], count: int) -> Doc2...
method create_transformer_object (line 201) | def create_transformer_object(self,
method build_doc2vec_document_model (line 248) | def build_doc2vec_document_model(
method build_doc2vec_text_unit_model (line 281) | def build_doc2vec_text_unit_model(
method create_vectors (line 326) | def create_vectors(cls,
method run_doc2vec_text_unit_model (line 396) | def run_doc2vec_text_unit_model(self, text_unit_transformer_id: int, t...
method run_doc2vec_document_model (line 422) | def run_doc2vec_document_model(self,
FILE: contraxsuite_services/apps/analyze/ml/utils.py
class ProjectsNameFilter (line 42) | class ProjectsNameFilter:
method filter_objects_by_name (line 46) | def filter_objects_by_name(cls,
method make_query (line 66) | def make_query(cls, model_class: Any, name_pattern: str) -> Union[Quer...
FILE: contraxsuite_services/apps/analyze/models.py
class MLDocumentTransformerModelManager (line 58) | class MLDocumentTransformerModelManager(models.Manager):
method get_queryset (line 61) | def get_queryset(self):
class MLTextUnitTransformerModelManager (line 65) | class MLTextUnitTransformerModelManager(models.Manager):
method get_queryset (line 68) | def get_queryset(self):
class MLDocumentClassifierModelManager (line 72) | class MLDocumentClassifierModelManager(models.Manager):
method get_queryset (line 75) | def get_queryset(self):
class MLTextUnitClassifierModelManager (line 79) | class MLTextUnitClassifierModelManager(models.Manager):
method get_queryset (line 82) | def get_queryset(self):
class MLDocumentContractClassifierModelManager (line 86) | class MLDocumentContractClassifierModelManager(models.Manager):
method get_queryset (line 89) | def get_queryset(self):
class MLTextUnitContractClassifierModelManager (line 93) | class MLTextUnitContractClassifierModelManager(models.Manager):
method get_queryset (line 96) | def get_queryset(self):
class MLModel (line 100) | class MLModel(models.Model):
class Meta (line 168) | class Meta:
method __str__ (line 180) | def __str__(self):
method __repr__ (line 184) | def __repr__(self):
method save_default (line 187) | def save_default(self):
function save_default (line 194) | def save_default(sender, instance, created, **kwargs):
class BaseVector (line 202) | class BaseVector(models.Model):
class Meta (line 218) | class Meta:
class TextUnitVector (line 222) | class TextUnitVector(BaseVector):
class Meta (line 240) | class Meta(BaseVector.Meta):
method __str__ (line 243) | def __str__(self):
class DocumentVector (line 248) | class DocumentVector(BaseVector):
class Meta (line 260) | class Meta(BaseVector.Meta):
method __str__ (line 263) | def __str__(self):
class BaseClassification (line 273) | class BaseClassification(models.Model):
class Meta (line 290) | class Meta:
class TextUnitClassification (line 294) | class TextUnitClassification(BaseClassification):
class Meta (line 305) | class Meta(BaseClassification.Meta):
method __str__ (line 308) | def __str__(self):
class DocumentClassification (line 313) | class DocumentClassification(BaseClassification):
class Meta (line 324) | class Meta(BaseClassification.Meta):
method __str__ (line 327) | def __str__(self):
class BaseClassifier (line 332) | class BaseClassifier(models.Model):
class Meta (line 355) | class Meta:
method __str__ (line 360) | def __str__(self):
class TextUnitClassifier (line 364) | class TextUnitClassifier(BaseClassifier):
class DocumentClassifier (line 370) | class DocumentClassifier(BaseClassifier):
class BaseClassifierSuggestion (line 376) | class BaseClassifierSuggestion(models.Model):
class Meta (line 393) | class Meta:
method classifier_confidence_format (line 397) | def classifier_confidence_format(self):
class TextUnitClassifierSuggestion (line 401) | class TextUnitClassifierSuggestion(BaseClassifierSuggestion):
method __str__ (line 415) | def __str__(self):
class DocumentClassifierSuggestion (line 420) | class DocumentClassifierSuggestion(BaseClassifierSuggestion):
method __str__ (line 434) | def __str__(self):
class BaseClassifierAssessment (line 439) | class BaseClassifierAssessment(models.Model):
class Meta (line 453) | class Meta:
method __str__ (line 456) | def __str__(self):
class TextUnitClassifierAssessment (line 462) | class TextUnitClassifierAssessment(BaseClassifierAssessment):
class DocumentClassifierAssessment (line 473) | class DocumentClassifierAssessment(BaseClassifierAssessment):
class BaseCluster (line 487) | class BaseCluster(models.Model):
class Meta (line 518) | class Meta:
class DocumentCluster (line 523) | class DocumentCluster(BaseCluster):
method __str__ (line 531) | def __str__(self):
class TextUnitCluster (line 535) | class TextUnitCluster(BaseCluster):
method __str__ (line 543) | def __str__(self):
class SimilarityRun (line 552) | class SimilarityRun(models.Model):
class Meta (line 588) | class Meta:
method __str__ (line 591) | def __str__(self):
class BaseSimilarity (line 595) | class BaseSimilarity(models.Model):
class Meta (line 605) | class Meta:
class DocumentSimilarity (line 609) | class DocumentSimilarity(BaseSimilarity):
class Meta (line 624) | class Meta:
method __str__ (line 628) | def __str__(self):
class TextUnitSimilarity (line 632) | class TextUnitSimilarity(BaseSimilarity):
class Meta (line 665) | class Meta:
method __str__ (line 669) | def __str__(self):
method save (line 673) | def save(self, **kwargs):
class PartySimilarity (line 685) | class PartySimilarity(BaseSimilarity):
class Meta (line 700) | class Meta:
method __str__ (line 704) | def __str__(self):
FILE: contraxsuite_services/apps/analyze/notifications.py
function notify_build_vectors_completed (line 42) | def notify_build_vectors_completed(project_ids, task, task_status):
FILE: contraxsuite_services/apps/analyze/similarity_textunit_migration_common.py
function restore_textunitsim_constraints (line 57) | def restore_textunitsim_constraints(_apps, _schema_editor):
function drop_textunitsim_constraints (line 68) | def drop_textunitsim_constraints(_apps, _schema_editor):
FILE: contraxsuite_services/apps/analyze/tasks.py
class FeatureStoringTask (line 64) | class FeatureStoringTask(ExtendedTask):
method save_feature_vectors (line 65) | def save_feature_vectors(self):
class TrainDoc2VecModel (line 115) | class TrainDoc2VecModel(FeatureStoringTask):
method __init__ (line 120) | def __init__(self, *args, **kwargs):
method process (line 128) | def process(self, **kwargs):
class BuildDocumentVectorsTask (line 167) | class BuildDocumentVectorsTask(FeatureStoringTask):
method __init__ (line 170) | def __init__(self, *args, **kwargs):
method process (line 177) | def process(self, **kwargs):
method on_success (line 184) | def on_success(self, *args, **kwargs):
method on_failure (line 188) | def on_failure(self, *args, **kwargs):
class BuildTextUnitVectorsTask (line 193) | class BuildTextUnitVectorsTask(BuildDocumentVectorsTask):
method __init__ (line 196) | def __init__(self, *args, **kwargs):
method process (line 201) | def process(self, **kwargs):
class TrainClassifier (line 210) | class TrainClassifier(ExtendedTask):
method process (line 213) | def process(self, **kwargs):
class RunClassifier (line 263) | class RunClassifier(ExtendedTask):
method process (line 266) | def process(self, **kwargs):
class Cluster (line 315) | class Cluster(ExtendedTask):
method process (line 329) | def process(self, **kwargs):
method estimate_reaching_limit (line 375) | def estimate_reaching_limit(cls, data) -> Tuple[int, int]:
function delete_expired_similarity_objects (line 397) | def delete_expired_similarity_objects(_celery_task):
FILE: contraxsuite_services/apps/analyze/urls.py
function register (line 50) | def register(model, view_types):
FILE: contraxsuite_services/apps/analyze/views.py
class DiffRenderer (line 61) | class DiffRenderer:
method render_diff (line 67) | def render_diff(cls, text_a: str, text_b: str) -> str:
method get_diff_tokens (line 98) | def get_diff_tokens(cls,
method get_token_list (line 108) | def get_token_list(cls, text: str) -> List[Tuple[str, int, int]]:
class TextUnitClassificationListView (line 126) | class TextUnitClassificationListView(apps.common.mixins.JqPaginatedListV...
method get_json_data (line 141) | def get_json_data(self, **kwargs):
method get_queryset (line 151) | def get_queryset(self):
class TextUnitClassificationDeleteView (line 174) | class TextUnitClassificationDeleteView(apps.common.mixins.CustomDeleteVi...
method get_success_url (line 181) | def get_success_url(self):
method has_permission (line 185) | def has_permission(self):
class DocumentClassificationListView (line 190) | class DocumentClassificationListView(apps.common.mixins.JqPaginatedListV...
method get_json_data (line 204) | def get_json_data(self, **kwargs):
method get_queryset (line 214) | def get_queryset(self):
class DocumentClassificationDeleteView (line 238) | class DocumentClassificationDeleteView(apps.common.mixins.CustomDeleteVi...
method get_success_url (line 245) | def get_success_url(self):
method has_permission (line 249) | def has_permission(self):
class TextUnitClassifierListView (line 254) | class TextUnitClassifierListView(apps.common.mixins.JqPaginatedListView):
method get_json_data (line 264) | def get_json_data(self, **kwargs):
class TextUnitClassifierDeleteView (line 273) | class TextUnitClassifierDeleteView(apps.common.mixins.CustomDeleteView):
method has_permission (line 282) | def has_permission(self):
method get_success_url (line 285) | def get_success_url(self):
class DocumentClassifierListView (line 289) | class DocumentClassifierListView(apps.common.mixins.JqPaginatedListView):
method get_json_data (line 299) | def get_json_data(self, **kwargs):
class DocumentClassifierDeleteView (line 308) | class DocumentClassifierDeleteView(apps.common.mixins.CustomDeleteView):
method has_permission (line 315) | def has_permission(self):
method get_success_url (line 320) | def get_success_url(self):
class TextUnitClassifierSuggestionListView (line 324) | class TextUnitClassifierSuggestionListView(apps.common.mixins.JqPaginate...
method get_json_data (line 340) | def get_json_data(self, **kwargs):
method get_queryset (line 350) | def get_queryset(self):
class TextUnitClassifierSuggestionDeleteView (line 368) | class TextUnitClassifierSuggestionDeleteView(apps.common.mixins.CustomDe...
method get_success_url (line 375) | def get_success_url(self):
method has_permission (line 378) | def has_permission(self):
class DocumentClassifierSuggestionListView (line 383) | class DocumentClassifierSuggestionListView(apps.common.mixins.JqPaginate...
method get_json_data (line 398) | def get_json_data(self, **kwargs):
method get_queryset (line 407) | def get_queryset(self):
class DocumentClassifierSuggestionDeleteView (line 425) | class DocumentClassifierSuggestionDeleteView(apps.common.mixins.CustomDe...
method get_success_url (line 432) | def get_success_url(self):
method has_permission (line 435) | def has_permission(self):
class DocumentClusterListView (line 440) | class DocumentClusterListView(PermissionRequiredMixin, apps.common.mixin...
method has_permission (line 451) | def has_permission(self):
method get_json_data (line 457) | def get_json_data(self, **kwargs):
method get_queryset (line 473) | def get_queryset(self):
class DocumentSimilarityListView (line 493) | class DocumentSimilarityListView(apps.common.mixins.JqPaginatedListView):
method get_json_data (line 518) | def get_json_data(self, **kwargs):
method get_queryset (line 536) | def get_queryset(self):
class TextUnitSimilarityListView (line 548) | class TextUnitSimilarityListView(apps.common.mixins.JqPaginatedListView):
method get_json_data (line 563) | def get_json_data(self, **kwargs):
method get_queryset (line 591) | def get_queryset(self):
method get (line 602) | def get(self, request, *args, **kwargs):
class PartySimilarityListView (line 630) | class PartySimilarityListView(apps.common.mixins.JqPaginatedListView):
method get_json_data (line 641) | def get_json_data(self, **kwargs):
method get_queryset (line 648) | def get_queryset(self):
class TextUnitClusterListView (line 655) | class TextUnitClusterListView(apps.common.mixins.JqPaginatedListView):
method get_queryset (line 665) | def get_queryset(self):
class TypeaheadTextUnitClassName (line 680) | class TypeaheadTextUnitClassName(apps.common.mixins.TypeaheadView):
class TypeaheadTextUnitClassValue (line 686) | class TypeaheadTextUnitClassValue(TypeaheadTextUnitClassName):
class SubmitTextUnitClassificationView (line 690) | class SubmitTextUnitClassificationView(SubmitTextUnitTagView):
method get_success_message (line 692) | def get_success_message(self):
method process (line 699) | def process(self, request):
class TrainDocumentDoc2VecModelView (line 712) | class TrainDocumentDoc2VecModelView(BaseAjaxTaskView):
class TrainTextUnitDoc2VecModelView (line 717) | class TrainTextUnitDoc2VecModelView(TrainDocumentDoc2VecModelView):
class BuildDocumentVectorsTaskView (line 721) | class BuildDocumentVectorsTaskView(BaseAjaxTaskView):
class BuildTextUnitVectorsTaskView (line 726) | class BuildTextUnitVectorsTaskView(BaseAjaxTaskView):
class RunDocumentClassifierView (line 731) | class RunDocumentClassifierView(BaseAjaxTaskView):
class RunTextUnitClassifierView (line 736) | class RunTextUnitClassifierView(BaseAjaxTaskView):
class TrainTextUnitClassifierView (line 741) | class TrainTextUnitClassifierView(BaseAjaxTaskView):
class TrainDocumentClassifierView (line 747) | class TrainDocumentClassifierView(BaseAjaxTaskView):
class ClusterView (line 753) | class ClusterView(BaseAjaxTaskView):
method get_metadata (line 758) | def get_metadata(self):
method start_task_and_return (line 779) | def start_task_and_return(self, data):
FILE: contraxsuite_services/apps/celery.py
function on_failure (line 67) | def on_failure(*args, **kwargs):
function build_tracer_patched (line 101) | def build_tracer_patched(name, task, loader=None, hostname=None, *args, ...
function debug_task (line 125) | def debug_task(self):
function on_preload_parsed (line 129) | def on_preload_parsed(options, **kwargs):
FILE: contraxsuite_services/apps/common/admin.py
class AppVarListFilter (line 56) | class AppVarListFilter(admin.SimpleListFilter):
method lookups (line 66) | def lookups(self, request, model_admin):
method queryset (line 78) | def queryset(self, request, queryset):
class AppVarAccessTypeFilter (line 89) | class AppVarAccessTypeFilter(admin.SimpleListFilter):
method lookups (line 94) | def lookups(self, request, model_admin):
method queryset (line 97) | def queryset(self, request, queryset):
class AppVarProjectFilter (line 103) | class AppVarProjectFilter(admin.SimpleListFilter):
method lookups (line 108) | def lookups(self, request, model_admin):
method queryset (line 113) | def queryset(self, request, queryset):
class AppVarProjectChoiceField (line 124) | class AppVarProjectChoiceField(ModelChoiceField):
method label_from_instance (line 125) | def label_from_instance(self, obj: Project):
class AppVarAdminForm (line 129) | class AppVarAdminForm(forms.ModelForm):
class Meta (line 132) | class Meta:
method __init__ (line 143) | def __init__(self, *args, **kwargs):
method clean (line 157) | def clean(self):
class AppVarAdmin (line 171) | class AppVarAdmin(admin.ModelAdmin):
method has_add_permission (line 179) | def has_add_permission(self, request, obj=None):
method has_delete_permission (line 182) | def has_delete_permission(self, request, obj=None):
method custom_description (line 185) | def custom_description(self, object):
method get_changelist_form (line 190) | def get_changelist_form(self, request, **kwargs):
method save_model (line 194) | def save_model(self, request, obj: AppVar, form, change: bool):
method formfield_for_foreignkey (line 200) | def formfield_for_foreignkey(self, db_field, request, **kwargs):
method __init__ (line 205) | def __init__(self, *args, **kwargs):
class ExportFileAdminForm (line 210) | class ExportFileAdminForm(forms.ModelForm):
class Meta (line 212) | class Meta:
class ExportFileAdmin (line 224) | class ExportFileAdmin(admin.ModelAdmin):
method get_changelist_form (line 232) | def get_changelist_form(self, request, **kwargs):
method get_link (line 235) | def get_link(self, obj: ExportFile):
method download_file_data (line 238) | def download_file_data(self, request, *_args, **kwargs):
method file_download_ref (line 251) | def file_download_ref(self, request, *_args, **kwargs):
method get_urls (line 258) | def get_urls(self):
class ReviewStatusGroupAdmin (line 271) | class ReviewStatusGroupAdmin(admin.ModelAdmin):
class ReviewStatusAdmin (line 276) | class ReviewStatusAdmin(admin.ModelAdmin):
class ActionAdmin (line 281) | class ActionAdmin(admin.ModelAdmin):
class MethodStatsAdmin (line 286) | class MethodStatsAdmin(admin.ModelAdmin):
class ThreadDumpRecordAdminForm (line 291) | class ThreadDumpRecordAdminForm(forms.ModelForm):
class Meta (line 295) | class Meta:
class ThreadDumpRecordAdmin (line 300) | class ThreadDumpRecordAdmin(admin.ModelAdmin):
class MethodStatsCollectorPluginForm (line 307) | class MethodStatsCollectorPluginForm(forms.ModelForm):
class Meta (line 308) | class Meta:
method clean_path (line 312) | def clean_path(self):
class MethodStatsCollectorPluginAdmin (line 321) | class MethodStatsCollectorPluginAdmin(admin.ModelAdmin):
class MenuGroupAdmin (line 327) | class MenuGroupAdmin(admin.ModelAdmin):
class MenuItemAdmin (line 332) | class MenuItemAdmin(admin.ModelAdmin):
class ObjectStorageAdmin (line 337) | class ObjectStorageAdmin(admin.ModelAdmin):
FILE: contraxsuite_services/apps/common/api/v1.py
class ReadOnlyNonAdminPermission (line 72) | class ReadOnlyNonAdminPermission(IsAuthenticated, DjangoModelPermissions):
method has_permission (line 73) | def has_permission(self, request, view):
class SystemAppVarAPIViewSchema (line 79) | class SystemAppVarAPIViewSchema(ObjectResponseSchema):
method get_operation (line 90) | def get_operation(self, path, method):
method get_responses (line 96) | def get_responses(self, path, method):
class SystemAppVarDictAPIView (line 107) | class SystemAppVarDictAPIView(APIView):
method get (line 115) | def get(self, request, *args, **kwargs):
class AppVarSerializer (line 147) | class AppVarSerializer(serializers.ModelSerializer):
class Meta (line 149) | class Meta:
class SystemAppVarListAPIView (line 154) | class SystemAppVarListAPIView(JqListAPIView):
method get_queryset (line 160) | def get_queryset(self):
class ProjectAppVarSerializer (line 174) | class ProjectAppVarSerializer(serializers.Serializer):
method deserialize (line 184) | def deserialize(cls, data: List[Dict[str, Any]]) -> List[ProjectAppVar]:
class ProjectAppVarViewSchema (line 203) | class ProjectAppVarViewSchema(CustomAutoSchema):
method get_operation (line 208) | def get_operation(self, path, method):
method get_request_body (line 214) | def get_request_body(self, path, method):
method get_responses (line 229) | def get_responses(self, path, method):
class ProjectAppVarPermission (line 235) | class ProjectAppVarPermission(IsAuthenticated):
method has_permission (line 237) | def has_permission(self, request, view):
class ProjectAppVarAPIView (line 247) | class ProjectAppVarAPIView(APIView):
method get (line 257) | def get(self, request, *args, **kwargs):
method put (line 262) | def put(self, request, *args, **kwargs):
class ReviewStatusGroupSerializer (line 279) | class ReviewStatusGroupSerializer(serializers.ModelSerializer):
class Meta (line 280) | class Meta:
class ReviewStatusGroupViewSet (line 285) | class ReviewStatusGroupViewSet(JqListAPIMixin, viewsets.ModelViewSet):
class ReviewStatusSerializer (line 303) | class ReviewStatusSerializer(serializers.ModelSerializer):
class Meta (line 305) | class Meta:
class ReviewStatusDetailSerializer (line 310) | class ReviewStatusDetailSerializer(serializers.ModelSerializer):
class Meta (line 313) | class Meta:
class ReviewStatusViewSet (line 318) | class ReviewStatusViewSet(JqListAPIMixin, viewsets.ModelViewSet):
method get_serializer_class (line 331) | def get_serializer_class(self, *args, **kwargs):
class ActionSerializer (line 341) | class ActionSerializer(SimpleRelationSerializer):
class Meta (line 344) | class Meta:
method get_user_photo_url (line 351) | def get_user_photo_url(self, obj):
class ActionViewSchema (line 356) | class ActionViewSchema(JqFiltersListViewSchema):
class ActionViewSet (line 387) | class ActionViewSet(JqListAPIMixin, viewsets.ReadOnlyModelViewSet):
method get_queryset (line 397) | def get_queryset(self):
method get_extra_data (line 416) | def get_extra_data(self, queryset, initial_queryset):
class MenuItemPermissions (line 438) | class MenuItemPermissions(IsAuthenticated, DjangoModelPermissions):
method has_permission (line 440) | def has_permission(self, request, view):
method has_object_permission (line 445) | def has_object_permission(self, request, view, obj):
class MenuGroupSerializer (line 451) | class MenuGroupSerializer(serializers.ModelSerializer):
class Meta (line 454) | class Meta:
method validate_public (line 458) | def validate_public(self, value):
class MenuGroupViewSet (line 464) | class MenuGroupViewSet(APIFormFieldsMixin, viewsets.ModelViewSet):
method get_queryset (line 476) | def get_queryset(self):
class MenuItemSerializer (line 488) | class MenuItemSerializer(MenuGroupSerializer):
class Meta (line 490) | class Meta:
class MenuItemViewSet (line 495) | class MenuItemViewSet(MenuGroupViewSet):
method get_queryset (line 506) | def get_queryset(self):
class MediaFilesAPIViewSchema (line 517) | class MediaFilesAPIViewSchema(ObjectResponseSchema):
method get_operation (line 533) | def get_operation(self, path, method):
method get_responses (line 539) | def get_responses(self, path, method):
class MediaFilesPermission (line 554) | class MediaFilesPermission(SuperuserRequiredPermission):
method has_permission (line 558) | def has_permission(self, request, view):
class MediaFilesAPIView (line 569) | class MediaFilesAPIView(APIView):
method get (line 575) | def get(self, request, path):
method download (line 608) | def download(path, as_attachment=False):
method info (line 619) | def info(path, is_dir):
class LogoAPIView (line 631) | class LogoAPIView(MediaFilesAPIView):
method get (line 636) | def get(self, request, *args, **kwargs):
FILE: contraxsuite_services/apps/common/app_vars.py
function init_app_vars (line 46) | def init_app_vars():
function get_build_date (line 61) | def get_build_date():
FILE: contraxsuite_services/apps/common/archive_file.py
class ArchiveFile (line 45) | class ArchiveFile:
method check_file_is_archive (line 67) | def check_file_is_archive(file_path: str, file_ext: str) -> bool:
method guess_file_mime_type (line 74) | def guess_file_mime_type(file: Any) -> Optional[str]:
FILE: contraxsuite_services/apps/common/collection_utils.py
function sequence_chunks (line 37) | def sequence_chunks(col: Sequence, n: int) -> Iterable[List]:
function iterable_chunks (line 53) | def iterable_chunks(col: Iterable, n: int) -> Iterable[List]:
function chunks (line 71) | def chunks(col: Iterable, n: int) -> Iterable[List]:
function leave_unique_values (line 90) | def leave_unique_values(lst: List[Any]) -> List[Any]:
function group_by (line 96) | def group_by(items: Iterable[Any], key_selector: Callable[[Any], Any]) -...
FILE: contraxsuite_services/apps/common/context_managers.py
function update_immutable_data (line 39) | def update_immutable_data(data):
class TempSignalDisconnect (line 51) | class TempSignalDisconnect:
method __init__ (line 55) | def __init__(self, signal, receiver, sender, dispatch_uid=None):
method __enter__ (line 61) | def __enter__(self):
method __exit__ (line 67) | def __exit__(self, some_type, value, traceback):
FILE: contraxsuite_services/apps/common/context_processors.py
function common (line 42) | def common(request):
FILE: contraxsuite_services/apps/common/contraxsuite_urls.py
function attach_proto (line 39) | def attach_proto(url: str) -> str:
function root_url (line 45) | def root_url():
function kibana_root_url (line 53) | def kibana_root_url(record_id: str, log_index: str, add_protocol: bool =...
function doc_editor_url (line 70) | def doc_editor_url(document_type_code: str, project_id: int, document_id...
function project_documents_url (line 91) | def project_documents_url(document_type_code: str, project_id: int) -> str:
FILE: contraxsuite_services/apps/common/db_cache/db_cache.py
class DbCache (line 41) | class DbCache:
method __init__ (line 48) | def __init__(self) -> None:
method stop_watching (line 55) | def stop_watching(self):
method _check_cache (line 58) | def _check_cache(self):
method load_from_db (line 72) | def load_from_db(key: str):
method clean_cache (line 79) | def clean_cache(key_prefix: str):
method put_to_db (line 86) | def put_to_db(key: str, value):
method _get (line 89) | def _get(self, key: str):
method get (line 104) | def get(key: str):
FILE: contraxsuite_services/apps/common/debug_utils.py
function print_stack (line 49) | def print_stack(f=None, limit=None) -> str:
function print_stack_traces (line 63) | def print_stack_traces(sig, frame):
function listen (line 94) | def listen():
FILE: contraxsuite_services/apps/common/decorators.py
function get_string_db_logger (line 58) | def get_string_db_logger():
function collect_stats (line 81) | def collect_stats(name=None, comment=None, log_sql=False, callers_depth=...
function callers (line 187) | def callers(depth=5, start=1):
function caller_name (line 191) | def caller_name(depth=1):
function get_frame_path (line 213) | def get_frame_path(frame):
function get_func_path (line 233) | def get_func_path(func, *args, **kwargs):
function get_function_from_str (line 254) | def get_function_from_str(path):
function decorate (line 285) | def decorate(decorator, path, *args, **kwargs):
function undecorate (line 307) | def undecorate(path):
function init_decorators (line 321) | def init_decorators():
function temp_disconnect_signal (line 330) | def temp_disconnect_signal(signal, receiver, sender, dispatch_uid=None):
FILE: contraxsuite_services/apps/common/error_explorer.py
class OperationalErrorExplorer (line 47) | class OperationalErrorExplorer:
method fullname (line 55) | def fullname(cls, o):
method log_operational_error (line 62) | def log_operational_error(cls, exception: Any):
method find_process_query (line 86) | def find_process_query(cls, pid: int) -> str:
method log_message (line 103) | def log_message(cls, msg: str = ''):
function retry_for_operational_error (line 110) | def retry_for_operational_error(
FILE: contraxsuite_services/apps/common/errors.py
class APIRequestError (line 41) | class APIRequestError(Exception):
method __init__ (line 42) | def __init__(self, message: str = None, caused_by: Exception = None, h...
method to_frontend_error (line 51) | def to_frontend_error(self):
method to_response (line 58) | def to_response(self):
function find_cause_of_type (line 62) | def find_cause_of_type(exception: Exception, of_type: Type[Exception]) -...
FILE: contraxsuite_services/apps/common/expressions.py
class PythonExpressionChecker (line 41) | class PythonExpressionChecker:
method __init__ (line 43) | def __init__(self, code: str):
method test_expression (line 49) | def test_expression(self):
method test_correct_comparing (line 59) | def test_correct_comparing(self, node: Any = None) -> None:
method stringify_node (line 100) | def stringify_node(self, node: Any) -> str:
method stringify_operation (line 119) | def stringify_operation(op: Any) -> str:
FILE: contraxsuite_services/apps/common/fields.py
class StringUUIDField (line 48) | class StringUUIDField(UUIDField):
method from_db_value (line 49) | def from_db_value(self, value, *args, **kwargs):
class CustomJSONField (line 53) | class CustomJSONField(JSONField):
method from_db_value (line 54) | def from_db_value(self, value, *args, **kwargs):
class RoundedFloatField (line 61) | class RoundedFloatField(DecimalField):
method __init__ (line 62) | def __init__(self, verbose_name=None, name=None, max_digits=15, decima...
method from_db_value (line 65) | def from_db_value(self, value, *args, **kwargs):
class TruncatingCharField (line 69) | class TruncatingCharField(CharField):
method get_prep_value (line 70) | def get_prep_value(self, value):
class FilteredManyRelatedField (line 78) | class FilteredManyRelatedField(ManyRelatedField):
method __init__ (line 83) | def __init__(self, *args, **kwargs):
method wrap (line 88) | def wrap(cls, field: ManyRelatedField) -> 'FilteredManyRelatedField':
method get_choices (line 92) | def get_choices(self, cutoff=None):
FILE: contraxsuite_services/apps/common/file_storage/__init__.py
function get_file_storage (line 43) | def get_file_storage() -> ContraxsuiteFileStorage:
function get_filebrowser_site (line 52) | def get_filebrowser_site(url_as_download=True):
function get_media_file_storage (line 60) | def get_media_file_storage(folder='', url_as_download=True):
FILE: contraxsuite_services/apps/common/file_storage/file_storage.py
class PathManipulationsProhibited (line 42) | class PathManipulationsProhibited(Exception):
class UnableToReadFile (line 46) | class UnableToReadFile(Exception):
class ContraxsuiteFileStorage (line 50) | class ContraxsuiteFileStorage:
method __init__ (line 76) | def __init__(self) -> None:
method normalize_folder_name (line 85) | def normalize_folder_name(cls, folder_name: str) -> str:
method check_for_path_manipulations (line 92) | def check_for_path_manipulations(cls, path: str):
method sub_path_join (line 97) | def sub_path_join(cls, parent_path: str, relative_path: str) -> str:
method get_parent_path (line 113) | def get_parent_path(cls, child_path: str):
method ensure_folder_exists (line 118) | def ensure_folder_exists(self, target_folder: str):
method list (line 130) | def list(self, rel_file_path: str):
method file_info (line 137) | def file_info(self, rel_file_path: str) -> Dict[str, Any]:
method delete_file (line 145) | def delete_file(self, rel_file_path: str):
method rename_file (line 150) | def rename_file(self, old_file_path: str, new_file_path: str, move_fil...
method get_as_local_fn (line 156) | def get_as_local_fn(self, rel_file_path: str):
method mkdir (line 168) | def mkdir(self, rel_path: str):
method document_exists (line 175) | def document_exists(self, rel_path: str):
method check_path (line 182) | def check_path(self, rel_path: str) -> Dict[str, bool]:
method write_file (line 185) | def write_file(self,
method mk_doc_dir (line 199) | def mk_doc_dir(self, rel_path: str):
method write_document (line 207) | def write_document(self,
method get_document_as_local_fn (line 224) | def get_document_as_local_fn(self, rel_file_path: str):
method delete_document (line 240) | def delete_document(self, rel_file_path: str):
method rename_document (line 247) | def rename_document(self,
method list_documents (line 257) | def list_documents(self, rel_file_path: str = ''):
method read (line 270) | def read(self, rel_file_path: str) -> Optional[bytes]:
method get_request (line 277) | def get_request(self, rel_file_path: str, extra_headers: Optional[Dict...
FILE: contraxsuite_services/apps/common/file_storage/filebrowser_webdav_file_storage.py
class FileBrowserWebdavStorage (line 47) | class FileBrowserWebdavStorage(StorageMixin, Storage):
method __init__ (line 49) | def __init__(self, base_url='/', url_as_download=True, simple_listdir=...
method path (line 69) | def path(self, name):
method isdir (line 83) | def isdir(self, path):
method isfile (line 89) | def isfile(self, path):
method move (line 95) | def move(self, old_file_name, new_file_name, allow_overwrite=False):
method makedirs (line 105) | def makedirs(self, path):
method rmtree (line 111) | def rmtree(self, path):
method setpermission (line 117) | def setpermission(self, path):
method _open (line 122) | def _open(self, path, mode='rb'):
method _save (line 128) | def _save(self, path, content):
method get_valid_name (line 133) | def get_valid_name(self, name):
method delete (line 140) | def delete(self, path):
method exists (line 147) | def exists(self, path):
method listdir (line 154) | def listdir(self, path):
method size (line 175) | def size(self, path):
method url (line 181) | def url(self, path):
method _datetime_from_timestamp (line 195) | def _datetime_from_timestamp(ts, fmt):
method get_accessed_time (line 206) | def get_accessed_time(self, path):
method get_created_time (line 212) | def get_created_time(self, path):
method get_modified_time (line 220) | def get_modified_time(self, path):
FILE: contraxsuite_services/apps/common/file_storage/local_file_adapter.py
class LocalFileAdapter (line 47) | class LocalFileAdapter(requests.adapters.BaseAdapter):
method _chkpath (line 54) | def _chkpath(method, path):
method send (line 68) | def send(self, req, **kwargs): # pylint: disable=unused-argument
method close (line 109) | def close(self):
FILE: contraxsuite_services/apps/common/file_storage/local_file_storage.py
class ContraxsuiteInstanceLocalFileStorage (line 51) | class ContraxsuiteInstanceLocalFileStorage(ContraxsuiteFileStorage):
method __init__ (line 61) | def __init__(self) -> None:
method init_basic_folders (line 66) | def init_basic_folders(self):
method sub_path_join (line 77) | def sub_path_join(cls, parent_path: str, relative_path: str) -> str:
method get_parent_path (line 86) | def get_parent_path(cls, child_path: str):
method mkdir (line 89) | def mkdir(self, rel_path: str):
method write_file (line 93) | def write_file(self,
method check_path (line 104) | def check_path(self, rel_path: str) -> Dict[str, bool]:
method document_exists (line 130) | def document_exists(self, rel_path: str):
method list (line 134) | def list(self, rel_file_path: str) -> List[str]:
method delete_file (line 146) | def delete_file(self, rel_file_path: str):
method file_info (line 156) | def file_info(self, rel_file_path: str):
method rename_file (line 166) | def rename_file(self, old_rel_path: str, new_rel_path: str, move_file:...
method get_as_local_fn (line 181) | def get_as_local_fn(self, rel_file_path):
method read (line 184) | def read(self, rel_file_path: str) -> Optional[bytes]:
method get_request (line 191) | def get_request(self, rel_file_path: str, extra_headers: Optional[Dict...
method __str__ (line 204) | def __str__(self):
class ContraxsuiteLocalFileStorage (line 209) | class ContraxsuiteLocalFileStorage(ContraxsuiteInstanceLocalFileStorage):
FILE: contraxsuite_services/apps/common/file_storage/tests/test_file_storage.py
class ContraxsuiteWebDAVFileStorageTest (line 43) | class ContraxsuiteWebDAVFileStorageTest(DjangoTestCase):
method test_path_manipulations (line 45) | def test_path_manipulations(self):
method test_sub_path_join (line 55) | def test_sub_path_join(self):
method test_get_parent_dir (line 61) | def test_get_parent_dir(self):
FILE: contraxsuite_services/apps/common/file_storage/tests/test_local_file_storage.py
class TestLocalFileStorage (line 42) | class TestLocalFileStorage(DjangoTestCase):
method test_get_parent_dir (line 44) | def test_get_parent_dir(self):
method test_local_file_access (line 49) | def test_local_file_access(self):
FILE: contraxsuite_services/apps/common/file_storage/tests/test_webdav_file_storage.py
class ContraxsuiteWebDAVFileStorageTest (line 43) | class ContraxsuiteWebDAVFileStorageTest(DjangoTestCase):
method test_parse_propfind (line 45) | def test_parse_propfind(self):
FILE: contraxsuite_services/apps/common/file_storage/webdav_file_storage.py
class WebDAVError (line 54) | class WebDAVError(Exception):
class ContraxsuiteWebDAVFileStorage (line 59) | class ContraxsuiteWebDAVFileStorage(ContraxsuiteFileStorage):
method __init__ (line 67) | def __init__(self,
method mkdir (line 85) | def mkdir(self, path: str):
method write_file (line 97) | def write_file(self,
method parse_propfind_response (line 120) | def parse_propfind_response(cls,
method _exists (line 134) | def _exists(self, url: str) -> bool:
method check_path (line 138) | def check_path(self, rel_path: str) -> Dict[str, bool]:
method document_exists (line 167) | def document_exists(self, rel_path: str):
method _list_impl (line 172) | def _list_impl(self, file_list: List[str], path: str):
method list (line 192) | def list(self, rel_file_path: str = ''):
method delete_file (line 197) | def delete_file(self, rel_file_path: str):
method file_info (line 212) | def file_info(self, rel_file_path: str):
method rename_file (line 241) | def rename_file(self,
method get_as_local_fn (line 262) | def get_as_local_fn(self, rel_file_path: str):
method read (line 282) | def read(self, rel_file_path: str) -> Optional[bytes]:
method get_request (line 295) | def get_request(self, rel_file_path: str,
method __str__ (line 309) | def __str__(self):
FILE: contraxsuite_services/apps/common/forms.py
function checkbox_field (line 48) | def checkbox_field(label,
class FriendlyPasswordField (line 76) | class FriendlyPasswordField(CharField):
method __init__ (line 77) | def __init__(self, max_length=None, min_length=None, *args, **kwargs):
method clean (line 83) | def clean(self, value):
class ReindexDBForm (line 89) | class ReindexDBForm(Form):
class DBSchemaSelectionForm (line 96) | class DBSchemaSelectionForm(Form):
FILE: contraxsuite_services/apps/common/loaders.py
class Loader (line 41) | class Loader(FilesystemLoader):
method get_dirs (line 49) | def get_dirs(self):
FILE: contraxsuite_services/apps/common/log_utils.py
function render_error (line 44) | def render_error(message: str, caused_by: Exception = None) -> str:
class ProcessLogger (line 61) | class ProcessLogger:
method set_progress_steps_number (line 62) | def set_progress_steps_number(self, steps):
method step_progress (line 65) | def step_progress(self):
method info (line 68) | def info(self, message: str, **kwargs):
method debug (line 71) | def debug(self, message: str, **kwargs):
method error (line 74) | def error(self,
class ConsoleLogger (line 84) | class ConsoleLogger(ProcessLogger):
method set_progress_steps_number (line 85) | def set_progress_steps_number(self, steps):
method step_progress (line 88) | def step_progress(self):
method info (line 91) | def info(self, message: str, **kwargs):
method debug (line 94) | def debug(self, message: str, **kwargs):
method error (line 97) | def error(self,
class ErrorCollectingLogger (line 109) | class ErrorCollectingLogger(ProcessLogger):
method __init__ (line 110) | def __init__(self) -> None:
method set_progress_steps_number (line 115) | def set_progress_steps_number(self, steps):
method step_progress (line 118) | def step_progress(self):
method info (line 121) | def info(self, message: str):
method error (line 124) | def error(self, message: str, field_code: str = None, exc_info: Except...
method get_error (line 140) | def get_error(self):
method raise_if_error (line 147) | def raise_if_error(self):
function render_exception (line 158) | def render_exception(e: Exception) -> str:
function auto_str (line 162) | def auto_str(cls):
FILE: contraxsuite_services/apps/common/logger.py
class CsLogger (line 38) | class CsLogger:
method get_logger (line 45) | def get_logger(cls, logger_name: Optional[str] = None) -> logging.Logger:
method get_django_logger (line 49) | def get_django_logger(cls) -> logging.Logger:
method get_django_server_logger (line 53) | def get_django_server_logger(cls) -> logging.Logger:
method get_django_db_backends_logger (line 57) | def get_django_db_backends_logger(cls) -> logging.Logger:
method get_frontend_logger (line 61) | def get_frontend_logger(cls) -> logging.Logger:
FILE: contraxsuite_services/apps/common/management/commands/create_superuser.py
class Command (line 41) | class Command(BaseCommand):
method add_arguments (line 44) | def add_arguments(self, parser):
method handle (line 54) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/download_s3_models.py
class VersionFiles (line 52) | class VersionFiles:
method __init__ (line 58) | def __init__(self, version: str):
method get_version_cortege (line 65) | def get_version_cortege(cls, vers_str: str) -> Tuple[int, int, int]:
method get_version_str (line 71) | def get_version_str(cls, vers: Tuple[int, int, int]) -> str:
method __str__ (line 74) | def __str__(self):
method __repr__ (line 80) | def __repr__(self):
class Command (line 84) | class Command(MigrateCommand):
method __init__ (line 113) | def __init__(self, *args, **kwargs):
method handle (line 122) | def handle(self, *args, **options):
method find_most_relevant_file_version (line 170) | def find_most_relevant_file_version(self, rel_path: str) -> \
method compare_versions (line 197) | def compare_versions(cls, a: Tuple[int, int, int], b: Tuple[int, int, ...
method ensure_file (line 205) | def ensure_file(self, rel_path: str, s3_key: S3Resource):
method rewrite_file (line 212) | def rewrite_file(self, rel_path: str, s3_key: S3Resource):
method ensure_files_in_folder (line 221) | def ensure_files_in_folder(self, rel_path: str, rewrite_existing: bool...
method upload_file_on_webdav (line 240) | def upload_file_on_webdav(self, rel_path: str, file_name: str, s3_res:...
method rel_path_to_webdav (line 256) | def rel_path_to_webdav(cls, rel_path: str) -> str:
method model_path_to_rel_path (line 260) | def model_path_to_rel_path(cls, model_path: str) -> str:
method s3_path_to_rel_path (line 264) | def s3_path_to_rel_path(cls, s3_path: str, vers_str: str) -> str:
method check_webdav_file_exists (line 271) | def check_webdav_file_exists(self, webdav_path: str) -> bool:
method read_versioned_folders (line 275) | def read_versioned_folders(self):
method get_version_from_s3_path (line 302) | def get_version_from_s3_path(cls, path: str) -> str:
method path_is_parent (line 307) | def path_is_parent(cls, parent_path: str, child_path: str) -> bool:
method log_message (line 313) | def log_message(cls, message: str):
method log_error (line 318) | def log_error(cls, message: str):
FILE: contraxsuite_services/apps/common/management/commands/force_migrate.py
class Command (line 38) | class Command(MigrateCommand):
method handle (line 42) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/force_refill_migrations.py
class Command (line 40) | class Command(MigrateCommand):
method handle (line 44) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/force_reinitiate_migrations.py
class Command (line 44) | class Command(MigrateCommand):
method handle (line 49) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/generate_graph_models.py
class Command (line 48) | class Command(BaseCommand):
method add_arguments (line 51) | def add_arguments(self, parser):
method handle (line 74) | def handle(self, *args, **kwargs):
FILE: contraxsuite_services/apps/common/management/commands/get_openapi_schema.py
class Command (line 45) | class Command(BaseCommand):
method add_arguments (line 47) | def add_arguments(self, parser):
method handle (line 77) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/init_app_vars.py
class Command (line 40) | class Command(MigrateCommand):
method handle (line 43) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/init_cache.py
class Command (line 41) | class Command(MigrateCommand):
method handle (line 44) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/load_review_status_groups.py
class Command (line 43) | class Command(BaseCommand):
method handle (line 47) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/load_review_statuses.py
class Command (line 43) | class Command(BaseCommand):
method handle (line 47) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/loadnewdata.py
class Command (line 40) | class Command(Command):
method create_parser (line 42) | def create_parser(self, *args, **kwargs):
method add_arguments (line 47) | def add_arguments(self, parser):
method handle (line 62) | def handle(self, *fixture_labels, **options):
method find_fixtures (line 68) | def find_fixtures(self, fixture_label):
method load_label (line 78) | def load_label(self, fixture_label):
FILE: contraxsuite_services/apps/common/management/commands/set_app_var.py
class Command (line 39) | class Command(BaseCommand):
method add_arguments (line 42) | def add_arguments(self, parser):
method handle (line 55) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/set_site.py
class Command (line 40) | class Command(BaseCommand):
method handle (line 43) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/management/commands/unsafe_fix_catastrophic_backtracking.py
function fix_regexp (line 42) | def fix_regexp(r: str):
class Command (line 46) | class Command(BaseCommand):
method create_parser (line 53) | def create_parser(self, *args, **kwargs):
method handle (line 64) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/common/managers.py
class DotValuesIterable (line 38) | class DotValuesIterable(models.query.ValuesIterable):
method __iter__ (line 43) | def __iter__(self):
class AdvancedQuerySet (line 48) | class AdvancedQuerySet(models.query.QuerySet):
method dot_values (line 53) | def dot_values(self, *fields, **expressions):
class AdvancedManager (line 60) | class AdvancedManager(models.manager.BaseManager.from_queryset(AdvancedQ...
class BulkSignalsQuerySet (line 64) | class BulkSignalsQuerySet(models.QuerySet):
method update (line 66) | def update(self, **kwargs):
method delete (line 72) | def delete(self):
class BulkSignalsManager (line 79) | class BulkSignalsManager(models.Manager):
method __init__ (line 81) | def __init__(self, use_in_migrations=None, disallow_ignore_conflicts=T...
method get_queryset (line 87) | def get_queryset(self):
method bulk_create (line 92) | def bulk_create(self, objs, ignore_conflicts=False, **kwargs):
method bulk_update (line 103) | def bulk_update(self, objs, fields, **kwargs):
FILE: contraxsuite_services/apps/common/middleware.py
class LoginRequiredMiddleware (line 66) | class LoginRequiredMiddleware(MiddlewareMixin):
method process_view (line 75) | def process_view(self, request, view_func, args, kwargs):
function custom_redirect (line 94) | def custom_redirect(url, *_args, **kwargs):
class HttpResponseNotAllowedMiddleware (line 142) | class HttpResponseNotAllowedMiddleware(MiddlewareMixin):
method process_response (line 146) | def process_response(self, request, response):
class Response5xxErrorMiddleware (line 152) | class Response5xxErrorMiddleware(MiddlewareMixin):
method process_response (line 156) | def process_response(self, request, response):
class Response404ErrorMiddleware (line 163) | class Response404ErrorMiddleware(MiddlewareMixin):
method process_response (line 167) | def process_response(self, request, response):
class Response500ErrorMiddleware (line 176) | class Response500ErrorMiddleware(MiddlewareMixin):
method process_response (line 180) | def process_response(self, request, response):
class RequestUserMiddleware (line 190) | class RequestUserMiddleware(MiddlewareMixin):
method process_request (line 194) | def process_request(self, request):
method connect_signal (line 226) | def connect_signal(cls, signal, receiver, sender=None, weak=True, disp...
method process_response (line 254) | def process_response(self, request, response):
method process_exception (line 262) | def process_exception(self, request, exception):
method insert_user_and_request_data (line 269) | def insert_user_and_request_data(self, user, request_data, sender, **k...
class AppEnabledRequiredMiddleware (line 285) | class AppEnabledRequiredMiddleware(MiddlewareMixin):
method process_view (line 290) | def process_view(self, request, view_func, args, kwargs):
class CookieMiddleware (line 303) | class CookieMiddleware(MiddlewareMixin):
method process_request (line 313) | def process_request(self, request):
method process_response (line 320) | def process_response(self, request, response):
class AppBlocksMiddleware (line 361) | class AppBlocksMiddleware(MiddlewareMixin):
method process_view (line 365) | def process_view(self, request, view_func, args, kwargs):
FILE: contraxsuite_services/apps/common/migration_manager.py
class RemoveIndexIfExists (line 38) | class RemoveIndexIfExists(RemoveIndex):
method state_forwards (line 39) | def state_forwards(self, app_label, state):
method database_forwards (line 42) | def database_forwards(self, app_label, schema_editor, from_state, to_s...
method check_index_exists (line 47) | def check_index_exists(self, schema_editor: DatabaseSchemaEditor) -> b...
FILE: contraxsuite_services/apps/common/migration_utils.py
function is_migration_in_process (line 37) | def is_migration_in_process() -> bool:
FILE: contraxsuite_services/apps/common/migrations/0001_initial.py
class Migration (line 11) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0002_reviewstatus.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0003_reviewstatus_is_active.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0004_auto_20180622_1138.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0005_reviewstatusgroup.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0006_create_review_status_groups_20180713_1341.py
function load_review_status_groups (line 9) | def load_review_status_groups(apps, schema_editor):
class Migration (line 13) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0007_reviewstatus_group.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0008_migrate_groups_20180713_1351.py
function load_review_statuses (line 9) | def load_review_statuses(apps, schema_editor):
class Migration (line 13) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0009_objectstorage.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0010_action.py
class Migration (line 10) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0011_auto_20180828_0418.py
class Migration (line 10) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0012_auto_20181012_0643.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0013_customapirequestlog.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0014_appvar_description.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0015_methodstats.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0016_auto_20190906_0727.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0017_methodstatscollectorplugin.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0018_auto_20190916_0730.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0019_menugroup_menuitem.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0020_auto_20191016_1549.py
class Migration (line 7) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0021_auto_20191017_1457.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0022_threaddumprecord.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0023_auto_20191101_1021.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0024_auto_20191101_1028.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0025_auto_20200110_1354.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0026_set_appvar_categories.py
function categorize_old_values (line 6) | def categorize_old_values(apps, schema_editor):
class Migration (line 36) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0027_historicalappvar.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0028_exportfile.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0029_exportfile_email_sent.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0030_smtp_backend_appvar.py
class Migration (line 40) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0031_auto_20210108_1934.py
class Migration (line 7) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0031_smtp_backend_appvar_description.py
function migrate_description (line 58) | def migrate_description(_apps, _schema_editor):
function unmigrate_description (line 77) | def unmigrate_description(_apps, _schema_editor):
class Migration (line 96) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0032_move_strict_date_parse_appvar.py
class Migration (line 55) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0033_merge_20210127_0828.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0034_auto_20210127_1536.py
class Migration (line 7) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0035_auto_20210128_0922.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0036_auto_20210204_0833.py
class Migration (line 8) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0037_expire_appvars.py
function clear_appvar_cache (line 7) | def clear_appvar_cache(_app, _schema):
class Migration (line 13) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0038_auto_20210309_1324.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0039_auto_20210311_0543.py
function clear_appvar_cache (line 7) | def clear_appvar_cache(apps, schema_editor):
class Migration (line 29) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0040_document_locale_appvar.py
class Migration (line 40) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0041_remove_appvar_duplicates.py
function remove_appvar_duplicates (line 7) | def remove_appvar_duplicates(_app, _schema):
class Migration (line 25) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0042_fix_appvar_indexes.py
class Migration (line 6) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0043_update_appvar_helptext.py
class Migration (line 4) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0044_update_appvar_duplicate_docs.py
class Migration (line 3) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0045_change_email_backend.py
function do_migrate (line 42) | def do_migrate(_apps, _schema_editor):
class Migration (line 57) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0046_update_old_project_actions.py
function do_migrate (line 4) | def do_migrate(_apps, _schema_editor):
class Migration (line 10) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/migrations/0047_create_appvar_detect_contract_type_settings.py
function run_migration (line 5) | def run_migration(apps, schema_editor):
function revert_migration (line 49) | def revert_migration(apps, schema_editor):
class Migration (line 54) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/common/mixins.py
function get_model (line 95) | def get_model(self):
class AddModelNameMixin (line 114) | class AddModelNameMixin(LoginRequiredMixin):
method get_context_data (line 118) | def get_context_data(self, **kwargs):
class MessageMixin (line 129) | class MessageMixin:
method form_valid (line 133) | def form_valid(self, form):
class TemplateNamesMixin (line 147) | class TemplateNamesMixin:
method get_template_names (line 151) | def get_template_names(self):
class SingleObjectMixin (line 165) | class SingleObjectMixin(MessageMixin, AddModelNameMixin, TemplateNamesMi...
class CustomCreateView (line 169) | class CustomCreateView(PermissionRequiredMixin, SingleObjectMixin, Creat...
method get_form_class (line 172) | def get_form_class(self):
method get_fields (line 176) | def get_fields(self):
class CustomUpdateView (line 180) | class CustomUpdateView(CustomCreateView, UpdateView):
class CustomDetailView (line 184) | class CustomDetailView(CustomUpdateView):
method get_context_data (line 191) | def get_context_data(self, **kwargs):
method get_update_url (line 201) | def get_update_url(self):
class DocumentQsAccessMixin (line 209) | class DocumentQsAccessMixin(MultipleObjectMixin):
method get_queryset (line 213) | def get_queryset(self):
function string_filter (line 251) | def string_filter(search_str, qs: QuerySet, _or_lookup, _and_lookup=None...
class BaseCustomListView (line 275) | class BaseCustomListView(AddModelNameMixin, TemplateNamesMixin, ListView):
method get (line 284) | def get(self, request, *args, **kwargs):
class CustomListView (line 291) | class CustomListView(DocumentQsAccessMixin, BaseCustomListView):
class CustomDeleteView (line 295) | class CustomDeleteView(AddModelNameMixin, PermissionRequiredMixin, Delet...
method handle_no_permission (line 299) | def handle_no_permission(self):
method get (line 305) | def get(self, request, *args, **kwargs):
method post (line 310) | def post(self, request, *args, **kwargs):
class AjaxResponseMixin (line 323) | class AjaxResponseMixin:
method render_to_response (line 325) | def render_to_response(self, *args, **kwargs):
class JSONResponseView (line 332) | class JSONResponseView(View):
method response (line 334) | def response(self, request, *args, **kwargs):
method get (line 341) | def get(self, request, *args, **kwargs):
method post (line 344) | def post(self, request, *args, **kwargs):
method put (line 347) | def put(self, request, *args, **kwargs):
method delete (line 350) | def delete(self, request, *args, **kwargs):
method get_json_data (line 353) | def get_json_data(self, request, *args, **kwargs):
class TypeaheadView (line 357) | class TypeaheadView(DocumentQsAccessMixin, JSONResponseView):
method get_json_data (line 361) | def get_json_data(self, request, *args, **kwargs):
method qs_to_values (line 369) | def qs_to_values(self, qs):
class SubmitView (line 373) | class SubmitView(JSONResponseView):
method response (line 377) | def response(self, request, *args, **kwargs):
method get_success_message (line 384) | def get_success_message(self):
method get_error_message (line 387) | def get_error_message(self):
method failure (line 390) | def failure(self):
method success (line 393) | def success(self, data=None):
class AjaxListView (line 400) | class AjaxListView(DocumentQsAccessMixin, AjaxResponseMixin, BaseCustomL...
method get (line 408) | def get(self, request, *args, **kwargs):
method get_json_data (line 429) | def get_json_data(self, **kwargs):
method export (line 458) | def export(self, data, source_name, fmt='csv'):
method process_export_data (line 462) | def process_export_data(self, data):
method get_export_file_name (line 465) | def get_export_file_name(self):
class JqPaginatedListMixin (line 469) | class JqPaginatedListMixin:
method get_field_types (line 499) | def get_field_types(self):
method filter_and_sort (line 502) | def filter_and_sort(self, qs):
method read_request_filters (line 512) | def read_request_filters(self) -> Dict[str, Any]:
method filter (line 530) | def filter(self, qs: QuerySet) -> QuerySet:
method get_db_column_type (line 607) | def get_db_column_type(qs, field):
method make_condition (line 618) | def make_condition(cls, field_type: str, field: str, cond: str) -> str:
method sort (line 623) | def sort(self, qs):
method paginate (line 646) | def paginate(self, qs) -> Tuple[Union[List, Any], Paginator]:
method get_json_data (line 670) | def get_json_data(self, **kwargs):
method date_lookup (line 697) | def date_lookup(value):
method bool_lookup (line 708) | def bool_lookup(value):
method full_reverse (line 715) | def full_reverse(self, *args, **kwargs):
class JqPaginatedListView (line 719) | class JqPaginatedListView(JqPaginatedListMixin, AjaxListView):
class SimpleRelationSerializer (line 723) | class SimpleRelationSerializer(rest_framework.serializers.ModelSerializer):
method get_fields (line 728) | def get_fields(self):
class JqFilterBackend (line 737) | class JqFilterBackend(rest_framework.filters.BaseFilterBackend):
method filter_queryset (line 739) | def filter_queryset(self, request, queryset, *args):
class ModelFieldFilterBackend (line 749) | class ModelFieldFilterBackend(rest_framework.filters.BaseFilterBackend):
method filter_queryset (line 751) | def filter_queryset(self, request, queryset, *args):
class APIResponseMixin (line 762) | class APIResponseMixin:
method handle_exception (line 766) | def handle_exception(self, exc):
method destroy (line 774) | def destroy(self, request, *args, **kwargs):
method perform_create (line 778) | def perform_create(self, serializer):
method finalize_response (line 781) | def finalize_response(self, request, response, *args, **kwargs):
class APIFormFieldsMixin (line 801) | class APIFormFieldsMixin:
method get_ui_element (line 829) | def get_ui_element(self, field_code, field_class):
method get_fields_data (line 841) | def get_fields_data(self):
method new_object_fields (line 893) | def new_object_fields(self, request, *args, **kwargs):
method existing_object_fields (line 910) | def existing_object_fields(self, request, *args, **kwargs):
class JqListAPIMixin (line 928) | class JqListAPIMixin(JqPaginatedListMixin):
method __init__ (line 936) | def __init__(self, *args, **kwargs):
method initialize_request (line 940) | def initialize_request(self, request, *args, **kwargs):
method filter_queryset (line 955) | def filter_queryset(self, queryset):
method paginate_queryset (line 960) | def paginate_queryset(self, queryset):
method list (line 966) | def list(self, request, *args, **kwargs):
method add_extra_list_data (line 1039) | def add_extra_list_data(self, request, data: ReturnList):
method post_process_data (line 1042) | def post_process_data(self, data: Dict) -> Dict:
method get_extra_data (line 1045) | def get_extra_data(self, queryset, initial_queryset):
method export (line 1048) | def export(self, data, source_name, fmt='xlsx'):
method get_export_file_name (line 1060) | def get_export_file_name(self):
method process_export_data (line 1063) | def process_export_data(self, data):
class JqListAPIView (line 1067) | class JqListAPIView(JqListAPIMixin, rest_framework.generics.ListAPIView):
class TypeaheadSerializer (line 1073) | class TypeaheadSerializer(rest_framework.serializers.Serializer):
class TypeaheadAPIViewSchema (line 1077) | class TypeaheadAPIViewSchema(CustomAutoSchema):
class TypeaheadAPIView (line 1086) | class TypeaheadAPIView(DocumentQsAccessMixin, rest_framework.generics.Li...
method get (line 1090) | def get(self, request, *args, **kwargs):
method qs_to_values (line 1104) | def qs_to_values(self, qs, field_name):
class NestedKeyTextTransform (line 1108) | class NestedKeyTextTransform(KeyTextTransform):
method __init__ (line 1115) | def __init__(self, nested_key_names, *args, **kwargs):
method as_sql (line 1121) | def as_sql(self, compiler, connection):
class APIActionMixin (line 1132) | class APIActionMixin:
method __init__ (line 1148) | def __init__(self, *args, **kwargs):
method dispatch (line 1155) | def dispatch(self, request, *args, **kwargs):
method save_user_action (line 1175) | def save_user_action(self, request, *args, **kwargs):
method save_action_parent (line 1209) | def save_action_parent(self):
method get_model (line 1212) | def get_model(self):
method get_model_name (line 1218) | def get_model_name(self):
method get_content_type (line 1221) | def get_content_type(self):
method should_track_view_action (line 1225) | def should_track_view_action(self):
method get_request_data (line 1236) | def get_request_data(self):
method get_object_pk (line 1243) | def get_object_pk(self):
method perform_create (line 1262) | def perform_create(self, serializer):
method perform_destroy (line 1270) | def perform_destroy(self, instance):
method get_action_name (line 1277) | def get_action_name(self):
method get_action_message (line 1287) | def get_action_message(self):
method get_updated_fields_message (line 1293) | def get_updated_fields_message(self, old_instance_state, new_instance_...
method get_object_state (line 1310) | def get_object_state(obj):
method update (line 1322) | def update(self, request, *args, **kwargs):
class APILoggingMixin (line 1341) | class APILoggingMixin(LoggingMixin):
method __init__ (line 1342) | def __init__(self, *args, **kwargs):
method should_log (line 1346) | def should_log(self, request, response):
method handle_log (line 1356) | def handle_log(self):
method initial (line 1370) | def initial(self, request, *args, **kwargs):
method get_req_data (line 1376) | def get_req_data(self, request) -> Any:
class CustomCountQuerySet (line 1388) | class CustomCountQuerySet(QuerySet):
method wrap (line 1390) | def wrap(qs: QuerySet):
method __init__ (line 1394) | def __init__(self, model=None, query=None, using=None, hints=None):
method set_optional_count_query (line 1398) | def set_optional_count_query(self, query: Optional[str] = None):
method count (line 1402) | def count(self):
method get_count_custom_sql (line 1411) | def get_count_custom_sql(self):
class CustomForbiddenResponse (line 1424) | class CustomForbiddenResponse(HttpResponseForbidden):
method __init__ (line 1426) | def __init__(self, *args, **kwargs):
FILE: contraxsuite_services/apps/common/model_utils/hr_django_json_encoder.py
class HRDjangoJSONEncoder (line 52) | class HRDjangoJSONEncoder(JSONEncoder):
method encode (line 63) | def encode(self, o: Any) -> str:
method brief_encode (line 68) | def brief_encode(self, o: Any) -> str:
method iterencode (line 81) | def iterencode(self, o, _one_shot=False):
method default (line 135) | def default(self, o: Any) -> Any:
function brief_encode_basestring_ascii (line 166) | def brief_encode_basestring_ascii(s):
function brief_encode_basestring (line 173) | def brief_encode_basestring(s):
FILE: contraxsuite_services/apps/common/model_utils/improved_django_json_encoder.py
class ImprovedDjangoJSONEncoder (line 47) | class ImprovedDjangoJSONEncoder(json.JSONEncoder):
method default (line 49) | def default(self, o):
FILE: contraxsuite_services/apps/common/model_utils/model_bulk_delete.py
class WherePredicate (line 42) | class WherePredicate:
method __init__ (line 43) | def __init__(self, table: str, column: str, predicate: str):
method __str__ (line 48) | def __str__(self):
class ModelBulkDelete (line 52) | class ModelBulkDelete:
method __init__ (line 55) | def __init__(self,
method build_get_deleted_count_queries (line 69) | def build_get_deleted_count_queries(self,
method build_delete_all_queries (line 107) | def build_delete_all_queries(self, where_suffix: WherePredicate) -> Li...
method calculate_total_objects_to_delete (line 140) | def calculate_total_objects_to_delete(self,
method delete_objects (line 157) | def delete_objects(self, where_suffix: WherePredicate) -> Dict[str, int]:
FILE: contraxsuite_services/apps/common/model_utils/model_class_dictionary.py
class ModelClassDictionary (line 44) | class ModelClassDictionary:
method __init__ (line 47) | def __init__(self) -> None:
method read_models (line 56) | def read_models(self) -> None:
method get_model_class_name (line 64) | def get_model_class_name(self, table_name: str) -> str:
method get_model_class_name_hr (line 67) | def get_model_class_name_hr(self, table_name: str) -> str:
FILE: contraxsuite_services/apps/common/model_utils/model_stats_sets_manager.py
class ModelStatsSetsManager (line 42) | class ModelStatsSetsManager:
method get_class_methods (line 55) | def get_class_methods(cls_obj) -> List[str]:
method get_docfieldrepo_methods (line 63) | def get_docfieldrepo_methods() -> List[str]:
method get_fields_detecting_methods (line 69) | def get_fields_detecting_methods() -> List[str]:
method get_field_locators (line 75) | def get_field_locators() -> List[str]:
method get_common_locators (line 86) | def get_common_locators() -> List[str]:
method decorate_methods (line 96) | def decorate_methods(methods: List[str],
method remove_all_decorators (line 107) | def remove_all_decorators():
method show_stored_decorators (line 113) | def show_stored_decorators():
method decorate_all_standard_methods (line 124) | def decorate_all_standard_methods(
method purge_stored_statistics (line 134) | def purge_stored_statistics():
FILE: contraxsuite_services/apps/common/model_utils/safe_bulk_create.py
class SafeBulkCreate (line 43) | class SafeBulkCreate:
method bulk_create (line 49) | def bulk_create(cls, object_manager: models.Manager, objects: List[Any...
method build_entity_filter (line 73) | def build_entity_filter(cls, integrity_error: str) -> Optional[Callabl...
FILE: contraxsuite_services/apps/common/model_utils/table_deps.py
class DependencyRecord (line 37) | class DependencyRecord:
method __init__ (line 38) | def __init__(self, own_table: str = '', ref_key: str = '', ref_table: ...
method __repr__ (line 44) | def __repr__(self):
method stringify (line 47) | def stringify(self) -> str:
class TableDeps (line 51) | class TableDeps:
method __init__ (line 56) | def __init__(self, start_dep):
method __repr__ (line 64) | def __repr__(self) -> str:
method stringify (line 68) | def stringify(self) -> str:
method remove_duplicates (line 72) | def remove_duplicates(cls, dep_list: 'List[TableDeps]') -> 'List[Table...
method leave_shortest_chains (line 77) | def leave_shortest_chains(cls, dep_list: 'List[TableDeps]') -> 'List[T...
method sort_deps (line 91) | def sort_deps(cls,
method check_loops_in_deps (line 131) | def check_loops_in_deps(cls, table_deps: Dict[str, Set[str]]) -> bool:
method parse_stored_deps_multiline (line 145) | def parse_stored_deps_multiline(cls, text: str) -> List:
method parse_stored_deps_line (line 156) | def parse_stored_deps_line(cls, line: str):
FILE: contraxsuite_services/apps/common/model_utils/table_deps_builder.py
class TableDepsBuilder (line 41) | class TableDepsBuilder:
method __init__ (line 42) | def __init__(self, max_depth: int = 4):
method build_table_dependences (line 46) | def build_table_dependences(self, table_name: str) -> List[TableDeps]:
method find_dependend_tables (line 65) | def find_dependend_tables(
method get_relations (line 94) | def get_relations(cls) -> List[Tuple[str, str, str, str]]:
method get_all_primary_keys (line 139) | def get_all_primary_keys(cls) -> Dict[str, List[str]]:
FILE: contraxsuite_services/apps/common/model_utils/tests/test_bulk_delete.py
class TestBulkDelete (line 43) | class TestBulkDelete(DjangoTestCase):
method non_test_document (line 44) | def non_test_document(self):
method test_dependency_order (line 55) | def test_dependency_order(self):
method test_dependency_loops (line 79) | def test_dependency_loops(self):
method deps_to_table_names (line 86) | def deps_to_table_names(cls, deps: List[TableDeps]):
FILE: contraxsuite_services/apps/common/model_utils/tests/test_hr_django_json_encoder.py
class TestHRDjangoJSONEncoder (line 40) | class TestHRDjangoJSONEncoder(DjangoTestCase):
class TestSrClass (line 41) | class TestSrClass:
method __init__ (line 42) | def __init__(self, a: int, b: str):
method test_date (line 46) | def test_date(self):
method test_set (line 56) | def test_set(self):
method test_long_text (line 62) | def test_long_text(self):
method test_class (line 68) | def test_class(self):
FILE: contraxsuite_services/apps/common/model_utils/tests/test_improved_django_json_encoder.py
class TestImprovedDjangoJSONEncoder (line 41) | class TestImprovedDjangoJSONEncoder(TestCase):
class TestSrClass (line 42) | class TestSrClass:
method __init__ (line 43) | def __init__(self, a: int, b: str, c=None):
method test_int (line 48) | def test_int(self):
method test_float (line 54) | def test_float(self):
method test_long_float (line 60) | def test_long_float(self):
method test_decimal (line 67) | def test_decimal(self):
method test_decimal_in_struct (line 75) | def test_decimal_in_struct(self):
method test_date (line 98) | def test_date(self):
method test_set (line 108) | def test_set(self):
method test_class (line 114) | def test_class(self):
FILE: contraxsuite_services/apps/common/model_utils/tests/test_model_class_dictionary.py
class TestModelClassDictionary (line 40) | class TestModelClassDictionary(DjangoTestCase):
method test_has_names (line 41) | def test_has_names(self):
FILE: contraxsuite_services/apps/common/model_utils/tests/test_safe_bulk_delete.py
class TestObject (line 40) | class TestObject:
method __init__ (line 41) | def __init__(self, text_unit_id: int = 0, party: str = ''):
class TestSafeBulkDelete (line 46) | class TestSafeBulkDelete(TestCase):
method test_build_handler (line 47) | def test_build_handler(self):
method test_build_2vals_handler (line 61) | def test_build_2vals_handler(self):
FILE: contraxsuite_services/apps/common/model_utils/tests/test_singleton.py
class MyClass1 (line 42) | class MyClass1:
method __init__ (line 43) | def __init__(self) -> None:
class MyClass2 (line 49) | class MyClass2(MyClass1):
class MyClass3 (line 54) | class MyClass3(MyClass1):
class MyClass4 (line 63) | class MyClass4:
method __init__ (line 64) | def __init__(self, val) -> None:
class TestSingleton (line 71) | class TestSingleton(DjangoTestCase):
method test_singleton (line 72) | def test_singleton(self):
method manual_test_thread_safety (line 95) | def manual_test_thread_safety(self):
FILE: contraxsuite_services/apps/common/models.py
class AppVarQuerySet (line 76) | class AppVarQuerySet(models.QuerySet):
method delete (line 77) | def delete(self):
class ProjectAppVar (line 83) | class ProjectAppVar:
method __init__ (line 87) | def __init__(self,
method __str__ (line 103) | def __str__(self):
method __repr__ (line 107) | def __repr__(self):
class AppVarsCollection (line 111) | class AppVarsCollection:
method store_app_var (line 117) | def store_app_var(cls,
class KnownAppVars (line 142) | class KnownAppVars:
method get_system_only_app_vars (line 144) | def get_system_only_app_vars(cls) -> Dict[Tuple[str, str], 'AppVar']:
method find_app_var (line 148) | def find_app_var(cls, category: str, name: str) -> Optional['AppVar']:
class AppVarStorage (line 152) | class AppVarStorage:
method val (line 156) | def val(cls,
method set (line 204) | def set(cls,
method get_project_app_vars (line 239) | def get_project_app_vars(cls,
method apply_project_app_vars (line 277) | def apply_project_app_vars(cls,
method _get_project_db_app_vars (line 324) | def _get_project_db_app_vars(cls, project_id: int, user: User = None):
method _should_return_mock (line 331) | def _should_return_mock(cls) -> bool:
method _save_app_var_db_record (line 335) | def _save_app_var_db_record(cls, app_var: 'AppVar'):
method _delete_app_var_rows (line 339) | def _delete_app_var_rows(cls, project_id: int, category: str, name: str):
method _read_db_values (line 343) | def _read_db_values(cls,
method _save_app_var_in_db (line 353) | def _save_app_var_in_db(cls,
method _check_app_var_in_db (line 365) | def _check_app_var_in_db(cls,
method _get_or_update_app_var (line 377) | def _get_or_update_app_var(
method _cache (line 402) | def _cache(cls, category: str, name: str, access_type: str, project_id...
method clear_cache_values (line 412) | def clear_cache_values(cls, category: str, name: str, access_type: str):
method _read_cached (line 419) | def _read_cached(cls, category: str, name: str, access_type: str, proj...
method _make_cache_key (line 423) | def _make_cache_key(cls,
method clear_key (line 433) | def clear_key(cls, category: str, name: str, access_type: str, project...
method clear (line 438) | def clear(cls, category: str, name: str, access_type: str, project_id:...
class AppVar (line 444) | class AppVar(models.Model):
class Meta (line 461) | class Meta:
method __str__ (line 508) | def __str__(self):
method val (line 511) | def val(self, project_id: Optional[int] = None) -> Any:
method set (line 516) | def set(cls,
method delete (line 536) | def delete(self, **kwargs):
method is_optional_value (line 540) | def is_optional_value(self):
method check_is_value_ok (line 546) | def check_is_value_ok(cls, category: str, name: str, value: Any) -> None:
method _check_is_value_ok (line 551) | def _check_is_value_ok(self, value: Any) -> None:
method try_cast_string (line 575) | def try_cast_string(self, value_str: str) -> Any:
function save_var (line 593) | def save_var(sender, instance, created, **kwargs):
class ReviewStatusGroup (line 605) | class ReviewStatusGroup(models.Model):
class Meta (line 621) | class Meta:
method __str__ (line 626) | def __str__(self):
method save (line 632) | def save(self, **kwargs):
class ReviewStatus (line 638) | class ReviewStatus(models.Model):
class Meta (line 658) | class Meta:
method __str__ (line 663) | def __str__(self):
method _fire_saved (line 669) | def _fire_saved(self, old_instance=None):
method save (line 672) | def save(self, **kwargs):
method initial_status (line 681) | def initial_status(cls):
method initial_status_pk (line 690) | def initial_status_pk(cls):
method is_final (line 695) | def is_final(self):
method is_completed (line 699) | def is_completed(self):
method is_excluded (line 703) | def is_excluded(self):
function get_default_status (line 707) | def get_default_status():
class ObjectStorage (line 711) | class ObjectStorage(models.Model):
class Meta (line 713) | class Meta:
method get_obj (line 723) | def get_obj(self):
method set_obj (line 728) | def set_obj(self, obj):
method update_or_create (line 732) | def update_or_create(key: str, value_obj):
class Action (line 737) | class Action(models.Model):
method __str__ (line 755) | def __str__(self):
class SQCount (line 762) | class SQCount(models.Subquery):
class CustomAPIRequestLog (line 767) | class CustomAPIRequestLog(APIRequestLog):
class ThreadDumpRecord (line 771) | class ThreadDumpRecord(models.Model):
class Meta (line 782) | class Meta:
class MethodStats (line 787) | class MethodStats(models.Model):
class Meta (line 814) | class Meta:
method __str__ (line 818) | def __str__(self):
method get (line 828) | def get(cls, as_dataframe: bool = True, **filter_kwargs):
class MethodStatsCollectorPlugin (line 854) | class MethodStatsCollectorPlugin(models.Model):
class Meta (line 872) | class Meta:
method __str__ (line 875) | def __str__(self):
function save_plugin (line 880) | def save_plugin(sender, instance, created, **kwargs):
function delete_plugin (line 891) | def delete_plugin(sender, instance, **kwargs):
class MenuGroup (line 904) | class MenuGroup(models.Model):
class Meta (line 906) | class Meta:
method __str__ (line 922) | def __str__(self):
function save_menu_group (line 927) | def save_menu_group(sender, instance, created, **kwargs):
class MenuItem (line 939) | class MenuItem(models.Model):
class Meta (line 941) | class Meta:
method __str__ (line 963) | def __str__(self):
function save_menu_item (line 968) | def save_menu_item(sender, instance, created, **kwargs):
function approx_count (line 985) | def approx_count(db_table_of_model):
class PostgresILike (line 1006) | class PostgresILike(IContains):
method as_postgresql (line 1012) | def as_postgresql(self, compiler, connection):
class FullTextSearch (line 1019) | class FullTextSearch(Lookup):
method get_fts_lookup (line 1027) | def get_fts_lookup(self, qn, connection):
method as_postgresql (line 1041) | def as_postgresql(self, qn, connection):
class ContainsOrFullTextSearch (line 1064) | class ContainsOrFullTextSearch(FullTextSearch):
method as_postgresql (line 1073) | def as_postgresql(self, qn, connection):
method enable_full_text_search (line 1082) | def enable_full_text_search(self, qn):
class ExportFile (line 1091) | class ExportFile(models.Model):
class Meta (line 1093) | class Meta:
method get_link (line 1121) | def get_link(self, abs_path=False, as_html=True):
method send_email (line 1131) | def send_email(self, log: ProcessLogger = None,
method send_multi_file_email (line 1150) | def send_multi_file_email(cls,
class IContainsOrFullTextSearch (line 1179) | class IContainsOrFullTextSearch(ContainsOrFullTextSearch):
FILE: contraxsuite_services/apps/common/pandas_excel_formatter.py
class PandasExcelFormatter (line 41) | class PandasExcelFormatter:
method export_to_xlsx (line 46) | def export_to_xlsx(cls,
method adjust_columns_width (line 66) | def adjust_columns_width(cls,
method adjust_rows_height (line 81) | def adjust_rows_height(cls,
FILE: contraxsuite_services/apps/common/permissions.py
class SuperuserRequiredPermission (line 40) | class SuperuserRequiredPermission(BasePermission):
method has_permission (line 44) | def has_permission(self, request, view):
class AppBlockPermissions (line 48) | class AppBlockPermissions(BasePermission):
method has_permission (line 50) | def has_permission(self, request, view):
class SuperuserRequiredMixin (line 60) | class SuperuserRequiredMixin(PermissionRequiredMixin):
method has_permission (line 63) | def has_permission(self):
class AppBlockMixin (line 67) | class AppBlockMixin(PermissionRequiredMixin):
method has_permission (line 70) | def has_permission(self):
FILE: contraxsuite_services/apps/common/plugins.py
function collect_plugins_in_apps (line 40) | def collect_plugins_in_apps(module_name: str, module_attr: str) -> Dict[...
FILE: contraxsuite_services/apps/common/processes.py
class ProcessKilledByTimeout (line 49) | class ProcessKilledByTimeout(Exception):
class ProcessReturnedErrorCode (line 53) | class ProcessReturnedErrorCode(Exception):
function io_pipe_lines (line 57) | def io_pipe_lines(src: TextIO, dst: Callable[[str], None]):
function exec (line 65) | def exec(cmd: List[str],
function start_process (line 94) | def start_process(cmd: List[str],
function read_output (line 114) | def read_output(cmd: List[str],
function async_read_pipe (line 151) | async def async_read_pipe(pipe, dst: Callable[[str], None]):
function async_exec (line 156) | async def async_exec(program: str, args: List[str], stdout: Callable[[st...
function async_wait_for_file (line 174) | async def async_wait_for_file(file_path, timeout_interval_sec: float = 3...
function terminate_processes_by_ids (line 185) | def terminate_processes_by_ids(pids: List[int],
FILE: contraxsuite_services/apps/common/querysets.py
function stringify_queryset (line 42) | def stringify_queryset(qs: QuerySet) -> str:
class QuerySetWoCache (line 51) | class QuerySetWoCache(QuerySet):
method __init__ (line 52) | def __init__(self, *args, **kwargs):
method wrap (line 57) | def wrap(qs: QuerySet):
method __getitem__ (line 61) | def __getitem__(self, k):
class CustomCountQuerySet (line 89) | class CustomCountQuerySet(QuerySet):
method wrap (line 91) | def wrap(qs: QuerySet):
method __init__ (line 95) | def __init__(self, model=None, query=None, using=None, hints=None):
method _clone (line 99) | def _clone(self):
method set_optional_count_query (line 115) | def set_optional_count_query(self, query: Optional[str] = None):
method count (line 119) | def count(self):
method get_count_custom_sql (line 128) | def get_count_custom_sql(self):
FILE: contraxsuite_services/apps/common/redis.py
function unpickle (line 53) | def unpickle(value):
function lock (line 63) | def lock(func):
function lpush (line 74) | def lpush(key, value, pickle_value=True):
function llen (line 83) | def llen(key):
function ltrim (line 90) | def ltrim(key, start, end):
function lrange (line 97) | def lrange(key, unpickle_value=True, start=0, end=-1, delete=False):
function lpush_or_pop (line 110) | def lpush_or_pop(key, value, limit):
function push (line 125) | def push(key, value, pickle_value=True, ex=None, px=None, nx=False, xx=F...
function pop (line 135) | def pop(key, unpickle_value=True):
function popd (line 147) | def popd(key, unpickle_value=True):
function exists (line 156) | def exists(key):
function list_keys (line 163) | def list_keys(pattern='*', as_list=True, sort=True):
function push_or_pop (line 176) | def push_or_pop(key, value,
function pop_exceeding (line 204) | def pop_exceeding(key,
class RedisCache (line 231) | class RedisCache:
method __init__ (line 232) | def __init__(self,
method get_cached_response (line 238) | def get_cached_response(self, *args) -> Any:
method cache_response (line 241) | def cache_response(self, data: Any, *args) -> Any:
method invalidate_cache (line 246) | def invalidate_cache(self, *args):
method make_key (line 249) | def make_key(self, *args) -> str:
FILE: contraxsuite_services/apps/common/s3/s3_browser.py
class S3Resource (line 44) | class S3Resource:
method __init__ (line 45) | def __init__(self,
method is_folder (line 54) | def is_folder(self) -> bool:
method __repr__ (line 57) | def __repr__(self):
method __str__ (line 60) | def __str__(self):
class S3ResourceBrowser (line 64) | class S3ResourceBrowser:
method __init__ (line 65) | def __init__(self,
method list_folder (line 76) | def list_folder(self, folder: Optional[str]) -> List[S3Resource]:
method download_resource (line 85) | def download_resource(self,
function make_s3_browser_silent (line 98) | def make_s3_browser_silent():
FILE: contraxsuite_services/apps/common/schemas.py
class CustomAutoSchema (line 53) | class CustomAutoSchema(AutoSchema):
method get_operation_id (line 60) | def get_operation_id(self, path, method):
method get_operation (line 69) | def get_operation(self, path, method):
method get_component_name (line 87) | def get_component_name(self, serializer):
method get_components (line 91) | def get_components(self, path, method):
method get_request_serializer (line 114) | def get_request_serializer(self, path, method):
method get_response_serializer (line 117) | def get_response_serializer(self, path, method):
method get_serializer (line 125) | def get_serializer(self, path, method):
method map_serializer (line 139) | def map_serializer(self, serializer):
method get_tags (line 144) | def get_tags(self, path, method):
method map_field (line 153) | def map_field(self, field):
class ObjectResponseSchema (line 167) | class ObjectResponseSchema(CustomAutoSchema):
method __init__ (line 172) | def __init__(self, *args, **kwargs):
method get_responses (line 178) | def get_responses(self, path, method):
class ObjectToItemResponseMixin (line 190) | class ObjectToItemResponseMixin:
method get_responses (line 192) | def get_responses(self, path, method):
class ObjectItemsResponseSchema (line 199) | class ObjectItemsResponseSchema(ObjectToItemResponseMixin, ObjectRespons...
class JqFiltersListViewSchema (line 203) | class JqFiltersListViewSchema(CustomAutoSchema):
method get_operation (line 226) | def get_operation(self, path, method):
FILE: contraxsuite_services/apps/common/script_utils.py
function import_submodules (line 43) | def import_submodules(package, recursive: bool = True):
class ScriptError (line 63) | class ScriptError(RuntimeError):
method __init__ (line 64) | def __init__(self, script_title: str, script_code: str) -> None:
function eval_script (line 77) | def eval_script(script_title: str, script_code: str, eval_locals: Dict[s...
function exec_script (line 91) | def exec_script(script_title: str, script_code: str, eval_locals: Dict[s...
FILE: contraxsuite_services/apps/common/serializers.py
class WritableSerializerMethodField (line 41) | class WritableSerializerMethodField(serializers.Field):
method __init__ (line 43) | def __init__(self, *args, **kwargs):
method bind (line 49) | def bind(self, field_name, parent):
method to_internal_value (line 56) | def to_internal_value(self, data):
method to_representation (line 60) | def to_representation(self, value):
class FormSerializer (line 65) | class FormSerializer(BaseFormSerializer):
method __init__ (line 67) | def __init__(self, *args, **kwargs):
class Meta (line 73) | class Meta:
method _get_field_kwargs (line 80) | def _get_field_kwargs(self, form_field, serializer_field_class):
FILE: contraxsuite_services/apps/common/signals.py
function _bulk_create (line 58) | def _bulk_create(self, objs, batch_size=None, ignore_conflicts=False, **...
function _create (line 70) | def _create(self, **kwargs):
function _update (line 81) | def _update(self, **kwargs):
FILE: contraxsuite_services/apps/common/singleton.py
class Singleton (line 38) | class Singleton:
method __init__ (line 39) | def __init__(self, clz: Type) -> None:
method __call__ (line 45) | def __call__(self, *args, **kwargs):
FILE: contraxsuite_services/apps/common/sql_commons.py
function dict_fetch_all (line 44) | def dict_fetch_all(columns: Union[List[str], None], cursor) -> List[Dict]:
function escape_column_name (line 50) | def escape_column_name(field_code: str, do_snake_case: bool = True):
function first_or_none (line 59) | def first_or_none(l: List):
function sum_list (line 65) | def sum_list(lists: List[List]) -> List:
class SQLClause (line 73) | class SQLClause:
method __init__ (line 76) | def __init__(self, sql: str, params: Optional[List] = None) -> None:
method __str__ (line 81) | def __str__(self) -> str:
function join_clauses (line 85) | def join_clauses(separator: str, clauses: List[Optional['SQLClause']], a...
function format_clause (line 102) | def format_clause(sql_template: str, *args, **kwargs) -> SQLClause:
class SQLInsertClause (line 124) | class SQLInsertClause:
method __init__ (line 127) | def __init__(self, columns_sql: str, columns_params: List, values_sql:...
method __str__ (line 132) | def __str__(self) -> str:
method join (line 137) | def join(clauses: List['SQLInsertClause']) -> Tuple[Optional[SQLClause...
function fetch_dicts (line 153) | def fetch_dicts(cursor, sql: SQLClause, columns: List[str]) -> List[Dict]:
function fetch_int (line 158) | def fetch_int(cursor, sql: SQLClause) -> int:
function fetch_bool (line 163) | def fetch_bool(cursor, sql: SQLClause) -> bool:
function sql_query (line 168) | def sql_query(sql: str, params: List = None) -> Generator[Tuple, None, N...
function drop_indexes_for_table_and_generate_restore_query (line 178) | def drop_indexes_for_table_and_generate_restore_query(cursor,
function drop_constraints_for_table_and_generate_restore_queries (line 220) | def drop_constraints_for_table_and_generate_restore_queries(cursor,
class maintenance_work_mem (line 261) | class maintenance_work_mem:
method __init__ (line 262) | def __init__(self,
method __enter__ (line 269) | def __enter__(self):
method __exit__ (line 281) | def __exit__(self, exc_type, exc_val, exc_tb):
class dropping_constraints_and_indexes (line 287) | class dropping_constraints_and_indexes:
method __init__ (line 288) | def __init__(self,
method __enter__ (line 300) | def __enter__(self):
method __exit__ (line 315) | def __exit__(self, exc_type, exc_val, exc_tb):
class ModelLock (line 331) | class ModelLock:
method __init__ (line 336) | def __init__(self,
method __enter__ (line 345) | def __enter__(self):
method __exit__ (line 351) | def __exit__(self, exc_type, exc_val, exc_tb):
FILE: contraxsuite_services/apps/common/streaming_utils.py
class Echo (line 46) | class Echo:
method write (line 47) | def write(self, value):
class GeneratorList (line 51) | class GeneratorList(list):
method __init__ (line 52) | def __init__(self, generator: Generator) -> None:
method __iter__ (line 56) | def __iter__(self):
method __len__ (line 59) | def __len__(self):
function csv_gen (line 63) | def csv_gen(column_names: List[str], rows: Generator[List, None, None], ...
function csv_gen_from_dicts (line 71) | def csv_gen_from_dicts(rows: GeneratorType, fieldnames=None) -> Generato...
function json_gen (line 84) | def json_gen(v: Any, encoder=None) -> Generator[str, None, None]:
function buffer_contents_into_temp_file (line 95) | def buffer_contents_into_temp_file(http_response, file_suffix: str) -> G...
function copy_data (line 109) | def copy_data(src_file_like_object: Union[BinaryIO, bytes],
function download_file (line 121) | def download_file(http_response: Response, fn: str):
FILE: contraxsuite_services/apps/common/tasks.py
function delete_method_stats (line 46) | def delete_method_stats(_celery_task):
function init_method_stats_collectors (line 54) | def init_method_stats_collectors(_celery_task):
class ReindexDB (line 62) | class ReindexDB(ExtendedTask):
method process (line 69) | def process(self, **kwargs):
FILE: contraxsuite_services/apps/common/templatetags/debug_tags.py
function debug_object_dump (line 42) | def debug_object_dump(var):
FILE: contraxsuite_services/apps/common/templatetags/project_tags.py
function capwords (line 68) | def capwords(value):
function add_class (line 77) | def add_class(value, arg):
function readonly (line 89) | def readonly(value):
function get_field_type (line 99) | def get_field_type(form_field):
function as_dd (line 107) | def as_dd(field):
function get_attr (line 135) | def get_attr(obj, attr):
function replace (line 140) | def replace(value, arg1, arg2):
function settings_value (line 148) | def settings_value(name):
function app_var_value (line 161) | def app_var_value(name, category='Common'):
function admin_email (line 173) | def admin_email():
function get_settings_value (line 192) | def get_settings_value(name):
function simple_replace (line 202) | def simple_replace(value, repl):
function linebreak_replace (line 207) | def linebreak_replace(value, repl='<br />'):
function get_query (line 212) | def get_query(request, delete_page=True):
function as_tr (line 220) | def as_tr(field):
function is_in (line 249) | def is_in(value, collection):
function _url (line 254) | def _url(url):
function js (line 264) | def js(obj):
function _get_git_data (line 269) | def _get_git_data(git_command: str) -> subprocess.CompletedProcess:
function _get_build_info_txt_file (line 290) | def _get_build_info_txt_file(git_data: Tuple) -> Dict[str, str]:
function get_model_permalink (line 316) | def get_model_permalink(value: Dict) -> str:
FILE: contraxsuite_services/apps/common/tests/test_appvar_cache.py
class AppVarMock (line 41) | class AppVarMock(AppVarStorage):
class Meta (line 49) | class Meta:
method clear_test_data (line 53) | def clear_test_data(cls):
method _should_return_mock (line 58) | def _should_return_mock(cls) -> bool:
method _read_db_values (line 62) | def _read_db_values(cls,
method _get_project_db_app_vars (line 83) | def _get_project_db_app_vars(cls, project_id: int, user=None):
method _cache (line 102) | def _cache(cls, category: str, name: str, access_type: str, project_id...
method _read_cached (line 107) | def _read_cached(cls, category: str, name: str, access_type: str, proj...
method _save_app_var_in_db (line 112) | def _save_app_var_in_db(cls,
method _check_app_var_in_db (line 144) | def _check_app_var_in_db(
method _save_app_var_db_record (line 178) | def _save_app_var_db_record(cls, app_var):
method _delete_app_var_rows (line 182) | def _delete_app_var_rows(cls, project_id: int, category: str, name: str):
method clear_key (line 192) | def clear_key(cls, category: str, name: str, access_type: str, project...
class TestAppVarCache (line 198) | class TestAppVarCache(TestCase):
method setUp (line 199) | def setUp(self) -> None:
method test_set_read (line 203) | def test_set_read(self):
method test_prefer_project_level (line 224) | def test_prefer_project_level(self):
method test_read_db_once (line 234) | def test_read_db_once(self):
method test_read_unknown_project (line 259) | def test_read_unknown_project(self):
method test_get_project_appvars (line 269) | def test_get_project_appvars(self):
method test_apply_project_appvars (line 287) | def test_apply_project_appvars(self):
FILE: contraxsuite_services/apps/common/tests/test_check_timeout.py
class TestCheckTimeout (line 44) | class TestCheckTimeout(TestCase):
method test_simple_check (line 46) | def test_simple_check(self):
method test_two_calls_one_thread (line 54) | def test_two_calls_one_thread(self):
method failed_test_two_calls_two_threads (line 64) | def failed_test_two_calls_two_threads(self):
function sample_func (line 78) | def sample_func(delay: float) -> bool:
function long_sample_func (line 84) | def long_sample_func(delay: float) -> bool:
FILE: contraxsuite_services/apps/common/tests/test_collection_utils.py
class MyIterable (line 47) | class MyIterable(Iterable):
method __init__ (line 49) | def __init__(self, l: List) -> None:
method __iter__ (line 54) | def __iter__(self) -> Iterator:
class MySequence (line 59) | class MySequence(MyIterable):
method __init__ (line 61) | def __init__(self, l: List) -> None:
method __getitem__ (line 65) | def __getitem__(self, k):
class CollectionUtilsTest (line 71) | class CollectionUtilsTest(TestCase):
method test_lists (line 73) | def test_lists(self):
method test_sets (line 79) | def test_sets(self):
method test_generators (line 85) | def test_generators(self):
method test_iterator_used (line 94) | def test_iterator_used(self):
method test_slicing_used (line 101) | def test_slicing_used(self):
method non_test_collect_stat (line 109) | def non_test_collect_stat(self):
method test_group_by (line 120) | def test_group_by(self):
method test_sequence_chunks (line 129) | def test_sequence_chunks(self):
function make_lala (line 138) | def make_lala(delay: float, raiseerror: bool):
FILE: contraxsuite_services/apps/common/tests/test_download_s3_models.py
class TestDownloadS3Models (line 43) | class TestDownloadS3Models(TestCase):
method test_rel_2_webdav (line 44) | def test_rel_2_webdav(self):
method test_path_is_parent (line 49) | def test_path_is_parent(self):
method test_find_most_relevant_vers (line 54) | def test_find_most_relevant_vers(self):
method test_compare_versions (line 89) | def test_compare_versions(self):
method test_s3_path_to_rel_path (line 101) | def test_s3_path_to_rel_path(self):
method test_get_version_from_s3_path (line 107) | def test_get_version_from_s3_path(self):
FILE: contraxsuite_services/apps/common/tests/test_expressions.py
class TestExpressions (line 39) | class TestExpressions(TestCase):
method test_warn_is_str (line 41) | def test_warn_is_str(self):
method test_warn_is_diff_types (line 52) | def test_warn_is_diff_types(self):
method test_warn_is_binop (line 65) | def test_warn_is_binop(self):
method test_warn_is_expr (line 77) | def test_warn_is_expr(self):
method test_big_safe_expr (line 84) | def test_big_safe_expr(self):
method test_ternary (line 94) | def test_ternary(self):
method test_avg_len_with_warns (line 101) | def test_avg_len_with_warns(self):
method test_complex (line 108) | def test_complex(self):
FILE: contraxsuite_services/apps/common/tests/test_log_utils.py
class TestLogUtils (line 38) | class TestLogUtils(TestCase):
method f_cause1 (line 40) | def f_cause1(self):
method f_cause2 (line 43) | def f_cause2(self):
method f_cause3 (line 49) | def f_cause3(self, raise_in_context=False):
method test_render_exception (line 57) | def test_render_exception(self):
FILE: contraxsuite_services/apps/common/tests/test_map.py
class TestMap (line 41) | class TestMap(TestCase):
method test_map (line 42) | def test_map(self):
method test_cap_words (line 49) | def test_cap_words(self):
method test_clean_html_tags (line 58) | def test_clean_html_tags(self):
FILE: contraxsuite_services/apps/common/tests/test_sql_commons.py
class TestSqlCommons (line 42) | class TestSqlCommons(TestCase):
method test_escape_column_name (line 43) | def test_escape_column_name(self):
method test_join_clauses (line 47) | def test_join_clauses(self):
method test_sql_insert (line 64) | def test_sql_insert(self):
FILE: contraxsuite_services/apps/common/tests/test_url_utils.py
class TestUrlUtils (line 41) | class TestUrlUtils(TestCase):
method test_as_bool (line 42) | def test_as_bool(self):
method test_as_int (line 48) | def test_as_int(self):
method test_as_int_list (line 54) | def test_as_int_list(self):
method test_as_str_list (line 58) | def test_as_str_list(self):
FILE: contraxsuite_services/apps/common/tests/test_utils.py
class AnimalViper (line 47) | class AnimalViper(Serializable):
method __init__ (line 48) | def __init__(self, title: str = '', length: float = 0, sounds: List = ...
class TestUils (line 55) | class TestUils(TestCase):
method build_test_df (line 57) | def build_test_df(cls) -> pd.DataFrame:
method test_download_xls (line 67) | def test_download_xls(self):
method test_download_csv (line 73) | def test_download_csv(self):
method test_download_pdf (line 81) | def test_download_pdf(self):
method test_format_number (line 86) | def test_format_number(self):
method test_serializable (line 92) | def test_serializable(self):
method test_topological_sort (line 102) | def test_topological_sort(self):
FILE: contraxsuite_services/apps/common/time_limit.py
class TimeoutException (line 39) | class TimeoutException(Exception):
method __init__ (line 40) | def __init__(self, msg: str = '', timeout_seconds: int = 0):
function time_limit (line 46) | def time_limit(seconds, on_timeout: Optional[Callable[[str], None]] = No...
FILE: contraxsuite_services/apps/common/topological_sort.py
class TopologicalNode (line 40) | class TopologicalNode:
method __init__ (line 41) | def __init__(self,
method __repr__ (line 49) | def __repr__(self):
class TopologicalGraph (line 57) | class TopologicalGraph:
method __init__ (line 58) | def __init__(self, items: Iterable[Tuple[Any, Iterable[Any]]]):
method topological_sort (line 73) | def topological_sort(self):
method to_tuple_list (line 80) | def to_tuple_list(self, show_hidden=False) -> List[Tuple[Any, List[Any...
method topological_sort_util (line 84) | def topological_sort_util(self, v: Any, visited: Dict[Any, bool], stac...
function topological_sort (line 92) | def topological_sort(items: Iterable[Tuple[Any, Iterable[Any]]]) -> List...
FILE: contraxsuite_services/apps/common/url_utils.py
class URLParamFormatException (line 37) | class URLParamFormatException(Exception):
function as_bool (line 41) | def as_bool(url_params: Dict[str, Any], name: str, default_value: Option...
function as_int (line 57) | def as_int(url_params: Dict[str, Any], name: str, default_value: Optiona...
function as_int_list (line 70) | def as_int_list(url_params: Dict[str, Any], name: str, default_value: Op...
function as_str_list (line 83) | def as_str_list(url_params: Dict[str, Any], name: str, default_value: Op...
FILE: contraxsuite_services/apps/common/utils.py
class Map (line 71) | class Map(dict):
method __init__ (line 79) | def __init__(self, *args, **kwargs):
method __getattr__ (line 90) | def __getattr__(self, attr):
method __setattr__ (line 93) | def __setattr__(self, key, value):
method __setitem__ (line 96) | def __setitem__(self, key, value):
method __delattr__ (line 100) | def __delattr__(self, item):
method __delitem__ (line 103) | def __delitem__(self, key):
function cap_words (line 108) | def cap_words(value: Optional[str]) -> Optional[str]:
function clean_html_tags (line 125) | def clean_html_tags(html):
function construct_full_url (line 132) | def construct_full_url(request, rel_url):
function full_reverse (line 147) | def full_reverse(*args, **kwargs):
function export_qs_to_file (line 173) | def export_qs_to_file(request, qs, column_names=None,
function create_standard_urls (line 270) | def create_standard_urls(model, views, view_types=('list', 'add', 'detai...
function fast_uuid (line 315) | def fast_uuid():
function get_api_module (line 324) | def get_api_module(app_name):
function download_xls (line 339) | def download_xls(data: pd.DataFrame, file_name='output', sheet_name='doc'):
function download_csv (line 353) | def download_csv(data: pd.DataFrame, file_name='output'):
function download_pdf (line 362) | def download_pdf(data: pd.DataFrame, file_name='output'):
function download (line 378) | def download(data: [list, pd.DataFrame], fmt='csv', file_name='output'):
function get_test_user (line 393) | def get_test_user():
function format_number (line 415) | def format_number(num):
class Serializable (line 426) | class Serializable(dict):
method __init__ (line 428) | def __init__(self, *args, **kwargs):
method to_dict (line 433) | def to_dict(self) -> Dict[str, Any]:
method _myattrs (line 436) | def _myattrs(self):
method _repr (line 443) | def _repr(self, value):
method __repr__ (line 448) | def __repr__(self):
method keys (line 455) | def keys(self):
method values (line 458) | def values(self):
method items (line 461) | def items(self):
function fetchone (line 465) | def fetchone(pattern, text, flags=None):
function migrating (line 472) | def migrating():
function dictfetchall (line 476) | def dictfetchall(cursor):
function dictfetchone (line 487) | def dictfetchone(cursor):
function safe_to_int (line 497) | def safe_to_int(s: str) -> Union[int, None]:
class GroupConcat (line 506) | class GroupConcat(Aggregate):
method __init__ (line 520) | def __init__(self, expression, **extra):
method as_postgresql (line 526) | def as_postgresql(self, compiler, connection):
class ArrayPosition (line 531) | class ArrayPosition(Func):
method __init__ (line 539) | def __init__(self, items, *expressions, **extra):
function get_free_mem (line 553) | def get_free_mem() -> str:
function unpack_nested_dict (line 563) | def unpack_nested_dict(data: dict, to_level: Union[int, None] = 1, level...
function unpack_dict_columns (line 587) | def unpack_dict_columns(data: dict, unpack_columns=None, unpack_columns_...
function parse_date (line 607) | def parse_date(date_str: str) -> Optional[datetime.datetime]:
function get_logo_url (line 614) | def get_logo_url():
FILE: contraxsuite_services/apps/common/validators.py
class RegexPatternValidator (line 42) | class RegexPatternValidator:
method __init__ (line 45) | def __init__(self, message=None):
method __call__ (line 49) | def __call__(self, value):
method __eq__ (line 53) | def __eq__(self, other):
method check (line 59) | def check(self, value):
FILE: contraxsuite_services/apps/common/views.py
function test_500_view (line 63) | def test_500_view(request):
class MethodStatsOverviewListView (line 68) | class MethodStatsOverviewListView(SuperuserRequiredMixin, JqPaginatedLis...
method get_json_data (line 72) | def get_json_data(self, **kwargs):
class DBStatsView (line 77) | class DBStatsView(SuperuserRequiredMixin, AjaxListView):
method get_json_data (line 81) | def get_json_data(self, **kwargs):
method get_database_data (line 92) | def get_database_data(self):
method get_table_columns_data (line 117) | def get_table_columns_data(self):
method get_table_indexes_data (line 160) | def get_table_indexes_data(self):
method get_pg_stat_statements_data (line 183) | def get_pg_stat_statements_data(self):
method get_pg_stat_activity_data (line 200) | def get_pg_stat_activity_data(self):
method dictfetchall (line 219) | def dictfetchall(cursor):
method prettify_bytes (line 227) | def prettify_bytes(value):
class DockerStatsView (line 235) | class DockerStatsView(SuperuserRequiredMixin, AjaxListView):
method get_json_data (line 239) | def get_json_data(self, **kwargs):
method get_docker_nodes_data (line 250) | def get_docker_nodes_data(self):
method get_docker_services_data (line 257) | def get_docker_services_data(self):
method get_docker_services_plain_data (line 264) | def get_docker_services_plain_data(self):
method get_docker_stats_data (line 272) | def get_docker_stats_data(self):
method get_context_data (line 283) | def get_context_data(self, **kwargs):
class RedisStatsView (line 290) | class RedisStatsView(SuperuserRequiredMixin, AjaxListView):
method get_json_data (line 294) | def get_json_data(self, **kwargs):
class ReindexDBView (line 307) | class ReindexDBView(BaseAjaxTaskView):
function create_db_schema_graph_model_view (line 312) | def create_db_schema_graph_model_view(request) -> HttpResponse:
FILE: contraxsuite_services/apps/common/widgets.py
class LTRCheckboxWidget (line 48) | class LTRCheckboxWidget(forms.widgets.CheckboxInput):
method render (line 49) | def render(self, name, value, attrs=None, renderer=None):
class LTRCheckboxField (line 64) | class LTRCheckboxField(BooleanField):
method __init__ (line 68) | def __init__(self, *args, **kwargs):
class LTRRadioWidget (line 75) | class LTRRadioWidget(forms.widgets.RadioSelect):
method render (line 76) | def render(self, name, value, attrs=None, renderer=None):
class LTRCheckgroupWidget (line 96) | class LTRCheckgroupWidget(forms.CheckboxSelectMultiple):
method render (line 97) | def render(self, name, value, attrs=None, renderer=None):
method value_from_datadict (line 120) | def value_from_datadict(self, data, files, name):
class LTRRadioField (line 130) | class LTRRadioField(ChoiceField):
method __init__ (line 134) | def __init__(self, *args, **kwargs):
class FilterableProjectSelectField (line 142) | class FilterableProjectSelectField(forms.ModelChoiceField):
method _get_choices (line 143) | def _get_choices(self):
class FiltrableProjectSelectWidget (line 148) | class FiltrableProjectSelectWidget(Select):
method __init__ (line 149) | def __init__(self, *args, **kwargs):
method render (line 153) | def render(self, name: str, value, attrs=None, renderer=None):
method build_manager_change_script (line 174) | def build_manager_change_script(self, wig_id: str):
class FriendlyPasswordInput (line 193) | class FriendlyPasswordInput(PasswordInput):
method get_context (line 196) | def get_context(self, name, value, attrs):
class EditableTableWidget (line 202) | class EditableTableWidget(Textarea):
method __init__ (line 203) | def __init__(self, *args, **kwargs):
method render (line 206) | def render(self, name, value, attrs=None, renderer=None):
class CustomLabelModelChoiceField (line 230) | class CustomLabelModelChoiceField(forms.ModelChoiceField):
method __init__ (line 231) | def __init__(self, *args, **kwargs):
method label_from_instance (line 237) | def label_from_instance(self, obj):
FILE: contraxsuite_services/apps/datascience/api_wrapper.py
class _Router (line 56) | class _Router(ABC):
method get (line 60) | def get(
method post (line 76) | def post(
method patch (line 96) | def patch(
method put (line 114) | def put(
method delete (line 132) | def delete(
class ContraxSuiteAPIWrapper (line 149) | class ContraxSuiteAPIWrapper(_Router):
method __init__ (line 161) | def __init__(self, fqdn: str, username: str, password: str):
method _login (line 172) | def _login(
method _get_me (line 183) | def _get_me(self) -> dict:
method upload_documents_from_path (line 193) | def upload_documents_from_path(
method _create_upload_session (line 222) | def _create_upload_session(
method upload_document (line 239) | def upload_document(
method _monitor_progress (line 270) | def _monitor_progress(
method _subclass_container (line 303) | def _subclass_container(self) -> Dict[str, Callable]:
FILE: contraxsuite_services/apps/datascience/pprint_queryset.py
function _pprint_queryset (line 60) | def _pprint_queryset(printer, object, stream, indent, allowance, context...
function pprint_qs (line 69) | def pprint_qs(queryset: django.db.models.query.QuerySet, end: int = 10, ...
FILE: contraxsuite_services/apps/deployment/app_data.py
function fake_progress (line 85) | def fake_progress() -> None:
function load_geo_entities (line 89) | def load_geo_entities(df: DataFrame, total_progress: Callable[[int], Non...
function load_terms (line 149) | def load_terms(df: DataFrame,
function deserialize_term_from_row (line 234) | def deserialize_term_from_row(
function load_courts (line 266) | def load_courts(df: DataFrame) -> int:
function get_dictionary_data_urls (line 288) | def get_dictionary_data_urls(dictionary_name: str, locale: str, use_defa...
function get_terms_data_urls (line 298) | def get_terms_data_urls(locale='en', use_default_url_map=True) -> list:
function get_courts_data_urls (line 302) | def get_courts_data_urls(locale='en', use_default_url_map=True) -> list:
function get_geoentities_data_urls (line 306) | def get_geoentities_data_urls(locale='multi', use_default_url_map=True) ...
function load_df (line 310) | def load_df(urls: list) -> pd.DataFrame:
FILE: contraxsuite_services/apps/deployment/management/commands/init_app_data.py
class DataLoader (line 63) | class DataLoader:
method __init__ (line 64) | def __init__(self, initialization_flag: AppVar = None):
method load (line 67) | def load(self) -> None:
method load_once (line 70) | def load_once(self) -> None:
class ZipFileLoader (line 85) | class ZipFileLoader(DataLoader):
method __init__ (line 86) | def __init__(self, zip_file: ZipFile = None, files: list = None, initi...
method load_df (line 91) | def load_df(self) -> pd.DataFrame:
method upload_df (line 98) | def upload_df(self, df: pd.DataFrame) -> None:
method load (line 101) | def load(self) -> None:
class TermsLoader (line 105) | class TermsLoader(ZipFileLoader):
method __init__ (line 107) | def __init__(self, zip_file: ZipFile = None, files: list = None):
method upload_df (line 111) | def upload_df(self, df: pd.DataFrame) -> None:
class CourtsLoader (line 126) | class CourtsLoader(ZipFileLoader):
method __init__ (line 128) | def __init__(self, zip_file: ZipFile = None, files: list = None):
method upload_df (line 132) | def upload_df(self, df: pd.DataFrame) -> None:
class GeoEntitiesLoader (line 147) | class GeoEntitiesLoader(ZipFileLoader):
method __init__ (line 149) | def __init__(self, zip_file: ZipFile = None, files: list = None):
method upload_df (line 153) | def upload_df(self, df: pd.DataFrame) -> None:
class DictionaryLoader (line 169) | class DictionaryLoader(DataLoader):
method __init__ (line 176) | def __init__(self, zip_or_dir_path: str):
method load (line 180) | def load(self) -> None:
class DocumentDataLoader (line 203) | class DocumentDataLoader(DataLoader):
method __init__ (line 205) | def __init__(self, zip_or_dir_path: str):
method load (line 210) | def load(self) -> None:
class TermsByUrlLoader (line 238) | class TermsByUrlLoader(TermsLoader):
method __init__ (line 240) | def __init__(self):
method load_df (line 243) | def load_df(self) -> pd.DataFrame:
class CourtsByUrlLoader (line 247) | class CourtsByUrlLoader(CourtsLoader):
method __init__ (line 249) | def __init__(self):
method load_df (line 252) | def load_df(self) -> pd.DataFrame:
class GeoEntitiesByUrlLoader (line 256) | class GeoEntitiesByUrlLoader(GeoEntitiesLoader):
method __init__ (line 258) | def __init__(self):
method load_df (line 261) | def load_df(self) -> pd.DataFrame:
class Command (line 265) | class Command(BaseCommand):
method get_file_loader (line 273) | def get_file_loader(self, file: str) -> Optional[Callable[[str], None]]:
method add_arguments (line 279) | def add_arguments(self, parser) -> None:
method get_processed_dir (line 285) | def get_processed_dir(cls, data_dir):
method handle (line 292) | def handle(self, *args: Tuple, **options: Dict[Any, Any]) -> None:
FILE: contraxsuite_services/apps/deployment/management/commands/init_deployment_object.py
class Command (line 40) | class Command(BaseCommand):
method handle (line 47) | def handle(self, *args, **options):
FILE: contraxsuite_services/apps/deployment/migrations/0001_initial.py
class Migration (line 9) | class Migration(migrations.Migration):
FILE: contraxsuite_services/apps/deployment/models.py
class Deployment (line 43) | class Deployment(models.Model):
FILE: contraxsuite_services/apps/deployment/tasks.py
function usage_stats (line 51) | def usage_stats(_celery_task):
FILE: contraxsuite_services/apps/document/admin.py
class ModelAdminWithPrettyJsonField (line 114) | class ModelAdminWithPrettyJsonField(admin.ModelAdmin):
class PrettyJsonFieldMixin (line 123) | class PrettyJsonFieldMixin:
class DocumentTextInline (line 132) | class DocumentTextInline(admin.TabularInline):
class DocumentMetadatatInline (line 136) | class DocumentMetadatatInline(admin.TabularInline):
class TermUsageField (line 140) | class TermUsageField(StrField):
method get_lookup_name (line 147) | def get_lookup_name(self):
method get_lookup (line 150) | def get_lookup(self, path, operator, value):
class DocumentQLSchema (line 167) | class DocumentQLSchema(DjangoQLSchema):
method get_fields (line 168) | def get_fields(self, model):
function get_unique_search_results (line 175) | def get_unique_search_results(admin_view: DjangoQLSearchMixin,
class DocumentAdmin (line 198) | class DocumentAdmin(DjangoQLSearchMixin,
method get_queryset (line 216) | def get_queryset(self, request):
method get_search_results (line 226) | def get_search_results(self, request, queryset, search_term):
method doc_ref (line 230) | def doc_ref(self, obj):
method get_actions (line 236) | def get_actions(self, request):
method status_name (line 243) | def status_name(obj):
method has_delete_permission (line 246) | def has_delete_permission(self, request, obj=None):
method full_reverse (line 249) | def full_reverse(self, *args, **kwargs):
class DocumentTextAdmin (line 253) | class DocumentTextAdmin(ModelAdminWithPrettyJsonField, SimpleHistoryAdmin):
class DocumentMetadataAdmin (line 257) | class DocumentMetadataAdmin(ModelAdminWithPrettyJsonField, SimpleHistory...
class SoftDeleteDocument (line 261) | class SoftDeleteDocument(Document):
class Meta (line 262) | class Meta:
class DeletePendingFilter (line 266) | class DeletePendingFilter(admin.SimpleListFilter):
method lookups (line 271) | def lookups(self, request, model_admin):
method queryset (line 277) | def queryset(self, request, queryset):
function set_soft_delete (line 285) | def set_soft_delete(document_ids: List[int], delete_not_undelete: bool, ...
function mark_deleting (line 292) | def mark_deleting(_modeladmin, request, queryset):
function unmark_deleting (line 301) | def unmark_deleting(_, request, queryset):
function delete_checked_documents (line 309) | def delete_checked_documents(_, request, queryset):
class SoftDeleteDocumentAdmin (line 318) | class SoftDeleteDocumentAdmin(DocumentAdmin):
method get_project (line 325) | def get_project(self, obj):
method get_name (line 331) | def get_name(self, obj):
method get_actions (line 342) | def get_actions(self, request):
method has_add_permission (line 348) | def has_add_permission(self, request, obj=None):
method has_delete_permission (line 351) | def has_delete_permission(self, request, obj=None):
method delete_all_checked (line 354) | def delete_all_checked(self, request):
method confirm_delete_view (line 359) | def confirm_delete_view(self, request):
method get_urls (line 399) | def get_urls(self):
class UsersTasksValidationAdmin (line 411) | class UsersTasksValidationAdmin(admin.ModelAdmin):
class QSList (line 416) | class QSList(list):
method __init__ (line 417) | def __init__(self, qs):
method count (line 423) | def count(self, **kwargs):
method delete (line 426) | def delete(self):
method users_tasks_validation_enabled (line 430) | def users_tasks_validation_enabled(cls):
method get_user_task_names (line 436) | def get_user_task_names(cls):
method validate_running_tasks (line 448) | def validate_running_tasks(cls, request, dst_errors_dict: Dict[str, An...
method _get_deleted_objects (line 466) | def _get_deleted_objects(objects, request, admin_site=None):
method delete_selected_action (line 469) | def delete_selected_action(self, model_admin, request, qs):
method get_actions (line 485) | def get_actions(self, request):
method delete_model (line 491) | def delete_model(self, request, obj):
method on_object_deleted (line 495) | def on_object_deleted(self, obj):
method _get_confirm_action_name (line 499) | def _get_confirm_action_name(cls, base_action):
method build_warning_context (line 502) | def build_warning_context(self, object_id, form) -> dict:
method _prepare_form_template (line 509) | def _prepare_form_template(self, request, object_id, extra_context=None):
method change_view (line 540) | def change_view(self, request, object_id, form_url='', extra_context=N...
method render_delete_form (line 545) | def render_delete_form(self, request, context):
method get_confirmation_form (line 551) | def get_confirmation_form(cls, form_class):
method get_form (line 559) | def get_form(self, request, obj=None, **kwargs):
class FieldValuesValidationAdmin (line 566) | class FieldValuesValidationAdmin(UsersTasksValidationAdmin):
method build_warning_context (line 569) | def build_warning_context(self, object_id, form) -> dict:
method add_view (line 597) | def add_view(self, request, form_url='', extra_context=None):
class DocumentFieldFormulaCheck (line 603) | class DocumentFieldFormulaCheck:
method __init__ (line 605) | def __init__(self, request_data, document_field=None, return_json_resp...
method check (line 669) | def check(self):
method get_formula_errors (line 685) | def get_formula_errors(self):
method shown_by_mask (line 726) | def shown_by_mask(mask: int, bit_num: int):
method calculate_formula_result_on_values (line 730) | def calculate_formula_result_on_values(self,
method check_formula_refs (line 768) | def check_formula_refs(formula: str,
class FormulaCheckResult (line 795) | class FormulaCheckResult:
method __init__ (line 796) | def __init__(self, calculated: bool, value: Any = None, errors: List...
method to_json (line 803) | def to_json(self):
class ModelFormWithUnchangeableFields (line 807) | class ModelFormWithUnchangeableFields(forms.ModelForm):
method is_update (line 816) | def is_update(self):
method __init__ (line 823) | def __init__(self, *args, **kwargs):
class DocumentFieldForm (line 846) | class DocumentFieldForm(ModelFormWithUnchangeableFields):
class DefaultValueField (line 851) | class DefaultValueField(JSONField):
method to_python (line 852) | def to_python(self, value):
class Meta (line 900) | class Meta:
method __init__ (line 905) | def __init__(self, *args, **kwargs):
method _extract_field_and_deps (line 915) | def _extract_field_and_deps(cls, base_fields: List[DocumentField], fie...
method calc_formula (line 922) | def calc_formula(self, formula_value, formula_field_name) -> Any:
method validate_field_code (line 939) | def validate_field_code(self):
method clean_depends_on_fields (line 958) | def clean_depends_on_fields(self):
method _post_clean (line 978) | def _post_clean(self):
method clean (line 1024) | def clean(self):
class DocumentFieldTypeCodeFilter (line 1161) | class DocumentFieldTypeCodeFilter(admin.SimpleListFilter):
method lookups (line 1166) | def lookups(self, request, model_admin):
method queryset (line 1170) | def queryset(self, request, queryset):
class DocumentFieldAdmin (line 1176) | class DocumentFieldAdmin(FieldValuesValidationAdmin):
method __init__ (line 1224) | def __init__(self, *args, **kwargs):
method get_search_results (line 1229) | def get_search_results(self, request, queryset, search_term):
method save_model (line 1233) | def save_model(self, request, field, form, change):
method delete_model (line 1237) | def delete_model(self, request, field: DocumentField):
method delete_queryset (line 1241) | def delete_queryset(self, request, queryset: Union[QuerySet, Iterable[...
method _save_model (line 1247) | def _save_model(self, request, obj: DocumentField, form, change: bool)...
method check_cache_column_limit (line 1292) | def check_cache_column_limit(self,
method response_change (line 1299) | def response_change(self, request, obj: DocumentField):
method response_add (line 1304) | def response_add(self, request, obj: DocumentField,
method process_add_or_change (line 1308) | def process_add_or_change(self,
method confirm_newchoices_view (line 1323) | def confirm_newchoices_view(self, request, **kwargs):
method on_object_deleted (line 1364) | def on_object_deleted(self, obj):
method user (line 1368) | def user(obj):
method add_view (line 1371) | def add_view(self, request, form_url='', extra_context=None):
method change_view (line 1377) | def change_view(self, request, object_id, form_url='', extra_context=N...
method response_clone (line 1386) | def response_clone(self, request, obj):
method save_form (line 1400) | def save_form(self, request, form, change):
method get_form (line 1411) | def get_form(self, request, obj=None, **kwargs):
method get_fieldsets (line 1417) | def get_fieldsets(self, request, obj=None):
method get_urls (line 1425) | def get_urls(self):
method _get_deleted_objects (line 1438) | def _get_deleted_objects(objects, request, admin_site=None):
method get_deleted_objects (line 1459) | def get_deleted_objects(self, objs, request):
method _delete_view (line 1462) | def _delete_view(self, request, object_id, extra_context):
method delete_selected_action (line 1470) | def delete_selected_action(self, model_admin, request, qs):
method get_categories_by_doctype (line 1479) | def get_categories_by_doctype(cls) -> Dict[str, List[str]]:
class DocumentTypeListFilter (line 1490) | class DocumentTypeListFilter(admin.SimpleListFilter):
method lookups (line 1500) | def lookups(self, request, model_admin):
method queryset (line 1512) | def queryset(self, request, queryset):
class FieldDetectorListFilter (line 1523) | class FieldDetectorListFilter(admin.SimpleListFilter):
method lookups (line 1533) | def lookups(self, request, model_admin):
method queryset (line 1550) | def queryset(self, request, queryset):
class DocumentFieldDetectorForm (line 1561) | class DocumentFieldDetectorForm(forms.ModelForm):
class Meta (line 1562) | class Meta:
method __init__ (line 1566) | def __init__(self, *args, **kwargs):
method clean (line 1570) | def clean(self):
method clean_detect_limit_count (line 1603) | def clean_detect_limit_count(self):
class DocumentFieldDetectorAdmin (line 1613) | class DocumentFieldDetectorAdmin(admin.ModelAdmin):
method document_type_code (line 1623) | def document_type_code(obj):
method field_code (line 1629) | def field_code(obj):
method include_regexps_ (line 1635) | def include_regexps_(obj):
method exclude_regexps_ (line 1641) | def exclude_regexps_(obj: DocumentFieldDetector):
method definition_words_ (line 1647) | def definition_words_(obj: DocumentFieldDetector):
method save_model (line 1652) | def save_model(self, request, detector, form, change):
method delete_model (line 1656) | def delete_model(self, request, detector: DocumentFieldDetector):
method delete_queryset (line 1660) | def delete_queryset(self, request, queryset: Union[QuerySet, Iterable[...
class DocumentFieldMultilineRegexDetectorForm (line 1667) | class DocumentFieldMultilineRegexDetectorForm(forms.ModelForm):
class Meta (line 1670) | class Meta:
class DocumentFieldMultilineRegexDetectorAdmin (line 1676) | class DocumentFieldMultilineRegexDetectorAdmin(admin.ModelAdmin):
method document_type_code (line 1687) | def document_type_code(obj):
method field_code (line 1693) | def field_code(obj):
method csv_content_ (line 1699) | def csv_content_(obj):
method save_model (line 1729) | def save_model(self, request, obj, form, change):
method update_csv_table_row (line 1733) | def update_csv_table_row(self, request):
method get_urls (line 1774) | def get_urls(self):
method render_change_form (line 1783) | def render_change_form(self, request, context, add=False, change=False...
class FieldValueAdmin (line 1788) | class FieldValueAdmin(admin.ModelAdmin):
method document_type (line 1797) | def document_type(obj):
method field_code (line 1801) | def field_code(obj):
method user (line 1805) | def user(obj):
class FieldAnnotationStatusAdmin (line 1809) | class FieldAnnotationStatusAdmin(admin.ModelAdmin):
class FieldAnnotationAdmin (line 1814) | class FieldAnnotationAdmin(admin.ModelAdmin):
method document_type (line 1825) | def document_type(obj):
method field_code (line 1829) | def field_code(obj):
method status (line 1833) | def status(obj):
method assignee (line 1837) | def assignee(obj):
method user (line 1841) | def user(obj):
class FieldAnnotationFalseMatchAdmin (line 1845) | class FieldAnnotationFalseMatchAdmin(admin.ModelAdmin):
method document_type (line 1853) | def document_type(obj):
method field_code (line 1857) | def field_code(obj):
class FieldAnnotationSavedFilterAdmin (line 1861) | class FieldAnnotationSavedFilterAdmin(admin.ModelAdmin):
class ExternalFieldValueAdmin (line 1866) | class ExternalFieldValueAdmin(admin.ModelAdmin):
class DocumentFieldInlineFormset (line 1871) | class DocumentFieldInlineFormset(forms.models.BaseInlineFormSet):
method clean (line 1872) | def clean(self):
class DocumentFieldFormInline (line 1902) | class DocumentFieldFormInline(forms.ModelForm):
method __init__ (line 1908) | def __init__(self, *args, **kwargs):
method save (line 1926) | def save(self, *args, **kwargs):
class DocumentFieldInlineAdmin (line 1939) | class DocumentFieldInlineAdmin(admin.TabularInline):
method has_add_permission (line 1964) | def has_add_permission(self, request, obj=None):
method has_delete_permission (line 1967) | def has_delete_permission(self, request, obj=None):
class DocumentTypeForm (line 1971) | class DocumentTypeForm(ModelFormWithUnchangeableFields):
class Meta (line 1981) | class Meta:
method clean_code (line 1986) | def clean_code(self):
class DocumentTypeAdmin (line 1997) | class DocumentTypeAdmin(ModelAdminWithPrettyJsonField, UsersTasksValidat...
method __init__ (line 2024) | def __init__(self, *args, **kwargs):
method get_queryset (line 2028) | def get_queryset(self, request) -> QuerySet:
method field_count (line 2035) | def field_count(self, obj) -> int:
method project_count (line 2041) | def project_count(self, obj) -> int:
method user (line 2048) | def user(obj):
method save_model (line 2051) | def save_model(self, request, obj: DocumentType, form, change: bool):
method _get_deleted_objects (line 2061) | def _get_deleted_objects(objects, request, admin_site=None):
method get_deleted_objects (line 2077) | def get_deleted_objects(self, objs, request):
method warn_related_projects_exist (line 2080) | def warn_related_projects_exist(self,
method _delete_view (line 2106) | def _delete_view(self, request, object_id, extra_context):
method response_delete (line 2124) | def response_delete(self, request, obj_display, obj_id):
method delete_selected_action (line 2138) | def delete_selected_action(self, model_admin, request, qs):
method should_run_delete_task (line 2166) | def should_run_delete_task(self, objs):
method run_delete_task (line 2180) | def run_delete_task(self, request, queryset):
method delete_model (line 2195) | def delete_model(self, request, obj):
method delete_queryset (line 2203) | def delete_queryset(self, request, queryset):
method on_object_deleted (line 2213) | def on_object_deleted(self, obj):
method change_view (line 2220) | def change_view(self, request, object_id, form_url='', extra_context=N...
method response_change (line 2226) | def response_change(self, request, obj):
method save_form (line 2242) | def save_form(self, request, form, change):
method get_form (line 2253) | def get_form(self, request, obj=None, **kwargs):
method get_fieldsets (line 2259) | def get_fieldsets(self, request, obj=None):
method get_inline_instances (line 2267) | def get_inline_instances(self, request, obj=None):
method get_urls (line 2272) | def get_urls(self):
class DocumentPropertyAdmin (line 2282) | class DocumentPropertyAdmin(admin.ModelAdmin):
class DocumentRelationAdmin (line 2287) | class DocumentRelationAdmin(admin.ModelAdmin):
class TextUnitAdmin (line 2292) | class TextUnitAdmin(DjangoQLSearchMixin, admin.ModelAdmin):
method get_search_results (line 2300) | def get_search_results(self, request, queryset, search_term):
method get_queryset (line 2304) | def get_queryset(self, request):
method unit_ref (line 2313) | def unit_ref(self, obj):
method full_reverse (line 2319) | def full_reverse(self, *args, **kwargs):
class TextUnitRelatedAdmin (line 2323) | class TextUnitRelatedAdmin(admin.ModelAdmin):
method get_queryset (line 2326) | def get_queryset(self, request):
class TextUnitPropertyAdmin (line 2332) | class TextUnitPropertyAdmin(TextUnitRelatedAdmin):
class TextUnitTagAdmin (line 2337) | class TextUnitTagAdmin(TextUnitRelatedAdmin):
class TextUnitNoteAdmin (line 2342) | class TextUnitNoteAdmin(TextUnitRelatedAdmin, SimpleHistoryAdmin):
class DocumentNoteAdmin (line 2347) | class DocumentNoteAdmin(SimpleHistoryAdmin):
class ClassifierModelAdmin (line 2352) | class ClassifierModelAdmin(SimpleHistoryAdmin):
class DocumentFieldCategoryForm (line 2357) | class DocumentFieldCategoryForm(forms.ModelForm):
class Meta (line 2358) | class Meta:
method __init__ (line 2368) | def __init__(self, *args, **kwargs):
method clean (line 2378) | def clean(self):
method save (line 2384) | def save(self, *args, **kwargs):
method save_m2m (line 2392) | def save_m2m(self, *args, **kwargs):
class DocumentFieldCategoryAdmin (line 2396) | class DocumentFieldCategoryAdmin(admin.ModelAdmin):
method formfield_for_foreignkey (line 2401) | def formfield_for_foreignkey(self, db_field, request, **kwargs):
method get_fields (line 2410) | def get_fields(self, request, obj=None):
class DocumentFieldFamilyInline (line 2418) | class DocumentFieldFamilyInline(admin.TabularInline):
class DocumentFieldFamilyForm (line 2422) | class DocumentFieldFamilyForm(ModelFormWithUnchangeableFields):
class Meta (line 2433) | class Meta:
method __init__ (line 2437) | def __init__(self, *args, **kwargs):
method save (line 2446) | def save(self, *args, **kwargs):
method save_m2m (line 2454) | def save_m2m(self, *args, **kwargs):
method clean_title (line 2457) | def clean_title(self):
method clean_code (line 2463) | def clean_code(self):
class DocumentFieldFamilyAdmin (line 2475) | class DocumentFieldFamilyAdmin(admin.ModelAdmin):
FILE: contraxsuite_services/apps/document/api/annotator_error.py
class FieldLogicError (line 36) | class FieldLogicError(RuntimeError):
class NoValueProvidedOrLocated (line 40) | class NoValueProvidedOrLocated(FieldLogicError):
class RelatedInfoFieldNotRequiringAnnotationOnlySupportsYesAsValue (line 44) | class RelatedInfoFieldNotRequiringAnnotationOnlySupportsYesAsValue(Field...
class UpdatingReadOnlyFieldNotAllowed (line 48) | class UpdatingReadOnlyFieldNotAllowed(FieldLogicError):
class FieldRequiresTextAnnotation (line 52) | class FieldRequiresTextAnnotation(FieldLogicError):
FILE: contraxsuite_services/apps/document/api/field_value_views.py
class FieldValueView (line 47) | class FieldValueView(views.APIView):
method list (line 50) | def list(self, request, *args, **kwargs):
method annotate (line 54) | def annotate(self, request):
function do_save_document_field_value (line 70) | def do_save_document_field_value(
FILE: contraxsuite_services/apps/document/api/v1.py
class GeneratorListSerializer (line 123) | class GeneratorListSerializer(serializers.ListSerializer):
method to_representation (line 128) | def to_representation(self, data):
method unify_representation (line 146) | def unify_representation(self, item):
method data (line 158) | def data(self):
class UserSerializer (line 168) | class UserSerializer(serializers.ModelSerializer):
class Meta (line 171) | class Meta:
method get_photo (line 175) | def get_photo(self, obj):
class DocumentNoteDetailSerializer (line 180) | class DocumentNoteDetailSerializer(SimpleRelationSerializer):
class Meta (line 194) | class Meta:
method get_selections (line 200) | def get_selections(self, obj: DocumentNote):
method get_note_selections (line 205) | def get_note_selections(cls, note: DocumentNote) -> Optional[Dict[str,...
class DocumentNoteExportSerializer (line 217) | class DocumentNoteExportSerializer(DocumentNoteDetailSerializer):
class Meta (line 221) | class Meta:
method get_annotation_text (line 225) | def get_annotation_text(self, obj):
class DocumentNoteCreateSerializer (line 232) | class DocumentNoteCreateSerializer(DocumentNoteDetailSerializer):
class Meta (line 235) | class Meta(DocumentNoteDetailSerializer.Meta):
method get_selections (line 240) | def get_selections(self, obj: DocumentNote):
method is_valid (line 245) | def is_valid(self, raise_exception=False):
method save (line 255) | def save(self):
class DocumentNoteUpdateSerializer (line 264) | class DocumentNoteUpdateSerializer(serializers.ModelSerializer):
class Meta (line 265) | class Meta:
method get_selections (line 271) | def get_selections(self, obj: DocumentNote):
method save (line 275) | def save(self):
class DocumentNotePermissions (line 284) | class DocumentNotePermissions(IsAuthenticated):
method has_permission (line 286) | def has_permission(self, request, view):
method has_object_permission (line 296) | def has_object_permission(self, request, view, obj):
class DocumentNotePermissionViewMixin (line 301) | class DocumentNotePermissionViewMixin:
method get_queryset (line 304) | def get_queryset(self):
class DocumentNoteViewSet (line 316) | class DocumentNoteViewSet(DocumentNotePermissionViewMixin, APIActionMixi...
method dispatch (line 329) | def dispatch(self, request, *args, **kwargs):
method get_queryset (line 352) | def get_queryset(self):
method get_serializer_class (line 368) | def get_serializer_class(self):
method get_action_message (line 377) | def get_action_message(self):
class FieldAnnotationValueSerializer (line 390) | class FieldAnnotationValueSerializer(serializers.ModelSerializer):
class Meta (line 396) | class Meta:
method get_field_name (line 405) | def get_field_name(self, obj: FieldAnnotation):
method get_project (line 411) | def get_project(self, obj: FieldAnnotation):
method get_value (line 415) | def get_value(self, obj: FieldAnnotation):
class DocumentDetailDjangoQLSerializer (line 420) | class DocumentDetailDjangoQLSerializer(serializers.ModelSerializer):
class Meta (line 426) | class Meta:
class DocumentDetailSerializer (line 431) | class DocumentDetailSerializer(DocumentsForUserSerializer):
class Meta (line 461) | class Meta:
method __init__ (line 477) | def __init__(self, *args, **kwargs):
method get_user_permissions (line 488) | def get_user_permissions(self, obj):
method get_available_statuses_data (line 496) | def get_available_statuses_data(self, obj):
method get_neighbours (line 501) | def get_neighbours(self, document, use_saved_filter=True):
method get_prev_id (line 522) | def get_prev_id(self, obj):
method get_next_id (line 527) | def get_next_id(self, obj):
method get_position (line 532) | def get_position(self, obj):
method get_documents_count (line 537) | def get_documents_count(self, obj):
method get_sections (line 542) | def get_sections(self, obj):
method get_field_values (line 550) | def get_field_values(self, doc: Document):
method get_field_value_objects (line 565) | def get_field_value_objects(self, doc: Document):
method get_was_opened_in_annotator (line 590) | def get_was_opened_in_annotator(self, doc: Document):
method add_field_value_location_coordinates (line 597) | def add_field_value_location_coordinates(
method get_initial_annotation_id (line 615) | def get_initial_annotation_id(self, obj):
method get_page_locations (line 629) | def get_page_locations(self, doc: Document):
method get_page_bounds (line 637) | def get_page_bounds(self, doc: Document):
method to_representation (line 650) | def to_representation(self, instance: Document):
method add_selections_to_notes (line 664) | def add_selections_to_notes(self,
method add_selections_to_field_value_objects (line 678) | def add_selections_to_field_value_objects(
method add_section_markup_detail (line 696) | def add_section_markup_detail(self,
class DocumentPermissions (line 732) | class DocumentPermissions(IsAuthenticated):
method has_object_permission (line 734) | def has_object_permission(self, request, view, obj):
method has_permission (line 753) | def has_permission(self, request, view):
class DocumentPermissionViewMixin (line 779) | class DocumentPermissionViewMixin:
method get_queryset (line 782) | def get_queryset(self):
class DocumentViewSet (line 799) | class DocumentViewSet(APILoggingMixin,
method __init__ (line 810) | def __init__(self, *args, **kwargs):
method get_queryset (line 828) | def get_queryset(self):
method is_valid_ql (line 874) | def is_valid_ql(ql):
method get_extra_data (line 894) | def get_extra_data(self, queryset, initial_queryset):
method get_serializer_class (line 900) | def get_serializer_class(self, *args, **kwargs):
method get_export_file_name (line 907) | def get_export_file_name(self):
method process_export_data (line 912) | def process_export_data(self, data):
method set_annotator_coord_difference (line 922) | def set_annotator_coord_difference(self, request, **kwargs):
method show (line 946) | def show(self, request, **kwargs):
method download_zip (line 951) | def download_zip(self, request, **kwargs):
method for_user (line 1016) | def for_user(self, request, *args, **kwrags):
method full_text (line 1022) | def full_text(self, request, *args, **kwargs):
method has_pdf_info (line 1028) | def has_pdf_info(self, request, *args, **kwargs):
method pdf_repr (line 1042) | def pdf_repr(self, request: HttpRequest, *args, **kwargs):
method data (line 1053) | def data(self, request, *args, **kwrags):
method fields (line 1060) | def fields(self, request: HttpRequest, *args, **kwargs):
method extraction (line 1102) | def extraction(self, request, **kwargs):
method _add_selection_areas_to_extracted_entities (line 1157) | def _add_selection_areas_to_extracted_entities(
method definitions (line 1179) | def definitions(self, request, **kwargs):
method add_selections_to_definitions (line 1191) | def add_selections_to_definitions(cls, definitions: List[Dict[str, Any...
method ensure_document_definitions (line 1210) | def ensure_document_definitions(cls, document: Document) -> None:
method similar (line 1233) | def similar(self, request, **kwargs):
method mark_delete (line 1247) | def mark_delete(self, request, **kwargs):
method unmark_delete (line 1257) | def unmark_delete(self, request, **kwargs):
method get_affected_document_ids (line 1266) | def get_affected_document_ids(self, request):
method mark_unmark_for_delete (line 1281) | def mark_unmark_for_delete(self, delete_not_undelete: bool, request) -...
method update (line 1288) | def update(self, request, *args, **kwargs):
method filter_queryset (line 1353) | def filter_queryset(self, queryset):
method actions (line 1361) | def actions(self, request, **kwargs):
method save_user_action (line 1374) | def save_user_action(self, request, *args, **kwargs):
method get_action_name (line 1399) | def get_action_name(self):
method get_action_message (line 1404) | def get_action_message(self):
method should_track_view_action (line 1410) | def should_track_view_action(self):
method get_updated_fields_message (line 1415) | def get_updated_fields_message(self, old_instance_state, new_instance_...
class TextUnitDjangoQLSerializer (line 1446) | class TextUnitDjangoQLSerializer(SimpleRelationSerializer):
class Meta (line 1450) | class Meta:
class TextUnitViewSet (line 1457) | class TextUnitViewSet(APILoggingMixin,
method get_queryset (line 1469) | def get_queryset(self):
method is_valid_ql (line 1489) | def is_valid_ql(ql):
class DocumentFieldCategorySimpleSerializer (line 1514) | class DocumentFieldCategorySimpleSerializer(serializers.ModelSerializer):
class Meta (line 1515) | class Meta:
class DocumentFieldFamilySerializer (line 1520) | class DocumentFieldFamilySerializer(serializers.ModelSerializer):
class Meta (line 1521) | class Meta:
class DocumentFieldDetailSerializer (line 1526) | class DocumentFieldDetailSerializer(SimpleRelationSerializer):
class Meta (line 1534) | class Meta:
method get_category (line 1551) | def get_category(self, obj):
method get_value_aware (line 1556) | def get_value_aware(self, obj: DocumentField):
method get_choices (line 1561) | def get_choices(self, obj: DocumentField):
method get_depends_on_fields (line 1566) | def get_depends_on_fields(self, obj: DocumentField):
method get_value_detection_strategy_name (line 1571) | def get_value_detection_strategy_name(self, obj: DocumentField):
method get_is_value_detection_strategy_disabled (line 1576) | def get_is_value_detection_strategy_disabled(self, obj: DocumentField):
class DocumentFieldListSerializer (line 1583) | class DocumentFieldListSerializer(DocumentFieldDetailSerializer):
class ModelFormBasedSerializer (line 1588) | class ModelFormBasedSerializer(serializers.ModelSerializer):
method __init__ (line 1594) | def __init__(self, *args, **kwargs):
method get_fields (line 1599) | def get_fields(self):
method is_valid (line 1618) | def is_valid(self, raise_exception=False):
class DocumentFieldCreateSerializer (line 1645) | class DocumentFieldCreateSerializer(ModelFormBasedSerializer):
class Meta (line 1648) | class Meta:
method __init__ (line 1664) | def __init__(self, *args, **kwargs):
method get_fields (line 1672) | def get_fields(self):
method get_warning_message (line 1692) | def get_warning_message(self, obj):
method is_valid (line 1697) | def is_valid(self, raise_exception=False):
method validate (line 1706) | def validate(self, attrs):
method save (line 1724) | def save(self, **kwargs):
class DocumentFieldPermissions (line 1730) | class DocumentFieldPermissions(IsAuthenticated):
method has_permission (line 1732) | def has_permission(self, request, view):
method has_object_permission (line 1743) | def has_object_permission(self, request, view, obj):
class DocumentFieldViewMixin (line 1759) | class DocumentFieldViewMixin:
method get_queryset (line 1762) | def get_queryset(self):
class DocumentFieldViewSet (line 1769) | class DocumentFieldViewSet(DocumentFieldViewMixin,
method get_stats_qs (line 1819) | def get_stats_qs(self, qs):
method get_queryset (line 1905) | def get_queryset(self):
method get_extra_data (line 1911) | def get_extra_data(self, qs, initial_qs):
method dispatch (line 1919) | def dispatch(self, request, *args, **kwargs):
method destroy (line 1939) | def destroy(self, request, *args, **kwargs):
method perform_destroy (line 1950) | def perform_destroy(self, instance):
method get_serializer_class (line 1954) | def get_serializer_class(self):
method stats (line 1964) | def stats(self, request, *args, **kwargs):
method check_field_formula (line 1970) | def check_field_formula(self, request, **kwargs):
method check_formula (line 1986) | def check_formula(self, request, **kwargs):
method clone_field (line 2003) | def clone_field(cls, source_field, target_document_type,
method clone (line 2087) | def clone(self, request, **kwargs):
method pre_delete (line 2112) | def pre_delete(self, request, **kwargs):
class FieldSimpleSerializer (line 2144) | class FieldSimpleSerializer(serializers.ModelSerializer):
class Meta (line 2147) | class Meta:
class DocumentFieldCategoryListSerializer (line 2152) | class DocumentFieldCategoryListSerializer(serializers.ModelSerializer):
class Meta (line 2157) | class Meta:
class DocumentFieldCategoryCreateSerializer (line 2163) | class DocumentFieldCategoryCreateSerializer(ModelFormBasedSerializer):
class Meta (line 2168) | class Meta:
method set_fields (line 2172) | def set_fields(self, instance: DocumentFieldCategory):
method create (line 2178) | def create(self, validated_data):
method update (line 2182) | def update(self, instance, validated_data):
class DocumentFieldCategoryOptionsSerializer (line 2189) | class DocumentFieldCategoryOptionsSerializer(DocumentFieldCategoryCreate...
class Meta (line 2192) | class Meta:
class DocumentFieldCategoryPermissions (line 2197) | class DocumentFieldCategoryPermissions(IsAuthenticated):
method has_permission (line 2199) | def has_permission(self, request, view):
method has_object_permission (line 2204) | def has_object_permission(self, request, view, obj):
class DocumentFieldCategoryViewPermissionsMixin (line 2216) | class DocumentFieldCategoryViewPermissionsMixin:
method get_queryset (line 2219) | def get_queryset(self):
class DocumentFieldCategoryViewSet (line 2229) | class DocumentFieldCategoryViewSet(DocumentFieldCategoryViewPermissionsM...
method get_queryset (line 2255) | def get_queryset(self):
method get_serializer_class (line 2260) | def get_serializer_class(self):
method get_fields_data (line 2265) | def get_fields_data(self):
method patched_object_response (line 2283) | def patched_object_response(self, response):
method create (line 2289) | def create(self, request, *args, **kwargs):
method update (line 2293) | def update(self, request, *args, **kwargs):
class DocumentFieldDetectorDetailSerializer (line 2302) | class DocumentFieldDetectorDetailSerializer(SimpleRelationSerializer):
class Meta (line 2306) | class Meta:
method get_field (line 2315) | def get_field(self, obj):
method get_include_regexps (line 2318) | def get_include_regexps(self, obj):
function check (line 2324) | def check(func):
class DocumentFieldDetectorCreateSerializer (line 2335) | class DocumentFieldDetectorCreateSerializer(ModelFormBasedSerializer):
class Meta (line 2338) | class Meta:
method __init__ (line 2345) | def __init__(self, *args, **kwargs):
method get_warning_message (line 2353) | def get_warning_message(self, obj):
method get_field_names (line 2358) | def get_field_names(self, declared_fields, info):
method validate (line 2365) | def validate(self, data):
method is_valid (line 2371) | def is_valid(self, raise_exception=False):
class DocumentFieldDetectorPermissions (line 2383) | class DocumentFieldDetectorPermissions(IsAuthenticated):
method has_permission (line 2385) | def has_permission(self, request, view):
method has_object_permission (line 2394) | def has_object_permission(self, request, view, obj):
class DocumentFieldDetectorViewMixin (line 2406) | class DocumentFieldDetectorViewMixin:
method get_queryset (line 2409) | def get_queryset(self):
class DocumentFieldDetectorViewSet (line 2416) | class DocumentFieldDetectorViewSet(DocumentFieldDetectorViewMixin,
method dispatch (line 2454) | def dispatch(self, request, *args, **kwargs):
method get_serializer_class (line 2471) | def get_serializer_class(self):
method get_extra_data (line 2476) | def get_extra_data(self, qs, initial_qs):
method destroy (line 2484) | def destroy(self, request, *args, **kwargs):
method save_doc_detector_action (line 2493) | def save_doc_detector_action(self, detector: DocumentFieldDetector, vi...
class FieldDataSerializer (line 2501) | class FieldDataSerializer(DocumentFieldDetailSerializer):
class Meta (line 2504) | class Meta:
class DocumentTypeDetailSerializer (line 2509) | class DocumentTypeDetailSerializer(SimpleRelationSerializer):
class Meta (line 2516) | class Meta:
method to_representation (line 2522) | def to_representation(self, instance):
class DocumentTypeCreateSerializer (line 2531) | class DocumentTypeCreateSerializer(ModelFormBasedSerializer):
class Meta (line 2537) | class Meta:
method __init__ (line 2544) | def __init__(self, *args, **kwargs):
method get_warning_message (line 2548) | def get_warning_message(self, obj):
method set_fields (line 2553) | def set_fields(self, instance: DocumentType):
method set_categories (line 2568) | def set_categories(self, instance: DocumentType):
method create (line 2605) | def create(self, validated_data):
method update (line 2611) | def update(self, instance: DocumentType, validated_data: Dict[str, Any]):
method validate_may_delete_data (line 2625) | def validate_may_delete_data(self, errors_dst: dict):
method validate_managers (line 2645) | def validate_managers(self, *args, **kwargs):
method is_valid (line 2660) | def is_valid(self, raise_exception=False):
method save (line 2670) | def save(self, **kwargs):
class DocumentTypeOptionsSerializer (line 2676) | class DocumentTypeOptionsSerializer(DocumentTypeCreateSerializer):
class Meta (line 2683) | class Meta:
method __init__ (line 2689) | def __init__(self, *args, **kwargs):
class DocumentTypeForStatsSerializer (line 2695) | class DocumentTypeForStatsSerializer(serializers.Serializer):
method __init__ (line 2707) | def __init__(self, *args, **kwargs):
method get_fields_data (line 2715) | def get_fields_data(self, obj):
class DocumentTypeStatsSerializer (line 2730) | class DocumentTypeStatsSerializer(serializers.Serializer):
class DocumentTypeStatsViewSchema (line 2736) | class DocumentTypeStatsViewSchema(ObjectToItemResponseMixin, CustomAutoS...
class DocumentTypePermissions (line 2740) | class DocumentTypePermissions(IsAuthenticated):
method has_permission (line 2742) | def has_permission(self, request, view):
method has_object_permission (line 2751) | def has_object_permission(self, request, view, obj):
class DocumentTypeViewMixin (line 2767) | class DocumentTypeViewMixin:
method get_queryset (line 2770) | def get_queryset(self):
class DocumentTypeViewSet (line 2778) | class DocumentTypeViewSet(DocumentTypeViewMixin,
method get_stats_qs (line 2816) | def get_stats_qs(self, qs):
method get_queryset (line 2866) | def get_queryset(self):
method get_serializer_class (line 2888) | def get_serializer_class(self):
method get_extra_data (line 2895) | def get_extra_data(self, qs, initial_qs):
method destroy (line 2903) | def destroy(self, request, *args, **kwargs):
method perform_destroy (line 2925) | def perform_destroy(self, instance):
method get_fields_data (line 2937) | def get_fields_data(self):
method stats (line 2953) | def stats(self, request, *args, **kwargs):
method user_project_types (line 2957) | def user_project_types(self, request, *args, **kwargs):
method import_doc_type (line 2967) | def import_doc_type(self, request, *_args, **_kwargs):
method export_doc_type (line 2983) | def export_doc_type(self, request, *_args, **_kwargs):
method clone_type (line 2992) | def clone_type(cls, source_document_type: DocumentType, code: str, tit...
method clone (line 3063) | def clone(self, request, **kwargs):
method pre_delete (line 3089) | def pre_delete(self, request, **kwargs):
method scheme_migrations (line 3126) | def scheme_migrations(self, request, **kwargs):
function save_document_type (line 3134) | def save_document_type(sender, instance, created, **kwargs):
class AnnotationSerializer (line 3141) | class AnnotationSerializer(serializers.ModelSerializer):
class Meta (line 3142) | class Meta:
class AnnotationUpdateResponseSerializer (line 3149) | class AnnotationUpdateResponseSerializer(serializers.ModelSerializer):
class Meta (line 3154) | class Meta:
class AnnotationUpdateSchema (line 3161) | class AnnotationUpdateSchema(CustomAutoSchema):
class AnnotationDestroySchema (line 3166) | class AnnotationDestroySchema(CustomAutoSchema):
method get_responses (line 3167) | def get_responses(self, path, method):
function do_save_document_field_value (line 3173) | def do_save_document_field_value(request_data: Dict, user) -> \
function get_annotation_selections (line 3276) | def get_annotation_selections(obj: FieldAnnotation) -> Optional[List[Dic...
function cache_and_detect_field_values (line 3292) | def cache_and_detect_field_values(doc: Document,
function do_delete_document_field_value (line 3302) | def do_delete_document_field_value(ant_id: int, user) -> Tuple[Document,...
function render_error_json (line 3316) | def render_error_json(operation_uid, e: Exception) -> Dict:
class AnnotationViewSet (line 3324) | class AnnotationViewSet(viewsets.ModelViewSet):
method get_queryset (line 3338) | def get_queryset(self):
method initialize_request (line 3345) | def initialize_request(self, request, *args, **kwargs):
method update (line 3353) | def update(self, request, *args, **kwargs):
method create (line 3368) | def create(self, request, *args, **kwargs):
method annotate (line 3384) | def annotate(self, request, *args, **kwargs):
method destroy (line 3387) | def destroy(self, request, *args, **kwargs):
method save_action (line 3396) | def save_action(self, document, field, action_title=None, value=None):
method suggest (line 3440) | def suggest(self, request, *args, **kwargs):
method batch (line 3459) | def batch(self, request, *args, **kwargs):
class StatsPermissions (line 3504) | class StatsPermissions(IsAuthenticated):
method
Copy disabled (too large)
Download .json
Condensed preview — 3978 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (55,713K chars).
[
{
"path": ".gitignore",
"chars": 1248,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": "LICENSE",
"chars": 34520,
"preview": " GNU AFFERO GENERAL PUBLIC LICENSE\n Version 3, 19 November 2007\n\n Copyright (C)"
},
{
"path": "README.md",
"chars": 19237,
"preview": "[](https://github.com/lexpredict/lexpred"
},
{
"path": "contraxsuite_services/.flake8",
"chars": 1207,
"preview": "[flake8]\nignore = \n # F812: list comprehension redefines ...\n F812,\n # H101: Use TODO(NAME)\n H101,\n # H20"
},
{
"path": "contraxsuite_services/.pylintrc",
"chars": 7400,
"preview": "[MASTER]\n \n# Specify a configuration file.\n#rcfile=\n \n# Python code to execute, usually for sys.path manipulation such a"
},
{
"path": "contraxsuite_services/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/__init__.py",
"chars": 1853,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/admin.py",
"chars": 17644,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/api/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/api/v1.py",
"chars": 35205,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/app_vars.py",
"chars": 2838,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/forms.py",
"chars": 22064,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/management/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/management/commands/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/management/commands/clear_old_transformer_models.py",
"chars": 7041,
"preview": "import pickle\nimport time\n\nfrom celery.states import READY_STATES, REVOKED\nfrom django.core.management.base import BaseC"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0001_initial.py",
"chars": 5869,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2017-07-31 09:48\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0002_auto_20170731_0948.py",
"chars": 1938,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2017-07-31 09:48\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0003_auto_20170731_0948.py",
"chars": 1982,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2017-07-31 09:48\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0004_auto_20171011_1613.py",
"chars": 662,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2017-10-11 16:13\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0005_documenttransformer_documentvector_textunittransformer_textunitvector.py",
"chars": 3911,
"preview": "# Generated by Django 2.2.4 on 2019-11-19 12:41\n\nfrom django.db import migrations, models\nimport django.db.models.deleti"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0006_auto_20191203_0833.py",
"chars": 1470,
"preview": "# Generated by Django 2.2.4 on 2019-12-03 08:33\n\nimport django.contrib.postgres.fields.jsonb\nfrom django.db import migra"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0007_auto_20191204_1255.py",
"chars": 951,
"preview": "# Generated by Django 2.2.4 on 2019-12-04 12:55\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0008_documentclassification_documentclassifier_documentclassifierassessment_documentclassifiersuggestion_.py",
"chars": 4081,
"preview": "# Generated by Django 2.2.4 on 2020-01-10 08:26\n\nfrom django.conf import settings\nfrom django.db import migrations, mode"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0009_auto_20200127_1252.py",
"chars": 1154,
"preview": "# Generated by Django 2.2.9 on 2020-01-27 12:52\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0010_transformer_unique_name.py",
"chars": 1611,
"preview": "from __future__ import unicode_literals\nfrom typing import Dict\nfrom django.db import migrations, models\n\n\ndef make_tran"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0011_denorm_textunit_similarity.py",
"chars": 2248,
"preview": "from django.db import migrations, models, connection\nimport django.db.models.deletion\n\nfrom settings import TEXTUNIT_SIM"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0012_populate_textunit_similarity_fields.py",
"chars": 2448,
"preview": "import datetime\n\nfrom django.db import migrations, connection\n\nfrom apps.analyze.similarity_textunit_migration_common im"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0013_vacuum_textunit_similarity.py",
"chars": 937,
"preview": "# Generated by Django 2.2.13 on 2020-06-29 09:30\nimport datetime\n\nfrom django.db import migrations, models, connection\ni"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0014_textunit_similarity_restore_constraints.py",
"chars": 1626,
"preview": "# Generated by Django 2.2.13 on 2020-06-29 09:30\n\nfrom django.db import migrations, models\nimport django.db.models.delet"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0015_auto_20201209_1541.py",
"chars": 1099,
"preview": "# Generated by Django 2.2.13 on 2020-12-09 15:41\n\nfrom django.db import migrations\nimport picklefield.fields\n\n\nclass Mig"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0016_auto_20201224_0846.py",
"chars": 2121,
"preview": "# Generated by Django 2.2.13 on 2020-12-24 08:46\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0017_auto_20201229_0950.py",
"chars": 1852,
"preview": "# Generated by Django 2.2.13 on 2020-12-29 09:50\n\nfrom django.conf import settings\nfrom django.db import migrations, mod"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0018_auto_20210104_1313.py",
"chars": 3365,
"preview": "# Generated by Django 2.2.13 on 2021-01-04 13:13\n\nfrom django.conf import settings\nfrom django.db import migrations, mod"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0019_auto_20210105_0836.py",
"chars": 956,
"preview": "# Generated by Django 2.2.13 on 2021-01-05 08:36\n\nfrom django.db import migrations, models\nimport django.db.models.delet"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0020_similarityrun_unit_id.py",
"chars": 419,
"preview": "# Generated by Django 2.2.13 on 2021-01-05 11:25\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0021_auto_20210106_1009.py",
"chars": 603,
"preview": "# Generated by Django 2.2.13 on 2021-01-06 10:09\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0022_load_document_transformer.py",
"chars": 414,
"preview": "from django.conf import settings\nfrom django.db import migrations\n\n\nclass Migration(migrations.Migration):\n dependenc"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0023_auto_20210323_0714.py",
"chars": 1302,
"preview": "# Generated by Django 2.2.18 on 2021-03-23 07:14\n\nimport apps.analyze.models\nimport django.core.validators\nfrom django.d"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0024_add_mlmodel.py",
"chars": 2942,
"preview": "# Generated by Django 2.2.13 on 2021-03-19 13:31\n\nimport apps.analyze.models\nfrom django.db import migrations, models\nim"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0025_move_contracttype_classifier.py",
"chars": 1476,
"preview": "import os\nfrom django.db import migrations, connection\n\nfrom apps.common.file_storage import get_file_storage\n\n\ndef move"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0026_auto_20210324_1247.py",
"chars": 4610,
"preview": "# Generated by Django 2.2.13 on 2021-03-24 12:47\n\nimport apps.analyze.models\nfrom django.db import migrations, models\nim"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0027_create_transformer_db_records.py",
"chars": 1392,
"preview": "from django.conf import settings\nfrom django.db import migrations\n\n\nclass Migration(migrations.Migration):\n dependenc"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0028_similarityrun_distance_type.py",
"chars": 1088,
"preview": "# Generated by Django 2.2.13 on 2021-04-02 11:20\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0029_auto_20210416_1250.py",
"chars": 792,
"preview": "# Generated by Django 2.2.20 on 2021-04-16 12:50\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0030_auto_20210505_1344.py",
"chars": 294,
"preview": "# Generated by Django 2.2.20 on 2021-05-05 13:44\n\nfrom django.db import migrations\n\n\nclass Migration(migrations.Migratio"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0031_auto_20210514_0722.py",
"chars": 1119,
"preview": "# Generated by Django 2.2.20 on 2021-05-14 07:22\nfrom django.conf import settings\nfrom django.db import migrations, mode"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0032_is_contract_migration.py",
"chars": 1967,
"preview": "from django.db import migrations, models\nfrom django.conf import settings\n\n\nclass Migration(migrations.Migration):\n d"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0033_textunitvector_document.py",
"chars": 1137,
"preview": "# Generated by Django 2.2.20 on 2021-07-22 07:11\n\nfrom django.db import migrations, models\nimport django.db.models.delet"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/0034_textunitvector_unit_type.py",
"chars": 1955,
"preview": "from django.db import migrations, models, connection\nimport datetime\nfrom apps.common.sql_commons import dropping_constr"
},
{
"path": "contraxsuite_services/apps/analyze/migrations/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "contraxsuite_services/apps/analyze/ml/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/classifier_repository.py",
"chars": 4530,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/classify.py",
"chars": 20891,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/cluster.py",
"chars": 19656,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/contract_type_classifier.py",
"chars": 22952,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/features.py",
"chars": 29057,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/similarity.py",
"chars": 12701,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/sparse_matrix.py",
"chars": 4118,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/tests/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/tests/base_transformer_test.py",
"chars": 2839,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/tests/test_classify_doc2vec.py",
"chars": 8270,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/tests/test_contract_type_classifier.py",
"chars": 9698,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/tests/test_doc2vec_transformer.py",
"chars": 5780,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/tests/test_sparse_matrix.py",
"chars": 6786,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/tests/test_utils.py",
"chars": 2727,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/tests/texts_collection.py",
"chars": 6277,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/transform.py",
"chars": 19512,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/ml/utils.py",
"chars": 3806,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/models.py",
"chars": 26838,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/notifications.py",
"chars": 2628,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/similarity_textunit_migration_common.py",
"chars": 5031,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/tasks.py",
"chars": 17525,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/templates/task_menu_item.html",
"chars": 3174,
"preview": "<li class=\"dropdown-submenu\">\n <a class=\"dropdown-item\" href=\"#\" tabindex=\"-1\">\n <i class=\"fa fa-object-group\"></i> "
},
{
"path": "contraxsuite_services/apps/analyze/tests.py",
"chars": 1644,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/urls.py",
"chars": 4686,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/analyze/views.py",
"chars": 31734,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/celery.py",
"chars": 4799,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/celery_worker_roles.py",
"chars": 1673,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/admin.py",
"chars": 12930,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/api/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/api/v1.py",
"chars": 23701,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/app_vars.py",
"chars": 5308,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/archive_file.py",
"chars": 3018,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/collection_utils.py",
"chars": 3534,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/context_managers.py",
"chars": 2676,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/context_processors.py",
"chars": 3232,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/contraxsuite_urls.py",
"chars": 4733,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/db_cache/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/db_cache/db_cache.py",
"chars": 3884,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/debug_utils.py",
"chars": 3498,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/decorators.py",
"chars": 12952,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/error_explorer.py",
"chars": 5397,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/errors.py",
"chars": 2819,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/expressions.py",
"chars": 4845,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/fields.py",
"chars": 3547,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/__init__.py",
"chars": 3621,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/file_storage.py",
"chars": 10844,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/filebrowser_webdav_file_storage.py",
"chars": 8136,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/local_file_adapter.py",
"chars": 4280,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/local_file_storage.py",
"chars": 8320,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/tests/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/tests/test_file_storage.py",
"chars": 3170,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/tests/test_local_file_storage.py",
"chars": 3087,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/tests/test_webdav_file_storage.py",
"chars": 2893,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/file_storage/tests/webdav_propfind_response_example.xml",
"chars": 5877,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<D:multistatus xmlns:D=\"DAV:\">\n <D:response xmlns:lp1=\"DAV:\" xmlns:lp2=\"http:/"
},
{
"path": "contraxsuite_services/apps/common/file_storage/webdav_file_storage.py",
"chars": 12960,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/forms.py",
"chars": 4131,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/loaders.py",
"chars": 3040,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/log_utils.py",
"chars": 5443,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/logger.py",
"chars": 2474,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/create_superuser.py",
"chars": 3036,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/download_s3_models.py",
"chars": 14312,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/force_migrate.py",
"chars": 1894,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/force_refill_migrations.py",
"chars": 2065,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/force_reinitiate_migrations.py",
"chars": 2947,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/generate_graph_models.py",
"chars": 5163,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/get_openapi_schema.py",
"chars": 3961,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/init_app_vars.py",
"chars": 1847,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/init_cache.py",
"chars": 1921,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/load_review_status_groups.py",
"chars": 2261,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/load_review_statuses.py",
"chars": 2241,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/loadnewdata.py",
"chars": 7468,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/rp.py",
"chars": 1683,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/set_app_var.py",
"chars": 2608,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/set_site.py",
"chars": 2031,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/sp.py",
"chars": 1675,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/management/commands/unsafe_fix_catastrophic_backtracking.py",
"chars": 3712,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/managers.py",
"chars": 4286,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/middleware.py",
"chars": 16671,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/migration_manager.py",
"chars": 2358,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/migration_utils.py",
"chars": 1763,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/migrations/0001_initial.py",
"chars": 1377,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-03-28 15:34\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0002_reviewstatus.py",
"chars": 867,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-04-06 19:31\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0003_reviewstatus_is_active.py",
"chars": 468,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-06-15 09:13\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0004_auto_20180622_1138.py",
"chars": 478,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-06-22 11:38\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0005_reviewstatusgroup.py",
"chars": 964,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-07-13 13:39\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0006_create_review_status_groups_20180713_1341.py",
"chars": 533,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-07-13 13:41\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0007_reviewstatus_group.py",
"chars": 594,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-07-13 13:48\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0008_migrate_groups_20180713_1351.py",
"chars": 519,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-07-13 13:51\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0009_objectstorage.py",
"chars": 717,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-08-09 19:42\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0010_action.py",
"chars": 1178,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-08-27 16:57\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0011_auto_20180828_0418.py",
"chars": 585,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-08-28 04:18\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0012_auto_20181012_0643.py",
"chars": 831,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.7 on 2018-10-12 06:43\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0013_customapirequestlog.py",
"chars": 991,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.3 on 2018-12-14 15:22\nfrom __future__ import unicode_literals\n\nfrom d"
},
{
"path": "contraxsuite_services/apps/common/migrations/0014_appvar_description.py",
"chars": 452,
"preview": "# -*- coding: utf-8 -*-\n# Generated by Django 1.11.17 on 2019-01-03 18:58\nfrom __future__ import unicode_literals\n\nfrom "
},
{
"path": "contraxsuite_services/apps/common/migrations/0015_methodstats.py",
"chars": 1503,
"preview": "# Generated by Django 2.2.4 on 2019-09-04 13:34\n\nfrom django.conf import settings\nfrom django.db import migrations, mode"
},
{
"path": "contraxsuite_services/apps/common/migrations/0016_auto_20190906_0727.py",
"chars": 918,
"preview": "# Generated by Django 2.2.4 on 2019-09-06 07:27\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/common/migrations/0017_methodstatscollectorplugin.py",
"chars": 1246,
"preview": "# Generated by Django 2.2.4 on 2019-09-12 12:17\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/common/migrations/0018_auto_20190916_0730.py",
"chars": 666,
"preview": "# Generated by Django 2.2.4 on 2019-09-16 07:30\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/common/migrations/0019_menugroup_menuitem.py",
"chars": 1928,
"preview": "# Generated by Django 2.2.4 on 2019-10-04 19:13\n\nfrom django.conf import settings\nfrom django.db import migrations, mode"
},
{
"path": "contraxsuite_services/apps/common/migrations/0020_auto_20191016_1549.py",
"chars": 496,
"preview": "# Generated by Django 2.2.4 on 2019-10-16 15:49\n\nfrom django.db import migrations, models\nimport django.db.models.deleti"
},
{
"path": "contraxsuite_services/apps/common/migrations/0021_auto_20191017_1457.py",
"chars": 841,
"preview": "# Generated by Django 2.2.4 on 2019-10-17 14:57\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/common/migrations/0022_threaddumprecord.py",
"chars": 1034,
"preview": "# Generated by Django 2.2.4 on 2019-11-01 07:52\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/common/migrations/0023_auto_20191101_1021.py",
"chars": 605,
"preview": "# Generated by Django 2.2.4 on 2019-11-01 10:21\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/common/migrations/0024_auto_20191101_1028.py",
"chars": 610,
"preview": "# Generated by Django 2.2.4 on 2019-11-01 10:28\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/common/migrations/0025_auto_20200110_1354.py",
"chars": 716,
"preview": "# Generated by Django 2.2.8 on 2020-01-10 13:54\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.M"
},
{
"path": "contraxsuite_services/apps/common/migrations/0026_set_appvar_categories.py",
"chars": 1870,
"preview": "# Generated by Django 2.2.8 on 2020-01-10 13:54\n\nfrom django.db import migrations, connection\n\n\ndef categorize_old_value"
},
{
"path": "contraxsuite_services/apps/common/migrations/0027_historicalappvar.py",
"chars": 1968,
"preview": "# Generated by Django 2.2.10 on 2020-06-02 06:12\n\nfrom django.conf import settings\nimport django.contrib.postgres.fields"
},
{
"path": "contraxsuite_services/apps/common/migrations/0028_exportfile.py",
"chars": 1270,
"preview": "# Generated by Django 2.2.13 on 2020-08-12 14:18\n\nfrom django.conf import settings\nfrom django.db import migrations, mod"
},
{
"path": "contraxsuite_services/apps/common/migrations/0029_exportfile_email_sent.py",
"chars": 387,
"preview": "# Generated by Django 2.2.13 on 2020-08-28 16:02\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/common/migrations/0030_smtp_backend_appvar.py",
"chars": 2058,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/migrations/0031_auto_20210108_1934.py",
"chars": 2872,
"preview": "# Generated by Django 2.2.10 on 2021-01-08 19:34\n\nfrom django.db import migrations, models\nimport django.db.models.delet"
},
{
"path": "contraxsuite_services/apps/common/migrations/0031_smtp_backend_appvar_description.py",
"chars": 4140,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/migrations/0032_move_strict_date_parse_appvar.py",
"chars": 4026,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/migrations/0033_merge_20210127_0828.py",
"chars": 283,
"preview": "# Generated by Django 2.2.13 on 2021-01-27 08:28\n\nfrom django.db import migrations\n\n\nclass Migration(migrations.Migratio"
},
{
"path": "contraxsuite_services/apps/common/migrations/0034_auto_20210127_1536.py",
"chars": 1600,
"preview": "# Generated by Django 2.2.13 on 2021-01-27 15:36\n\nimport django.contrib.postgres.fields.jsonb\nfrom django.db import migr"
},
{
"path": "contraxsuite_services/apps/common/migrations/0035_auto_20210128_0922.py",
"chars": 517,
"preview": "# Generated by Django 2.2.13 on 2021-01-28 09:22\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/common/migrations/0036_auto_20210204_0833.py",
"chars": 754,
"preview": "# Generated by Django 2.2.13 on 2021-02-04 08:33\n\nimport apps.common.model_utils.improved_django_json_encoder\nimport dja"
},
{
"path": "contraxsuite_services/apps/common/migrations/0037_expire_appvars.py",
"chars": 556,
"preview": "from django.conf import settings\nfrom django.db import migrations, connection\n\nfrom apps.common import redis\n\n\ndef clear"
},
{
"path": "contraxsuite_services/apps/common/migrations/0038_auto_20210309_1324.py",
"chars": 877,
"preview": "# Generated by Django 2.2.13 on 2021-03-09 13:24\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/common/migrations/0039_auto_20210311_0543.py",
"chars": 1343,
"preview": "# Generated by Django 2.2.13 on 2021-03-11 05:43\n\nfrom django.db import migrations\nfrom apps.common import redis\n\n\ndef c"
},
{
"path": "contraxsuite_services/apps/common/migrations/0040_document_locale_appvar.py",
"chars": 2319,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/migrations/0041_remove_appvar_duplicates.py",
"chars": 1099,
"preview": "from typing import List\n\nfrom django.conf import settings\nfrom django.db import migrations, connection\n\n\ndef remove_appv"
},
{
"path": "contraxsuite_services/apps/common/migrations/0042_fix_appvar_indexes.py",
"chars": 766,
"preview": "# Generated by Django 2.2.13 on 2021-03-26 10:52\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations."
},
{
"path": "contraxsuite_services/apps/common/migrations/0043_update_appvar_helptext.py",
"chars": 364,
"preview": "from django.db import migrations\n\n\nclass Migration(migrations.Migration):\n\n dependencies = [\n ('common', '0042"
},
{
"path": "contraxsuite_services/apps/common/migrations/0044_update_appvar_duplicate_docs.py",
"chars": 1497,
"preview": "from django.db import migrations, connection\n\nclass Migration(migrations.Migration):\n\n dependencies = [\n ('com"
},
{
"path": "contraxsuite_services/apps/common/migrations/0045_change_email_backend.py",
"chars": 2520,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/migrations/0046_update_old_project_actions.py",
"chars": 655,
"preview": "from django.db import migrations, connection\n\n\ndef do_migrate(_apps, _schema_editor):\n with connection.cursor() as cu"
},
{
"path": "contraxsuite_services/apps/common/migrations/0047_create_appvar_detect_contract_type_settings.py",
"chars": 2087,
"preview": "from json import dumps\nfrom django.db import migrations\n\n\ndef run_migration(apps, schema_editor):\n\n AppVar = apps.get"
},
{
"path": "contraxsuite_services/apps/common/migrations/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "contraxsuite_services/apps/common/mixins.py",
"chars": 58161,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/hr_django_json_encoder.py",
"chars": 6370,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/improved_django_json_encoder.py",
"chars": 3409,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/model_bulk_delete.py",
"chars": 8720,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/model_class_dictionary.py",
"chars": 2847,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/model_stats_sets_manager.py",
"chars": 5985,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/safe_bulk_create.py",
"chars": 4420,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/table_deps.py",
"chars": 6508,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/table_deps_builder.py",
"chars": 6672,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/tests/__init__.py",
"chars": 1570,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/tests/test_bulk_delete.py",
"chars": 3857,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/tests/test_hr_django_json_encoder.py",
"chars": 2672,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/tests/test_improved_django_json_encoder.py",
"chars": 4522,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/tests/test_model_class_dictionary.py",
"chars": 1995,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
},
{
"path": "contraxsuite_services/apps/common/model_utils/tests/test_safe_bulk_delete.py",
"chars": 3078,
"preview": "\"\"\"\n Copyright (C) 2017, ContraxSuite, LLC\n\n This program is free software: you can redistribute it and/or modify\n"
}
]
// ... and 3778 more files (download for full content)
About this extraction
This page contains the full source code of the LexPredict/lexpredict-contraxsuite GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3978 files (76.5 MB), approximately 13.6M tokens, and a symbol index with 36680 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.