Coverage report: 92%

Files Functions Classes

coverage.py v7.12.0, created at 2026-07-17 16:43 +0000

File function   statements missing excluded   coverage
changes_metadata_manager / __init__.py (no function)   0 0 0   100%
changes_metadata_manager / export_zenodo_csv.py _format_creators   6 0 0   100%
changes_metadata_manager / export_zenodo_csv.py _format_licenses   6 0 0   100%
changes_metadata_manager / export_zenodo_csv.py _build_row   2 0 0   100%
changes_metadata_manager / export_zenodo_csv.py _write_csv   6 0 0   100%
changes_metadata_manager / export_zenodo_csv.py export_zenodo_csv   19 0 0   100%
changes_metadata_manager / export_zenodo_csv.py main   0 0 7   100%
changes_metadata_manager / export_zenodo_csv.py (no function)   17 0 3   100%
changes_metadata_manager / folder_metadata_builder.py load_kg   3 0 0   100%
changes_metadata_manager / folder_metadata_builder.py extract_id_from_folder_name   6 0 0   100%
changes_metadata_manager / folder_metadata_builder.py extract_metadata_for_stage   26 0 0   100%
changes_metadata_manager / folder_metadata_builder.py validate_metadata   2 0 0   100%
changes_metadata_manager / folder_metadata_builder.py scan_folder_structure   18 3 0   83%
changes_metadata_manager / folder_metadata_builder.py process_all_folders   36 6 0   83%
changes_metadata_manager / folder_metadata_builder.py merge_provenance_files   4 0 0   100%
changes_metadata_manager / folder_metadata_builder.py parse_arguments   0 0 20   100%
changes_metadata_manager / folder_metadata_builder.py main   0 0 4   100%
changes_metadata_manager / folder_metadata_builder.py (no function)   26 0 4   100%
changes_metadata_manager / generate_provenance.py generate_provenance_snapshots   43 1 0   98%
changes_metadata_manager / generate_provenance.py (no function)   6 0 0   100%
changes_metadata_manager / patch / __init__.py (no function)   0 0 0   100%
changes_metadata_manager / patch / creator_names.py _creator_orcid   5 1 0   80%
changes_metadata_manager / patch / creator_names.py _creator_signature   3 0 0   100%
changes_metadata_manager / patch / creator_names.py _creators_by_orcid   4 1 0   75%
changes_metadata_manager / patch / creator_names.py _classify_creators   9 0 0   100%
changes_metadata_manager / patch / creator_names.py _entity_ids   6 0 0   100%
changes_metadata_manager / patch / creator_names.py _payload_with_creators   3 0 0   100%
changes_metadata_manager / patch / creator_names.py prepare_creator_name_patches   81 12 0   85%
changes_metadata_manager / patch / creator_names.py apply_creator_name_patches   1 0 0   100%
changes_metadata_manager / patch / creator_names.py (no function)   26 0 15   100%
changes_metadata_manager / patch / license_metadata.py _has_cc0_disclaimer   6 1 0   83%
changes_metadata_manager / patch / license_metadata.py _rebuild_additional_descriptions   4 0 0   100%
changes_metadata_manager / patch / license_metadata.py _payload_with_license   6 0 0   100%
changes_metadata_manager / patch / license_metadata.py patch_drafts   99 18 0   82%
changes_metadata_manager / patch / license_metadata.py (no function)   21 0 7   100%
changes_metadata_manager / patch / prepared_updates.py write_payload   4 0 0   100%
changes_metadata_manager / patch / prepared_updates.py load_manifest   25 7 0   72%
changes_metadata_manager / patch / prepared_updates.py prepare_output_directory   19 3 0   84%
changes_metadata_manager / patch / prepared_updates.py load_package_config   5 1 0   80%
changes_metadata_manager / patch / prepared_updates.py _package_archive_path   4 1 0   75%
changes_metadata_manager / patch / prepared_updates.py _extract_archive_entity_ids   3 0 0   100%
changes_metadata_manager / patch / prepared_updates.py extract_package_entity_ids   2 0 0   100%
changes_metadata_manager / patch / prepared_updates.py extract_package_context   4 0 0   100%
changes_metadata_manager / patch / prepared_updates.py _load_payloads   20 5 0   75%
changes_metadata_manager / patch / prepared_updates.py _load_drafts_for_records   24 8 0   67%
changes_metadata_manager / patch / prepared_updates.py _load_apply_log   21 5 0   76%
changes_metadata_manager / patch / prepared_updates.py apply_prepared_updates   42 0 0   100%
changes_metadata_manager / patch / prepared_updates.py (no function)   34 0 0   100%
changes_metadata_manager / patch / source_notices.py _classify_notice   10 1 0   90%
changes_metadata_manager / patch / source_notices.py _payload_with_source_notice   7 1 0   86%
changes_metadata_manager / patch / source_notices.py _source_notice_candidates   10 1 0   90%
changes_metadata_manager / patch / source_notices.py prepare_source_notice_patches   76 12 0   84%
changes_metadata_manager / patch / source_notices.py apply_source_notice_patches   1 1 0   0%
changes_metadata_manager / patch / source_notices.py (no function)   24 0 15   100%
changes_metadata_manager / zenodo_api.py ZenodoRecordCache.__init__   4 0 0   100%
changes_metadata_manager / zenodo_api.py ZenodoRecordCache.__enter__   1 0 0   100%
changes_metadata_manager / zenodo_api.py ZenodoRecordCache.__exit__   1 0 0   100%
changes_metadata_manager / zenodo_api.py ZenodoRecordCache.get   9 0 0   100%
changes_metadata_manager / zenodo_api.py ZenodoRecordCache.set   2 0 0   100%
changes_metadata_manager / zenodo_api.py ZenodoRecordCache.invalidate   2 0 0   100%
changes_metadata_manager / zenodo_api.py request_with_retry   9 0 0   100%
changes_metadata_manager / zenodo_api.py fetch_record   8 0 0   100%
changes_metadata_manager / zenodo_api.py fetch_published_record   1 0 0   100%
changes_metadata_manager / zenodo_api.py fetch_latest_published_record   1 0 0   100%
changes_metadata_manager / zenodo_api.py _fetch_published_record   5 0 0   100%
changes_metadata_manager / zenodo_api.py create_edit_draft   3 0 0   100%
changes_metadata_manager / zenodo_api.py update_draft   2 0 0   100%
changes_metadata_manager / zenodo_api.py publish_draft   2 0 0   100%
changes_metadata_manager / zenodo_api.py (no function)   29 0 0   100%
changes_metadata_manager / zenodo_metadata.py _strip_vocabulary_titles   7 0 0   100%
changes_metadata_manager / zenodo_metadata.py build_zenodo_update_payload   14 1 0   93%
changes_metadata_manager / zenodo_metadata.py extract_entity_id   5 1 0   80%
changes_metadata_manager / zenodo_metadata.py extract_stage_from_filenames   4 1 0   75%
changes_metadata_manager / zenodo_metadata.py extract_stage   1 0 0   100%
changes_metadata_manager / zenodo_metadata.py extract_content_license   21 8 0   62%
changes_metadata_manager / zenodo_metadata.py _value_differences   18 3 0   83%
changes_metadata_manager / zenodo_metadata.py zenodo_payload_differences   10 0 0   100%
changes_metadata_manager / zenodo_metadata.py (no function)   21 0 0   100%
changes_metadata_manager / zenodo_upload.py _literal_str_representer   3 3 0   0%
changes_metadata_manager / zenodo_upload.py slugify   4 0 0   100%
changes_metadata_manager / zenodo_upload.py _format_slug   1 0 0   100%
changes_metadata_manager / zenodo_upload.py load_creators_lookup   3 0 0   100%
changes_metadata_manager / zenodo_upload.py _format_creator   1 0 0   100%
changes_metadata_manager / zenodo_upload.py _extract_actor_names   7 0 0   100%
changes_metadata_manager / zenodo_upload.py extract_authors_for_entity_stage   6 0 0   100%
changes_metadata_manager / zenodo_upload.py extract_metadata_authors   4 0 0   100%
changes_metadata_manager / zenodo_upload.py _build_creators   4 0 0   100%
changes_metadata_manager / zenodo_upload.py build_creators_for_entity_stage   2 0 0   100%
changes_metadata_manager / zenodo_upload.py build_metadata_creators   2 0 0   100%
changes_metadata_manager / zenodo_upload.py merge_creators   12 0 0   100%
changes_metadata_manager / zenodo_upload.py extract_licensed_entity_stages   10 0 0   100%
changes_metadata_manager / zenodo_upload.py group_folders_by_entity   11 0 0   100%
changes_metadata_manager / zenodo_upload.py _extract_license_from_meta   10 0 0   100%
changes_metadata_manager / zenodo_upload.py create_stage_zip   30 1 0   97%
changes_metadata_manager / zenodo_upload.py _get_label   4 1 0   75%
changes_metadata_manager / zenodo_upload.py extract_keeper_info   11 0 0   100%
changes_metadata_manager / zenodo_upload.py extract_entity_title   6 0 0   100%
changes_metadata_manager / zenodo_upload.py extract_acquisition_technique   5 0 0   100%
changes_metadata_manager / zenodo_upload.py extract_devices   9 0 0   100%
changes_metadata_manager / zenodo_upload.py extract_software_for_stage   10 0 0   100%
changes_metadata_manager / zenodo_upload.py extract_license_for_entity_stage   5 0 0   100%
changes_metadata_manager / zenodo_upload.py has_defining_activity   2 0 0   100%
changes_metadata_manager / zenodo_upload.py select_missing_files_notice   5 0 0   100%
changes_metadata_manager / zenodo_upload.py build_enhanced_description   10 0 0   100%
changes_metadata_manager / zenodo_upload.py build_methods_description   14 0 0   100%
changes_metadata_manager / zenodo_upload.py build_entity_uri   1 0 0   100%
changes_metadata_manager / zenodo_upload.py build_rights   6 0 0   100%
changes_metadata_manager / zenodo_upload.py generate_zenodo_config   25 1 0   96%
changes_metadata_manager / zenodo_upload.py _get_sub_entity_ids   6 6 0   0%
changes_metadata_manager / zenodo_upload.py _init_worker   3 3 0   0%
changes_metadata_manager / zenodo_upload.py _process_entity   23 23 0   0%
changes_metadata_manager / zenodo_upload.py prepare_all   18 18 0   0%
changes_metadata_manager / zenodo_upload.py _extract_doi   3 0 0   100%
changes_metadata_manager / zenodo_upload.py _extract_record_url   3 0 0   100%
changes_metadata_manager / zenodo_upload.py _atomic_write_json   4 0 0   100%
changes_metadata_manager / zenodo_upload.py _graceful_shutdown   7 0 0   100%
changes_metadata_manager / zenodo_upload.py _graceful_shutdown.handler   5 5 0   0%
changes_metadata_manager / zenodo_upload.py upload_all   38 2 0   95%
changes_metadata_manager / zenodo_upload.py publish_all_drafts   31 2 0   94%
changes_metadata_manager / zenodo_upload.py sync_status   26 26 0   0%
changes_metadata_manager / zenodo_upload.py _normalize_quotes   1 1 0   0%
changes_metadata_manager / zenodo_upload.py cleanup_duplicates   43 43 0   0%
changes_metadata_manager / zenodo_upload.py parse_arguments   0 0 46   100%
changes_metadata_manager / zenodo_upload.py main   0 0 15   100%
changes_metadata_manager / zenodo_upload.py (no function)   103 0 4   100%
tests / __init__.py (no function)   0 0 0   100%
tests / test_creator_names.py _creator   1 0 0   100%
tests / test_creator_names.py real_kg   1 0 0   100%
tests / test_creator_names.py _draft   1 0 0   100%
tests / test_creator_names.py _write_drafts   15 0 0   100%
tests / test_creator_names.py _expanded_creators   7 0 0   100%
tests / test_creator_names.py _record   1 0 0   100%
tests / test_creator_names.py _expected_payload   1 0 0   100%
tests / test_creator_names.py _run_prepare   2 0 0   100%
tests / test_creator_names.py test_prepare_writes_payload_manifest_and_reuses_cache   16 0 0   100%
tests / test_creator_names.py test_apply_uses_prepared_payload_without_refetching   21 0 0   100%
tests / test_creator_names.py test_prepare_uses_entity_ids_from_uploaded_zip   9 0 0   100%
tests / test_creator_names.py test_prepare_reports_blocked_and_correct_records   9 0 0   100%
tests / test_creator_names.py test_prepare_does_not_cache_http_errors   11 0 0   100%
tests / test_creator_names.py test_prepare_rejects_unmanaged_output_files   8 0 0   100%
tests / test_creator_names.py test_apply_logs_errors_and_continues   26 0 0   100%
tests / test_creator_names.py (no function)   55 0 0   100%
tests / test_export_zenodo_csv.py _draft   1 0 0   100%
tests / test_export_zenodo_csv.py _record   1 0 0   100%
tests / test_export_zenodo_csv.py test_exports_latest_remote_versions_in_drafts_order   9 0 0   100%
tests / test_export_zenodo_csv.py test_writes_to_requested_output   8 0 0   100%
tests / test_export_zenodo_csv.py test_http_error_preserves_existing_csv   8 0 0   100%
tests / test_export_zenodo_csv.py (no function)   17 0 0   100%
tests / test_folder_metadata_builder.py load_fixture   3 0 0   100%
tests / test_folder_metadata_builder.py assert_graphs_equal   10 4 0   60%
tests / test_folder_metadata_builder.py real_kg   1 0 0   100%
tests / test_folder_metadata_builder.py test_folder_structure   8 0 0   100%
tests / test_folder_metadata_builder.py TestExtractMetadataForStageExact.test_stage_output_matches_fixture   3 0 0   100%
tests / test_folder_metadata_builder.py TestExtractIdFromFolderName.test_valid_folder_names   1 0 0   100%
tests / test_folder_metadata_builder.py TestExtractIdFromFolderName.test_invalid_folder_names   2 0 0   100%
tests / test_folder_metadata_builder.py TestProcessAllFolders.test_creates_files_in_place   11 0 0   100%
tests / test_folder_metadata_builder.py TestMergeProvenanceFiles.test_merges_all_prov_trig_files   12 0 0   100%
tests / test_folder_metadata_builder.py TestScanFolderStructure.test_scans_folder_structure   20 0 0   100%
tests / test_folder_metadata_builder.py (no function)   31 0 0   100%
tests / test_license_metadata.py _draft   1 0 0   100%
tests / test_license_metadata.py _write_drafts   3 0 0   100%
tests / test_license_metadata.py _record   4 0 0   100%
tests / test_license_metadata.py _expected_cc0_payload   1 0 0   100%
tests / test_license_metadata.py test_detects_content_license_and_disclaimer   6 0 0   100%
tests / test_license_metadata.py test_rebuilds_additional_descriptions_exactly   3 0 0   100%
tests / test_license_metadata.py test_dry_run_uses_remote_record_without_local_config   9 0 0   100%
tests / test_license_metadata.py test_published_record_updates_only_remote_license_fields   11 0 0   100%
tests / test_license_metadata.py test_unpublished_record_updates_existing_draft_without_publishing   9 0 0   100%
tests / test_license_metadata.py test_blocks_existing_edit_draft_for_published_record   9 0 0   100%
tests / test_license_metadata.py test_skips_already_correct_record   6 0 0   100%
tests / test_license_metadata.py test_logs_http_error_without_credentials   7 0 0   100%
tests / test_license_metadata.py (no function)   49 0 0   100%
tests / test_provenance.py test_environment   10 0 0   100%
tests / test_provenance.py test_provenance_generation   23 0 0   100%
tests / test_provenance.py test_input_format_parameter   18 0 0   100%
tests / test_provenance.py test_empty_directory   9 0 0   100%
tests / test_provenance.py (no function)   14 0 2   100%
tests / test_source_notices.py _draft   7 0 0   100%
tests / test_source_notices.py _write_drafts   3 0 0   100%
tests / test_source_notices.py _record   1 0 0   100%
tests / test_source_notices.py _expected_payload   1 0 0   100%
tests / test_source_notices.py test_prepare_selects_from_rdf_and_reuses_cache   16 0 0   100%
tests / test_source_notices.py test_prepare_reports_correct_and_blocked_records   9 0 0   100%
tests / test_source_notices.py test_prepare_records_http_error   8 0 0   100%
tests / test_source_notices.py (no function)   22 0 0   100%
tests / test_zenodo_api.py test_record_cache_stores_expires_and_invalidates   13 0 0   100%
tests / test_zenodo_api.py test_request_retries_rate_limits   7 0 0   100%
tests / test_zenodo_api.py test_request_retries_gateway_errors   7 0 0   100%
tests / test_zenodo_api.py test_request_returns_final_rate_limit   5 0 0   100%
tests / test_zenodo_api.py test_fetches_existing_draft   7 0 0   100%
tests / test_zenodo_api.py test_fetches_published_record_when_draft_is_missing   7 0 0   100%
tests / test_zenodo_api.py test_fetches_published_record_without_checking_draft   7 0 0   100%
tests / test_zenodo_api.py test_fetches_latest_published_version   7 0 0   100%
tests / test_zenodo_api.py test_edit_draft_lifecycle_uses_expected_endpoints   15 0 0   100%
tests / test_zenodo_api.py test_create_edit_draft_propagates_http_error   8 1 0   88%
tests / test_zenodo_api.py (no function)   29 0 0   100%
tests / test_zenodo_upload.py real_kg   1 0 0   100%
tests / test_zenodo_upload.py real_creators_lookup   1 0 0   100%
tests / test_zenodo_upload.py TestExtractLicensedEntityStages.test_returns_set_of_tuples   3 0 0   100%
tests / test_zenodo_upload.py TestExtractLicensedEntityStages.test_known_licensed_entity   3 0 0   100%
tests / test_zenodo_upload.py TestExtractLicensedEntityStages.test_maps_steps_to_stages   7 0 0   100%
tests / test_zenodo_upload.py TestGroupFoldersByEntity.test_groups_folders_by_entity_id   6 0 0   100%
tests / test_zenodo_upload.py TestGroupFoldersByEntity.test_groups_letter_suffixed_ids_by_base_number   3 0 0   100%
tests / test_zenodo_upload.py TestGroupFoldersByEntity.test_keeps_explicitly_mapped_id   3 0 0   100%
tests / test_zenodo_upload.py TestGroupFoldersByEntity.test_skips_skip_folders   6 0 0   100%
tests / test_zenodo_upload.py TestSlugify.test_simple_text   1 0 0   100%
tests / test_zenodo_upload.py TestSlugify.test_accented_characters   1 0 0   100%
tests / test_zenodo_upload.py TestSlugify.test_special_characters   1 0 0   100%
tests / test_zenodo_upload.py TestSlugify.test_multiple_spaces   1 0 0   100%
tests / test_zenodo_upload.py TestSlugify.test_leading_trailing_spaces   1 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseFromMeta.test_returns_license_id_when_present   4 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseFromMeta.test_returns_none_when_no_license   4 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseFromMeta.test_picks_defining_step_license   4 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseFromMeta.test_returns_none_when_defining_step_missing   5 0 0   100%
tests / test_zenodo_upload.py TestCreateStageZip.test_includes_all_files_for_licensed_stage   18 0 0   100%
tests / test_zenodo_upload.py TestCreateStageZip.test_includes_only_metadata_for_unlicensed_stage   17 0 0   100%
tests / test_zenodo_upload.py TestCreateStageZip.test_multiple_folders_share_license   17 0 0   100%
tests / test_zenodo_upload.py TestCreateStageZip.test_multiple_folders_unlicensed   16 0 0   100%
tests / test_zenodo_upload.py TestCreateStageZip.test_license_in_later_folder_includes_all_data   20 0 0   100%
tests / test_zenodo_upload.py TestCreateStageZip.test_returns_none_for_missing_stage   11 0 0   100%
tests / test_zenodo_upload.py TestExtractEntityTitle.test_extracts_title_from_kg   2 0 0   100%
tests / test_zenodo_upload.py TestExtractEntityTitle.test_returns_default_for_missing   3 0 0   100%
tests / test_zenodo_upload.py TestExtractEntityTitle.test_takes_first_line   5 0 0   100%
tests / test_zenodo_upload.py TestExtractAuthorsForEntityStage.test_extracts_author_from_kg   2 0 0   100%
tests / test_zenodo_upload.py TestExtractAuthorsForEntityStage.test_accumulates_authors_across_steps   3 0 0   100%
tests / test_zenodo_upload.py TestExtractAuthorsForEntityStage.test_returns_empty_for_missing_entity   2 0 0   100%
tests / test_zenodo_upload.py TestExtractAuthorsForEntityStage.test_extracts_from_synthetic_graph   10 0 0   100%
tests / test_zenodo_upload.py TestExtractMetadataAuthors.test_extracts_step_05_authors   10 0 0   100%
tests / test_zenodo_upload.py TestExtractMetadataAuthors.test_returns_empty_for_missing_entity   3 0 0   100%
tests / test_zenodo_upload.py TestExtractMetadataAuthors.test_extracts_from_real_kg   2 0 0   100%
tests / test_zenodo_upload.py TestLoadCreatorsLookup.test_loads_creators_as_dict   5 0 0   100%
tests / test_zenodo_upload.py TestBuildCreatorsForEntityStage.test_builds_creators_with_researcher_role   3 0 0   100%
tests / test_zenodo_upload.py TestBuildCreatorsForEntityStage.test_raises_for_author_not_in_lookup   3 0 0   100%
tests / test_zenodo_upload.py TestBuildCreatorsForEntityStage.test_resolves_rdf_name_to_full_creator   2 0 0   100%
tests / test_zenodo_upload.py TestBuildCreatorsForEntityStage.test_sorts_authors_alphabetically   14 0 0   100%
tests / test_zenodo_upload.py TestBuildMetadataCreators.test_builds_creators_with_datacurator_role   11 0 0   100%
tests / test_zenodo_upload.py TestBuildMetadataCreators.test_raises_for_author_not_in_lookup   10 0 0   100%
tests / test_zenodo_upload.py TestMergeCreators.test_merges_without_duplicates   6 0 0   100%
tests / test_zenodo_upload.py TestMergeCreators.test_deduplicates_by_orcid   5 0 0   100%
tests / test_zenodo_upload.py TestMergeCreators.test_empty_lists   1 0 0   100%
tests / test_zenodo_upload.py TestMergeCreators.test_only_metadata_creators   4 0 0   100%
tests / test_zenodo_upload.py TestBuildEntityUri.test_builds_uri_for_numeric_id   2 0 0   100%
tests / test_zenodo_upload.py TestBuildEntityUri.test_builds_uri_for_string_id   2 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_generates_valid_config   4 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_adds_entity_uri_as_alternate_identifier   5 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_converts_related_identifiers   5 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_converts_notes_and_method_to_additional_descriptions   4 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_cc0_disclaimer_in_additional_descriptions   4 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_converts_locations_to_geojson   4 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_includes_community_field   5 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_includes_restricted_notice_when_no_license   5 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_includes_external_source_notice   4 0 0   100%
tests / test_zenodo_upload.py TestGenerateZenodoConfig.test_propagates_funding_field   6 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseForEntityStage.test_extracts_license_from_kg   6 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseForEntityStage.test_returns_none_for_missing_license   3 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseForEntityStage.test_returns_none_for_unknown_license_uri   6 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseForEntityStage.test_extracts_cc_by   6 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseForEntityStage.test_picks_defining_step_license   5 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseForEntityStage.test_picks_defining_step_real_kg   1 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseForEntityStage.test_raw_returns_defining_step_license   4 0 0   100%
tests / test_zenodo_upload.py TestExtractLicenseForEntityStage.test_returns_none_when_defining_step_missing   4 0 0   100%
tests / test_zenodo_upload.py TestSelectMissingFilesNotice.test_selects_notice_from_stage_activity_and_license   3 0 0   100%
tests / test_zenodo_upload.py TestExtractKeeperInfo.test_extracts_keeper_from_kg   3 0 0   100%
tests / test_zenodo_upload.py TestExtractKeeperInfo.test_extracts_non_bologna_keeper   3 0 0   100%
tests / test_zenodo_upload.py TestExtractKeeperInfo.test_returns_none_for_missing_entity   3 0 0   100%
tests / test_zenodo_upload.py TestExtractKeeperInfo.test_extracts_from_synthetic_graph   15 0 0   100%
tests / test_zenodo_upload.py TestExtractKeeperInfo.test_keeper_without_location   10 0 0   100%
tests / test_zenodo_upload.py TestBuildEnhancedDescription.test_raw_stage_description   2 0 0   100%
tests / test_zenodo_upload.py TestBuildEnhancedDescription.test_dcho_stage_description   4 0 0   100%
tests / test_zenodo_upload.py TestBuildEnhancedDescription.test_dchoo_stage_description   3 0 0   100%
tests / test_zenodo_upload.py TestBuildEnhancedDescription.test_description_never_contains_disclaimer   2 0 0   100%
tests / test_zenodo_upload.py TestBuildEnhancedDescription.test_includes_keeper_and_location   2 0 0   100%
tests / test_zenodo_upload.py TestBuildEnhancedDescription.test_includes_keeper_without_location   3 0 0   100%
tests / test_zenodo_upload.py TestBuildEnhancedDescription.test_no_keeper_line_when_none   2 0 0   100%
tests / test_zenodo_upload.py TestBuildEnhancedDescription.test_description_is_single_paragraph   2 0 0   100%
tests / test_zenodo_upload.py TestExtractDoi.test_extracts_doi_from_record   2 0 0   100%
tests / test_zenodo_upload.py TestExtractDoi.test_returns_empty_string_on_sandbox   2 0 0   100%
tests / test_zenodo_upload.py TestExtractRecordUrl.test_extracts_url_from_record   2 0 0   100%
tests / test_zenodo_upload.py TestExtractAcquisitionTechnique.test_extracts_photography_from_kg   2 0 0   100%
tests / test_zenodo_upload.py TestExtractAcquisitionTechnique.test_extracts_scanning_from_kg   2 0 0   100%
tests / test_zenodo_upload.py TestExtractAcquisitionTechnique.test_returns_none_for_missing_entity   2 0 0   100%
tests / test_zenodo_upload.py TestExtractAcquisitionTechnique.test_extracts_from_synthetic_graph   4 0 0   100%
tests / test_zenodo_upload.py TestExtractDevices.test_extracts_devices_from_kg   2 0 0   100%
tests / test_zenodo_upload.py TestExtractDevices.test_extracts_scanner_device   2 0 0   100%
tests / test_zenodo_upload.py TestExtractDevices.test_returns_empty_for_missing_entity   2 0 0   100%
tests / test_zenodo_upload.py TestExtractDevices.test_excludes_item_uris   6 0 0   100%
tests / test_zenodo_upload.py TestExtractSoftwareForStage.test_extracts_raw_software   2 0 0   100%
tests / test_zenodo_upload.py TestExtractSoftwareForStage.test_extracts_rawp_software   2 0 0   100%
tests / test_zenodo_upload.py TestExtractSoftwareForStage.test_excludes_metadata_step_software   4 0 0   100%
tests / test_zenodo_upload.py TestExtractSoftwareForStage.test_includes_step_06_software   2 0 0   100%
tests / test_zenodo_upload.py TestExtractSoftwareForStage.test_returns_empty_for_missing_entity   2 0 0   100%
tests / test_zenodo_upload.py TestBuildMethodsDescription.test_includes_workflow_reference   3 0 0   100%
tests / test_zenodo_upload.py TestBuildMethodsDescription.test_includes_technique_and_devices   3 0 0   100%
tests / test_zenodo_upload.py TestBuildMethodsDescription.test_includes_software_for_rawp   3 0 0   100%
tests / test_zenodo_upload.py TestBuildMethodsDescription.test_no_software_for_raw   2 0 0   100%
tests / test_zenodo_upload.py TestBuildMethodsDescription.test_includes_chad_ap_reference   3 0 0   100%
tests / test_zenodo_upload.py TestBuildMethodsDescription.test_scanning_entity   3 0 0   100%
tests / test_zenodo_upload.py _write_config   6 1 0   83%
tests / test_zenodo_upload.py TestAtomicWriteJson.test_writes_json   4 0 0   100%
tests / test_zenodo_upload.py TestAtomicWriteJson.test_overwrites_existing   5 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume._setup_configs   6 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_fresh_upload   11 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_fresh_upload.side_effect   2 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_resume_skips_completed   13 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_failure_continues_and_records_error   14 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_failure_continues_and_records_error.side_effect   4 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_failed_entry_retried_on_rerun   13 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_drafts_json_written_after_each_upload   8 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_drafts_json_written_after_each_upload.counting_upload   1 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_drafts_json_written_after_each_upload.tracking_write   6 0 0   100%
tests / test_zenodo_upload.py TestUploadAllResume.test_publish_flag_sets_published_status   8 0 0   100%
tests / test_zenodo_upload.py TestPublishAllDraftsResume._make_drafts   12 0 0   100%
tests / test_zenodo_upload.py TestPublishAllDraftsResume.test_publishes_uploaded_drafts   8 0 0   100%
tests / test_zenodo_upload.py TestPublishAllDraftsResume.test_skips_already_published   8 0 0   100%
tests / test_zenodo_upload.py TestPublishAllDraftsResume.test_failure_continues   11 0 0   100%
tests / test_zenodo_upload.py TestPublishAllDraftsResume.test_failure_continues.side_effect   4 0 0   100%
tests / test_zenodo_upload.py TestPublishAllDraftsResume.test_retries_publish_failed   9 0 0   100%
tests / test_zenodo_upload.py TestPublishAllDraftsResume.test_skips_upload_failed_entries   8 0 0   100%
tests / test_zenodo_upload.py (no function)   189 0 0   100%
Total     3062 244 142   92%

No items found using the specified filter.