tator 0.0.0.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tator-0.0.0.dev0/LICENSE.md +19 -0
- tator-0.0.0.dev0/MANIFEST.in +3 -0
- tator-0.0.0.dev0/PKG-INFO +15 -0
- tator-0.0.0.dev0/README.md +39 -0
- tator-0.0.0.dev0/pyproject.toml +3 -0
- tator-0.0.0.dev0/setup.cfg +4 -0
- tator-0.0.0.dev0/setup.py +126 -0
- tator-0.0.0.dev0/tator/__init__.py +23 -0
- tator-0.0.0.dev0/tator/extractor/__init__.py +0 -0
- tator-0.0.0.dev0/tator/extractor/__main__.py +95 -0
- tator-0.0.0.dev0/tator/extractor/env_launcher.py +48 -0
- tator-0.0.0.dev0/tator/extractor/extractor.py +304 -0
- tator-0.0.0.dev0/tator/openapi/__init__.py +3 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/__init__.py +192 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/api/__init__.py +6 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/api/tator_api.py +33224 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/api_client.py +667 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/configuration.py +410 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/exceptions.py +120 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/__init__.py +177 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/affiliation.py +311 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/affiliation_spec.py +152 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/affiliation_update.py +123 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm.py +427 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm_manifest.py +117 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm_manifest_spec.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm_parameter.py +145 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm_spec.py +378 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/announcement.py +195 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/applet.py +324 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/applet_spec.py +272 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/archive_config.py +166 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_combinator_spec.py +149 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_filter_spec.py +200 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_operation_spec.py +258 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type.py +489 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type_delete.py +149 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type_spec.py +147 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type_update.py +176 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type_update_attribute_type_update.py +489 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/audio_definition.py +301 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/autocomplete_service.py +227 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/auxiliary_file_definition.py +248 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bad_request_response.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bookmark.py +224 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bookmark_spec.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bookmark_update.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket.py +317 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_gcp_config.py +361 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_oci_config.py +141 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_oci_native_config.py +226 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_s3_config.py +199 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_spec.py +268 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_update.py +265 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/change_log.py +219 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/change_log_description_of_change.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/change_log_description_of_change_new.py +142 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/clone_media_spec.py +173 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/color_map.py +271 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/concat_definition.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/create_list_response.py +169 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/create_response.py +169 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/credentials.py +171 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/download_info.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/download_info_spec.py +118 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/email_attachment_spec.py +145 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/email_spec.py +198 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/encode_config.py +277 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/favorite.py +288 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/favorite_spec.py +236 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/favorite_update.py +149 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/feed_definition.py +145 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file.py +402 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_spec.py +245 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_type.py +246 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_type_spec.py +194 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_type_update.py +168 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_update.py +298 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/fill.py +149 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/float_array_query.py +209 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/generic_file.py +195 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/generic_file_spec.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/get_cloned_media_response.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/hosted_template.py +221 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/hosted_template_spec.py +197 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/image_definition.py +249 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/inline_response200.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/inline_response2001.py +141 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/inline_response2002.py +141 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/invitation.py +340 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/invitation_spec.py +151 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/invitation_update.py +155 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job.py +345 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_cluster.py +273 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_cluster_spec.py +226 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_node.py +243 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_spec.py +217 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_spec_failure_email_spec.py +198 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf.py +272 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_bulk_update.py +245 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_id_query.py +167 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_spec.py +196 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_suggestion.py +169 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_type.py +272 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_type_spec.py +194 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_type_update.py +168 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_update.py +195 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/live_definition.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/live_update_definition.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization.py +742 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_bulk_delete.py +361 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_bulk_update.py +485 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_delete.py +155 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_id_query.py +297 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_spec.py +537 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_type.py +434 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_type_spec.py +385 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_type_update.py +298 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_update.py +572 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media.py +743 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_bulk_update.py +355 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_files.py +411 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_id_query.py +219 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_next.py +118 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_prev.py +118 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_spec.py +614 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_stats.py +199 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_type.py +521 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_type_spec.py +471 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_type_update.py +385 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_update.py +588 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/membership.py +337 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/membership_spec.py +183 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/membership_update.py +152 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/message_response.py +117 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/multi_definition.py +195 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/not_found_response.py +117 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/notify_spec.py +144 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/organization.py +227 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/organization_spec.py +176 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/organization_update.py +175 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/parameter.py +145 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/password_reset_spec.py +118 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/project.py +518 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/project_spec.py +312 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/project_update.py +307 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/resolution_config.py +245 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/s3_storage_config.py +169 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section.py +448 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section_bulk_update.py +115 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section_bulk_update_path_substitution.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section_spec.py +346 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section_update.py +371 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state.py +505 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_bulk_delete.py +309 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_bulk_update.py +433 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_delete.py +155 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_id_query.py +245 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_merge_update.py +118 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_spec.py +351 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_trim_update.py +154 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_type.py +466 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_type_spec.py +391 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_type_update.py +246 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_update.py +413 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/temporary_file.py +299 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/temporary_file_spec.py +204 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/token.py +117 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/transcode.py +139 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/transcode_spec.py +406 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/upload_completion_spec.py +169 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/upload_info.py +169 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/upload_part.py +143 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/user.py +299 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/user_spec.py +330 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/user_update.py +351 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/version.py +325 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/version_spec.py +222 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/version_update.py +221 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/video_clip.py +167 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/models/video_definition.py +383 -0
- tator-0.0.0.dev0/tator/openapi/tator_openapi/rest.py +312 -0
- tator-0.0.0.dev0/tator/transcode/__init__.py +0 -0
- tator-0.0.0.dev0/tator/transcode/__main__.py +209 -0
- tator-0.0.0.dev0/tator/transcode/black.mp4 +0 -0
- tator-0.0.0.dev0/tator/transcode/create_media.py +60 -0
- tator-0.0.0.dev0/tator/transcode/delete_media.py +33 -0
- tator-0.0.0.dev0/tator/transcode/determine_transcode.py +257 -0
- tator-0.0.0.dev0/tator/transcode/make_fragment_info.py +78 -0
- tator-0.0.0.dev0/tator/transcode/make_thumbnails.py +173 -0
- tator-0.0.0.dev0/tator/transcode/prepare.py +95 -0
- tator-0.0.0.dev0/tator/transcode/transcode.py +484 -0
- tator-0.0.0.dev0/tator/util/__init__.py +37 -0
- tator-0.0.0.dev0/tator/util/_download_file.py +54 -0
- tator-0.0.0.dev0/tator/util/_upload_file.py +161 -0
- tator-0.0.0.dev0/tator/util/chunked_create.py +57 -0
- tator-0.0.0.dev0/tator/util/chunked_file_list.py +24 -0
- tator-0.0.0.dev0/tator/util/clone_leaf_list.py +103 -0
- tator-0.0.0.dev0/tator/util/clone_leaf_type.py +41 -0
- tator-0.0.0.dev0/tator/util/clone_localization_list.py +161 -0
- tator-0.0.0.dev0/tator/util/clone_localization_type.py +57 -0
- tator-0.0.0.dev0/tator/util/clone_media_list.py +232 -0
- tator-0.0.0.dev0/tator/util/clone_media_type.py +51 -0
- tator-0.0.0.dev0/tator/util/clone_membership.py +50 -0
- tator-0.0.0.dev0/tator/util/clone_section.py +43 -0
- tator-0.0.0.dev0/tator/util/clone_state_list.py +137 -0
- tator-0.0.0.dev0/tator/util/clone_state_type.py +57 -0
- tator-0.0.0.dev0/tator/util/clone_version.py +51 -0
- tator-0.0.0.dev0/tator/util/concat.py +112 -0
- tator-0.0.0.dev0/tator/util/download_attachment.py +40 -0
- tator-0.0.0.dev0/tator/util/download_media.py +114 -0
- tator-0.0.0.dev0/tator/util/download_temporary_file.py +55 -0
- tator-0.0.0.dev0/tator/util/find_single_change.py +79 -0
- tator-0.0.0.dev0/tator/util/full_state_graphic.py +29 -0
- tator-0.0.0.dev0/tator/util/get_api.py +39 -0
- tator-0.0.0.dev0/tator/util/get_images.py +63 -0
- tator-0.0.0.dev0/tator/util/get_paginator.py +95 -0
- tator-0.0.0.dev0/tator/util/get_parser.py +40 -0
- tator-0.0.0.dev0/tator/util/import_media.py +115 -0
- tator-0.0.0.dev0/tator/util/import_resumable.py +128 -0
- tator-0.0.0.dev0/tator/util/live_stream.py +56 -0
- tator-0.0.0.dev0/tator/util/md5sum.py +52 -0
- tator-0.0.0.dev0/tator/util/media_manipulation.py +67 -0
- tator-0.0.0.dev0/tator/util/media_util.py +454 -0
- tator-0.0.0.dev0/tator/util/multi_stream.py +221 -0
- tator-0.0.0.dev0/tator/util/register_algorithm.py +69 -0
- tator-0.0.0.dev0/tator/util/register_applet.py +62 -0
- tator-0.0.0.dev0/tator/util/resumable_upload.py +151 -0
- tator-0.0.0.dev0/tator/util/tator-symbol.gif +0 -0
- tator-0.0.0.dev0/tator/util/tator-symbol.png +0 -0
- tator-0.0.0.dev0/tator/util/to_dataframe.py +16 -0
- tator-0.0.0.dev0/tator/util/update_applet.py +64 -0
- tator-0.0.0.dev0/tator/util/upload_attachment.py +43 -0
- tator-0.0.0.dev0/tator/util/upload_generic_file.py +55 -0
- tator-0.0.0.dev0/tator/util/upload_media.py +95 -0
- tator-0.0.0.dev0/tator/util/upload_temporary_file.py +43 -0
- tator-0.0.0.dev0/tator/version.py +7 -0
- tator-0.0.0.dev0/tator.egg-info/PKG-INFO +15 -0
- tator-0.0.0.dev0/tator.egg-info/SOURCES.txt +294 -0
- tator-0.0.0.dev0/tator.egg-info/dependency_links.txt +1 -0
- tator-0.0.0.dev0/tator.egg-info/requires.txt +9 -0
- tator-0.0.0.dev0/tator.egg-info/top_level.txt +1 -0
- tator-0.0.0.dev0/test/test_a_float_array.py +129 -0
- tator-0.0.0.dev0/test/test_algorithm.py +408 -0
- tator-0.0.0.dev0/test/test_algorithm_launch.py +288 -0
- tator-0.0.0.dev0/test/test_applet.py +190 -0
- tator-0.0.0.dev0/test/test_archive_date.py +38 -0
- tator-0.0.0.dev0/test/test_attachment.py +24 -0
- tator-0.0.0.dev0/test/test_attribute_type_addition.py +164 -0
- tator-0.0.0.dev0/test/test_attribute_type_deletion.py +75 -0
- tator-0.0.0.dev0/test/test_attribute_type_mutation.py +329 -0
- tator-0.0.0.dev0/test/test_attributes.py +24 -0
- tator-0.0.0.dev0/test/test_change_log.py +622 -0
- tator-0.0.0.dev0/test/test_chunked_create.py +138 -0
- tator-0.0.0.dev0/test/test_clone_leaf_type.py +12 -0
- tator-0.0.0.dev0/test/test_clone_localization_type.py +26 -0
- tator-0.0.0.dev0/test/test_clone_media.py +144 -0
- tator-0.0.0.dev0/test/test_clone_media_type.py +12 -0
- tator-0.0.0.dev0/test/test_clone_membership.py +30 -0
- tator-0.0.0.dev0/test/test_clone_section.py +17 -0
- tator-0.0.0.dev0/test/test_clone_state_type.py +20 -0
- tator-0.0.0.dev0/test/test_clone_version.py +17 -0
- tator-0.0.0.dev0/test/test_collection.py +81 -0
- tator-0.0.0.dev0/test/test_download_media.py +164 -0
- tator-0.0.0.dev0/test/test_extract.py +68 -0
- tator-0.0.0.dev0/test/test_file.py +426 -0
- tator-0.0.0.dev0/test/test_file_type.py +100 -0
- tator-0.0.0.dev0/test/test_get_clip.py +17 -0
- tator-0.0.0.dev0/test/test_getframe.py +18 -0
- tator-0.0.0.dev0/test/test_hosted_template.py +51 -0
- tator-0.0.0.dev0/test/test_import_media.py +68 -0
- tator-0.0.0.dev0/test/test_job_cancel.py +91 -0
- tator-0.0.0.dev0/test/test_job_cluster.py +57 -0
- tator-0.0.0.dev0/test/test_leaf.py +78 -0
- tator-0.0.0.dev0/test/test_leaf_type.py +59 -0
- tator-0.0.0.dev0/test/test_local_transcode.py +93 -0
- tator-0.0.0.dev0/test/test_localization.py +274 -0
- tator-0.0.0.dev0/test/test_localization_graphic.py +573 -0
- tator-0.0.0.dev0/test/test_localization_type.py +80 -0
- tator-0.0.0.dev0/test/test_media.py +285 -0
- tator-0.0.0.dev0/test/test_media_type.py +45 -0
- tator-0.0.0.dev0/test/test_multi.py +42 -0
- tator-0.0.0.dev0/test/test_pagination.py +158 -0
- tator-0.0.0.dev0/test/test_poly.py +72 -0
- tator-0.0.0.dev0/test/test_project_thumbnail.py +9 -0
- tator-0.0.0.dev0/test/test_search.py +193 -0
- tator-0.0.0.dev0/test/test_state.py +269 -0
- tator-0.0.0.dev0/test/test_state_graphic.py +53 -0
- tator-0.0.0.dev0/test/test_state_type.py +64 -0
- tator-0.0.0.dev0/test/test_stategraphic.py +54 -0
- tator-0.0.0.dev0/test/test_temporary_file.py +36 -0
- tator-0.0.0.dev0/test/test_tracks.py +115 -0
- tator-0.0.0.dev0/test/test_transcode.py +147 -0
- tator-0.0.0.dev0/test/test_util_media_manipulation.py +53 -0
- tator-0.0.0.dev0/test/test_util_media_util.py +100 -0
- tator-0.0.0.dev0/test/test_version.py +28 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2019 CVision AI, Inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: tator
|
|
3
|
+
Version: 0.0.0.dev0
|
|
4
|
+
Summary: Python client for Tator
|
|
5
|
+
Home-page: https://github.com/cvisionai/tator-py
|
|
6
|
+
Author: CVision AI, Inc.
|
|
7
|
+
Author-email: info@cvisionai.com
|
|
8
|
+
License: UNKNOWN
|
|
9
|
+
Keywords: OpenAPI,OpenAPI-Generator,Tator
|
|
10
|
+
Platform: UNKNOWN
|
|
11
|
+
License-File: LICENSE.md
|
|
12
|
+
|
|
13
|
+
Python client for Tator.
|
|
14
|
+
|
|
15
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# tator
|
|
2
|
+
|
|
3
|
+
Python client for [Tator](https://github.com/cvisionai/tator).
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
Python 3.6+
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
### From pypi
|
|
12
|
+
```
|
|
13
|
+
pip install tator
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### From source
|
|
17
|
+
```
|
|
18
|
+
pip3 install -r requirements.txt --user
|
|
19
|
+
python3 setup.py install --user
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Example usage
|
|
23
|
+
```
|
|
24
|
+
import tator
|
|
25
|
+
|
|
26
|
+
api = tator.get_api('https://cloud.tator.io', 'MY_TOKEN')
|
|
27
|
+
api.get_media_list(1) # Pass a project ID
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Visit the [examples](examples) for more.
|
|
31
|
+
|
|
32
|
+
## API documentation
|
|
33
|
+
|
|
34
|
+
Documentation for all API functions and models can be found in the [OpenAPI documentation](https://tator.io/api).
|
|
35
|
+
|
|
36
|
+
## Authors
|
|
37
|
+
|
|
38
|
+
Tator and tator-py are developed by [CVision AI](https://www.cvisionai.com).
|
|
39
|
+
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
import shutil
|
|
4
|
+
|
|
5
|
+
from setuptools import setup, find_packages
|
|
6
|
+
import requests
|
|
7
|
+
import yaml
|
|
8
|
+
import json
|
|
9
|
+
|
|
10
|
+
REQUIRES = [
|
|
11
|
+
"certifi >= 14.05.14",
|
|
12
|
+
"Pillow >= 10.0.1",
|
|
13
|
+
"progressbar2 >= 3.51.4",
|
|
14
|
+
"psutil >= 5.9.5",
|
|
15
|
+
"python-dateutil >= 2.5.3",
|
|
16
|
+
"pyyaml >= 5.3.1",
|
|
17
|
+
"requests >= 2.25",
|
|
18
|
+
"six >= 1.10",
|
|
19
|
+
"urllib3 >= 1.26",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
SCHEMA_FILENAME = 'schema.yaml'
|
|
23
|
+
CONFIG_FILENAME = 'config.json'
|
|
24
|
+
|
|
25
|
+
def get_version():
|
|
26
|
+
with open(CONFIG_FILENAME, 'r') as f:
|
|
27
|
+
config = json.load(f)
|
|
28
|
+
return config['packageVersion']
|
|
29
|
+
|
|
30
|
+
def remove_oneof(data):
|
|
31
|
+
""" Removes oneOf key from a dict and recursively calls this function on
|
|
32
|
+
other dict values.
|
|
33
|
+
"""
|
|
34
|
+
if 'oneOf' in data:
|
|
35
|
+
del data['oneOf']
|
|
36
|
+
for key in data:
|
|
37
|
+
if isinstance(data[key], dict):
|
|
38
|
+
remove_oneof(data[key])
|
|
39
|
+
return data
|
|
40
|
+
|
|
41
|
+
class NoAliasDumper(yaml.Dumper):
|
|
42
|
+
def ignore_aliases(self, data):
|
|
43
|
+
return True
|
|
44
|
+
|
|
45
|
+
def codegen():
|
|
46
|
+
""" Fetches a schema from cloud.tator.io if one does not exist, then
|
|
47
|
+
use openapi-generator to generate openapi code from it.
|
|
48
|
+
"""
|
|
49
|
+
# Retrieve schema if it does not exist.
|
|
50
|
+
if not os.path.exists(SCHEMA_FILENAME):
|
|
51
|
+
response = requests.get("https://cloud.tator.io/schema")
|
|
52
|
+
assert response.status_code == 200
|
|
53
|
+
with open(SCHEMA_FILENAME, 'wb') as f:
|
|
54
|
+
f.write(response.content)
|
|
55
|
+
|
|
56
|
+
# Remove any oneOf entries from the schema, as they are not handled
|
|
57
|
+
# well by openapi generator.
|
|
58
|
+
with open(SCHEMA_FILENAME, 'r') as f:
|
|
59
|
+
schema = yaml.safe_load(f)
|
|
60
|
+
schema = remove_oneof(schema)
|
|
61
|
+
with open(SCHEMA_FILENAME, 'w') as f:
|
|
62
|
+
yaml.dump(schema, f, Dumper=NoAliasDumper)
|
|
63
|
+
|
|
64
|
+
# Get the git SHA ID.
|
|
65
|
+
cmd = ['git', 'rev-parse', 'HEAD']
|
|
66
|
+
git_rev = subprocess.check_output(cmd).strip().decode('utf-8')
|
|
67
|
+
|
|
68
|
+
# Generate code using openapi generator docker image.
|
|
69
|
+
pwd = os.path.dirname(os.path.abspath(__file__))
|
|
70
|
+
cmd = [
|
|
71
|
+
'docker', 'run', '--rm',
|
|
72
|
+
'-v', f"{pwd}:/pwd",
|
|
73
|
+
'-v', f"{pwd}/out:/out",
|
|
74
|
+
'openapitools/openapi-generator-cli:v4.3.1', 'generate',
|
|
75
|
+
'-c', f'/pwd/{CONFIG_FILENAME}',
|
|
76
|
+
'-i', f'/pwd/{SCHEMA_FILENAME}',
|
|
77
|
+
'-g', 'python',
|
|
78
|
+
'-o', f'/out/tator-py-{git_rev}',
|
|
79
|
+
'-t', '/pwd/templates',
|
|
80
|
+
]
|
|
81
|
+
subprocess.run(cmd, check=True)
|
|
82
|
+
|
|
83
|
+
# Remove the schema.
|
|
84
|
+
os.remove(SCHEMA_FILENAME)
|
|
85
|
+
|
|
86
|
+
# Copy relevant directories into openapi.
|
|
87
|
+
out_dir = os.path.join(pwd, 'tator/openapi')
|
|
88
|
+
os.makedirs(out_dir, exist_ok=True)
|
|
89
|
+
for subpath in ['README.md', 'tator_openapi', 'docs']:
|
|
90
|
+
src = f'{pwd}/out/tator-py-{git_rev}/{subpath}'
|
|
91
|
+
dst = os.path.join(out_dir, f'{subpath}')
|
|
92
|
+
if os.path.isfile(src):
|
|
93
|
+
shutil.copy(src, dst)
|
|
94
|
+
else:
|
|
95
|
+
if os.path.exists(dst):
|
|
96
|
+
shutil.rmtree(dst)
|
|
97
|
+
shutil.copytree(src, dst)
|
|
98
|
+
pwd = os.path.dirname(os.path.abspath(__file__))
|
|
99
|
+
|
|
100
|
+
# need to delete from within docker
|
|
101
|
+
cmd = [
|
|
102
|
+
'docker', 'run', '--rm',
|
|
103
|
+
'-v', f"{pwd}/out:/out",
|
|
104
|
+
'openapitools/openapi-generator-cli:v4.3.1',
|
|
105
|
+
'rm', '-fr',
|
|
106
|
+
'/out/*'
|
|
107
|
+
]
|
|
108
|
+
subprocess.run(cmd, check=True)
|
|
109
|
+
|
|
110
|
+
codegen()
|
|
111
|
+
setup(
|
|
112
|
+
name="tator",
|
|
113
|
+
version=get_version(),
|
|
114
|
+
description="Python client for Tator",
|
|
115
|
+
author="CVision AI, Inc.",
|
|
116
|
+
author_email="info@cvisionai.com",
|
|
117
|
+
url="https://github.com/cvisionai/tator-py",
|
|
118
|
+
keywords=["OpenAPI", "OpenAPI-Generator", "Tator"],
|
|
119
|
+
install_requires=REQUIRES,
|
|
120
|
+
packages=find_packages(exclude=["test", "tests"]),
|
|
121
|
+
package_data={"tator": ["tator/util/tator-symbol.png", "tator/util/tator-symbol.gif"]},
|
|
122
|
+
include_package_data=True,
|
|
123
|
+
long_description="""\
|
|
124
|
+
Python client for Tator.
|
|
125
|
+
"""
|
|
126
|
+
)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Python Bindings and associated utilities for tator
|
|
3
|
+
online platform
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# import submodule to top-level first
|
|
7
|
+
import tator.openapi as openapi
|
|
8
|
+
|
|
9
|
+
# Shortcuts
|
|
10
|
+
from .util.get_api import get_api
|
|
11
|
+
from .util.get_parser import get_parser
|
|
12
|
+
from .util.download_media import download_media
|
|
13
|
+
|
|
14
|
+
from .version import __version__ as __version__
|
|
15
|
+
|
|
16
|
+
# Generated code imports to top-level
|
|
17
|
+
import tator.openapi.tator_openapi.models as models
|
|
18
|
+
import tator.openapi.tator_openapi.exceptions as exceptions
|
|
19
|
+
from tator.openapi.tator_openapi import TatorApi as api
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Finally import utility functions
|
|
23
|
+
import tator.util as util
|
|
File without changes
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import os
|
|
5
|
+
import sys
|
|
6
|
+
import tempfile
|
|
7
|
+
import uuid
|
|
8
|
+
|
|
9
|
+
import tator
|
|
10
|
+
|
|
11
|
+
from .extractor import process_file
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
if __name__ == "__main__":
|
|
15
|
+
""" CLI Frontend to extractor """
|
|
16
|
+
parser = argparse.ArgumentParser(description="Thumbnail Extractor")
|
|
17
|
+
tator.get_parser(parser)
|
|
18
|
+
parser.add_argument("--mode",
|
|
19
|
+
required=True,
|
|
20
|
+
type=str,
|
|
21
|
+
choices=['state',
|
|
22
|
+
'localization_keyframe',
|
|
23
|
+
'localization_thumbnail',
|
|
24
|
+
'track_thumbnail'],
|
|
25
|
+
help="""
|
|
26
|
+
state : Whole frame capture based on state's frame
|
|
27
|
+
localization_keyframe : Whole frame on localization frame
|
|
28
|
+
localization_thumbnail : Thumbnail of localization
|
|
29
|
+
track_thumbnail : Thumbnail of track (mp4)"""
|
|
30
|
+
)
|
|
31
|
+
parser.add_argument("--metadata-type-id",
|
|
32
|
+
type=int,
|
|
33
|
+
required=True)
|
|
34
|
+
parser.add_argument("--output-local",
|
|
35
|
+
type=str)
|
|
36
|
+
parser.add_argument("--output-tator-section",
|
|
37
|
+
type=str)
|
|
38
|
+
parser.add_argument("--output-type-id",
|
|
39
|
+
type=int)
|
|
40
|
+
parser.add_argument("--project",
|
|
41
|
+
required=True,
|
|
42
|
+
type=int)
|
|
43
|
+
parser.add_argument('--work-dir',
|
|
44
|
+
help='Optional hint to work directory',
|
|
45
|
+
type=str)
|
|
46
|
+
parser.add_argument("media_ids",
|
|
47
|
+
nargs="+")
|
|
48
|
+
|
|
49
|
+
args = parser.parse_args()
|
|
50
|
+
|
|
51
|
+
api = tator.get_api(args.host, args.token)
|
|
52
|
+
|
|
53
|
+
if args.mode in ['state', 'track_thumbnail']:
|
|
54
|
+
print("Using States")
|
|
55
|
+
meta_ep = api.get_state_list
|
|
56
|
+
else:
|
|
57
|
+
print("Using Localizations")
|
|
58
|
+
meta_ep = api.get_localization_list
|
|
59
|
+
|
|
60
|
+
if not any([args.output_local, args.output_tator_section]):
|
|
61
|
+
print("Must supply at least one output")
|
|
62
|
+
sys.exit(-1)
|
|
63
|
+
|
|
64
|
+
if args.output_local:
|
|
65
|
+
os.makedirs(args.output_local, exist_ok=True)
|
|
66
|
+
upload_gid = str(uuid.uuid1())
|
|
67
|
+
for media_id in args.media_ids:
|
|
68
|
+
media_element = api.get_media(media_id)
|
|
69
|
+
metadata = meta_ep(args.project,
|
|
70
|
+
type=args.metadata_type_id,
|
|
71
|
+
media_id=[media_id])
|
|
72
|
+
metadata = [m for m in metadata if m.attributes.get('_extracted', None) is None]
|
|
73
|
+
if len(metadata) == 0:
|
|
74
|
+
print(f"No non-extracted metadata for '{media_element.name}'({media_id})")
|
|
75
|
+
continue
|
|
76
|
+
|
|
77
|
+
with tempfile.TemporaryDirectory(dir=args.work_dir) as td:
|
|
78
|
+
print(f"Downloading {media_element.name}")
|
|
79
|
+
for p in tator.download_media(api,
|
|
80
|
+
media_element,
|
|
81
|
+
os.path.join(td, media_element.name)):
|
|
82
|
+
print(f"\r{p}", end='', flush=True)
|
|
83
|
+
print('')
|
|
84
|
+
print(f"Processing {media_element.name}")
|
|
85
|
+
process_file(api,
|
|
86
|
+
args.project,
|
|
87
|
+
os.path.join(td, media_element.name),
|
|
88
|
+
media_element,
|
|
89
|
+
args.mode,
|
|
90
|
+
metadata,
|
|
91
|
+
args.output_local if args.output_local else td,
|
|
92
|
+
args.output_tator_section,
|
|
93
|
+
output_type_id=args.output_type_id,
|
|
94
|
+
upload_gid=upload_gid,
|
|
95
|
+
work_dir=args.work_dir)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
""" Uses ENV variables to dispatch the frame extractor
|
|
4
|
+
|
|
5
|
+
Generic TATOR workflow env variables this module expects:
|
|
6
|
+
|
|
7
|
+
TATOR_API_SERVICE : URL to host, e.g. https://cloud.tator.io
|
|
8
|
+
TATOR_AUTH_TOKEN : Token to use for authentication
|
|
9
|
+
TATOR_PROJECT_ID : numerical id of the project this algorithm is being run
|
|
10
|
+
TATOR_MEDIA_IDS : Comma-seperated list of media ids to process
|
|
11
|
+
|
|
12
|
+
:Workflow variables:
|
|
13
|
+
`python3 -m tator.extractor --help` for more information on the following
|
|
14
|
+
options:
|
|
15
|
+
EXTRACT_MODE : Maps to the `--mode` argument
|
|
16
|
+
METADATA_TYPE_ID : Maps to the `--metadata-type-id` argument
|
|
17
|
+
OUTPUT_SECTION : Maps to the `--tator-output-section` argument
|
|
18
|
+
OUTPUT_TYPE_ID : Maps to the `--output-type-id` argument
|
|
19
|
+
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
import os
|
|
23
|
+
import pandas as pd
|
|
24
|
+
import subprocess
|
|
25
|
+
import json
|
|
26
|
+
import sys
|
|
27
|
+
import shutil
|
|
28
|
+
|
|
29
|
+
if __name__=="__main__":
|
|
30
|
+
media_ids = os.getenv('TATOR_MEDIA_IDS').split(',')
|
|
31
|
+
cmd = ["python3",
|
|
32
|
+
"-m", "tator.extractor",
|
|
33
|
+
'--host', os.getenv("TATOR_API_SERVICE").replace('/rest',''),
|
|
34
|
+
"--token",
|
|
35
|
+
os.getenv("TATOR_AUTH_TOKEN"),
|
|
36
|
+
"--mode", os.getenv("EXTRACT_MODE"),
|
|
37
|
+
"--metadata-type-id", os.getenv("METADATA_TYPE_ID"),
|
|
38
|
+
"--project", os.getenv("TATOR_PROJECT_ID"),
|
|
39
|
+
"--output-tator-section", os.getenv("OUTPUT_SECTION"),
|
|
40
|
+
"--output-type-id", os.getenv("OUTPUT_TYPE_ID"),
|
|
41
|
+
# Assume PVC is located at work
|
|
42
|
+
"--work-dir", "/work",
|
|
43
|
+
*media_ids]
|
|
44
|
+
|
|
45
|
+
p=subprocess.Popen(cmd)
|
|
46
|
+
p.wait()
|
|
47
|
+
sys.exit(p.returncode)
|
|
48
|
+
|