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.
Files changed (296) hide show
  1. tator-0.0.0.dev0/LICENSE.md +19 -0
  2. tator-0.0.0.dev0/MANIFEST.in +3 -0
  3. tator-0.0.0.dev0/PKG-INFO +15 -0
  4. tator-0.0.0.dev0/README.md +39 -0
  5. tator-0.0.0.dev0/pyproject.toml +3 -0
  6. tator-0.0.0.dev0/setup.cfg +4 -0
  7. tator-0.0.0.dev0/setup.py +126 -0
  8. tator-0.0.0.dev0/tator/__init__.py +23 -0
  9. tator-0.0.0.dev0/tator/extractor/__init__.py +0 -0
  10. tator-0.0.0.dev0/tator/extractor/__main__.py +95 -0
  11. tator-0.0.0.dev0/tator/extractor/env_launcher.py +48 -0
  12. tator-0.0.0.dev0/tator/extractor/extractor.py +304 -0
  13. tator-0.0.0.dev0/tator/openapi/__init__.py +3 -0
  14. tator-0.0.0.dev0/tator/openapi/tator_openapi/__init__.py +192 -0
  15. tator-0.0.0.dev0/tator/openapi/tator_openapi/api/__init__.py +6 -0
  16. tator-0.0.0.dev0/tator/openapi/tator_openapi/api/tator_api.py +33224 -0
  17. tator-0.0.0.dev0/tator/openapi/tator_openapi/api_client.py +667 -0
  18. tator-0.0.0.dev0/tator/openapi/tator_openapi/configuration.py +410 -0
  19. tator-0.0.0.dev0/tator/openapi/tator_openapi/exceptions.py +120 -0
  20. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/__init__.py +177 -0
  21. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/affiliation.py +311 -0
  22. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/affiliation_spec.py +152 -0
  23. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/affiliation_update.py +123 -0
  24. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm.py +427 -0
  25. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm_manifest.py +117 -0
  26. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm_manifest_spec.py +143 -0
  27. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm_parameter.py +145 -0
  28. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/algorithm_spec.py +378 -0
  29. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/announcement.py +195 -0
  30. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/applet.py +324 -0
  31. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/applet_spec.py +272 -0
  32. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/archive_config.py +166 -0
  33. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_combinator_spec.py +149 -0
  34. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_filter_spec.py +200 -0
  35. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_operation_spec.py +258 -0
  36. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type.py +489 -0
  37. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type_delete.py +149 -0
  38. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type_spec.py +147 -0
  39. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type_update.py +176 -0
  40. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/attribute_type_update_attribute_type_update.py +489 -0
  41. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/audio_definition.py +301 -0
  42. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/autocomplete_service.py +227 -0
  43. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/auxiliary_file_definition.py +248 -0
  44. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bad_request_response.py +143 -0
  45. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bookmark.py +224 -0
  46. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bookmark_spec.py +143 -0
  47. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bookmark_update.py +143 -0
  48. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket.py +317 -0
  49. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_gcp_config.py +361 -0
  50. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_oci_config.py +141 -0
  51. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_oci_native_config.py +226 -0
  52. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_s3_config.py +199 -0
  53. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_spec.py +268 -0
  54. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/bucket_update.py +265 -0
  55. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/change_log.py +219 -0
  56. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/change_log_description_of_change.py +143 -0
  57. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/change_log_description_of_change_new.py +142 -0
  58. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/clone_media_spec.py +173 -0
  59. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/color_map.py +271 -0
  60. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/concat_definition.py +143 -0
  61. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/create_list_response.py +169 -0
  62. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/create_response.py +169 -0
  63. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/credentials.py +171 -0
  64. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/download_info.py +143 -0
  65. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/download_info_spec.py +118 -0
  66. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/email_attachment_spec.py +145 -0
  67. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/email_spec.py +198 -0
  68. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/encode_config.py +277 -0
  69. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/favorite.py +288 -0
  70. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/favorite_spec.py +236 -0
  71. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/favorite_update.py +149 -0
  72. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/feed_definition.py +145 -0
  73. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file.py +402 -0
  74. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_spec.py +245 -0
  75. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_type.py +246 -0
  76. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_type_spec.py +194 -0
  77. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_type_update.py +168 -0
  78. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/file_update.py +298 -0
  79. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/fill.py +149 -0
  80. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/float_array_query.py +209 -0
  81. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/generic_file.py +195 -0
  82. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/generic_file_spec.py +143 -0
  83. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/get_cloned_media_response.py +143 -0
  84. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/hosted_template.py +221 -0
  85. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/hosted_template_spec.py +197 -0
  86. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/image_definition.py +249 -0
  87. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/inline_response200.py +143 -0
  88. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/inline_response2001.py +141 -0
  89. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/inline_response2002.py +141 -0
  90. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/invitation.py +340 -0
  91. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/invitation_spec.py +151 -0
  92. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/invitation_update.py +155 -0
  93. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job.py +345 -0
  94. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_cluster.py +273 -0
  95. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_cluster_spec.py +226 -0
  96. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_node.py +243 -0
  97. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_spec.py +217 -0
  98. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/job_spec_failure_email_spec.py +198 -0
  99. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf.py +272 -0
  100. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_bulk_update.py +245 -0
  101. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_id_query.py +167 -0
  102. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_spec.py +196 -0
  103. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_suggestion.py +169 -0
  104. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_type.py +272 -0
  105. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_type_spec.py +194 -0
  106. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_type_update.py +168 -0
  107. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/leaf_update.py +195 -0
  108. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/live_definition.py +143 -0
  109. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/live_update_definition.py +143 -0
  110. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization.py +742 -0
  111. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_bulk_delete.py +361 -0
  112. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_bulk_update.py +485 -0
  113. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_delete.py +155 -0
  114. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_id_query.py +297 -0
  115. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_spec.py +537 -0
  116. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_type.py +434 -0
  117. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_type_spec.py +385 -0
  118. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_type_update.py +298 -0
  119. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/localization_update.py +572 -0
  120. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media.py +743 -0
  121. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_bulk_update.py +355 -0
  122. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_files.py +411 -0
  123. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_id_query.py +219 -0
  124. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_next.py +118 -0
  125. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_prev.py +118 -0
  126. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_spec.py +614 -0
  127. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_stats.py +199 -0
  128. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_type.py +521 -0
  129. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_type_spec.py +471 -0
  130. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_type_update.py +385 -0
  131. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/media_update.py +588 -0
  132. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/membership.py +337 -0
  133. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/membership_spec.py +183 -0
  134. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/membership_update.py +152 -0
  135. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/message_response.py +117 -0
  136. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/multi_definition.py +195 -0
  137. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/not_found_response.py +117 -0
  138. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/notify_spec.py +144 -0
  139. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/organization.py +227 -0
  140. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/organization_spec.py +176 -0
  141. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/organization_update.py +175 -0
  142. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/parameter.py +145 -0
  143. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/password_reset_spec.py +118 -0
  144. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/project.py +518 -0
  145. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/project_spec.py +312 -0
  146. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/project_update.py +307 -0
  147. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/resolution_config.py +245 -0
  148. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/s3_storage_config.py +169 -0
  149. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section.py +448 -0
  150. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section_bulk_update.py +115 -0
  151. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section_bulk_update_path_substitution.py +143 -0
  152. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section_spec.py +346 -0
  153. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/section_update.py +371 -0
  154. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state.py +505 -0
  155. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_bulk_delete.py +309 -0
  156. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_bulk_update.py +433 -0
  157. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_delete.py +155 -0
  158. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_id_query.py +245 -0
  159. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_merge_update.py +118 -0
  160. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_spec.py +351 -0
  161. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_trim_update.py +154 -0
  162. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_type.py +466 -0
  163. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_type_spec.py +391 -0
  164. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_type_update.py +246 -0
  165. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/state_update.py +413 -0
  166. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/temporary_file.py +299 -0
  167. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/temporary_file_spec.py +204 -0
  168. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/token.py +117 -0
  169. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/transcode.py +139 -0
  170. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/transcode_spec.py +406 -0
  171. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/upload_completion_spec.py +169 -0
  172. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/upload_info.py +169 -0
  173. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/upload_part.py +143 -0
  174. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/user.py +299 -0
  175. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/user_spec.py +330 -0
  176. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/user_update.py +351 -0
  177. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/version.py +325 -0
  178. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/version_spec.py +222 -0
  179. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/version_update.py +221 -0
  180. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/video_clip.py +167 -0
  181. tator-0.0.0.dev0/tator/openapi/tator_openapi/models/video_definition.py +383 -0
  182. tator-0.0.0.dev0/tator/openapi/tator_openapi/rest.py +312 -0
  183. tator-0.0.0.dev0/tator/transcode/__init__.py +0 -0
  184. tator-0.0.0.dev0/tator/transcode/__main__.py +209 -0
  185. tator-0.0.0.dev0/tator/transcode/black.mp4 +0 -0
  186. tator-0.0.0.dev0/tator/transcode/create_media.py +60 -0
  187. tator-0.0.0.dev0/tator/transcode/delete_media.py +33 -0
  188. tator-0.0.0.dev0/tator/transcode/determine_transcode.py +257 -0
  189. tator-0.0.0.dev0/tator/transcode/make_fragment_info.py +78 -0
  190. tator-0.0.0.dev0/tator/transcode/make_thumbnails.py +173 -0
  191. tator-0.0.0.dev0/tator/transcode/prepare.py +95 -0
  192. tator-0.0.0.dev0/tator/transcode/transcode.py +484 -0
  193. tator-0.0.0.dev0/tator/util/__init__.py +37 -0
  194. tator-0.0.0.dev0/tator/util/_download_file.py +54 -0
  195. tator-0.0.0.dev0/tator/util/_upload_file.py +161 -0
  196. tator-0.0.0.dev0/tator/util/chunked_create.py +57 -0
  197. tator-0.0.0.dev0/tator/util/chunked_file_list.py +24 -0
  198. tator-0.0.0.dev0/tator/util/clone_leaf_list.py +103 -0
  199. tator-0.0.0.dev0/tator/util/clone_leaf_type.py +41 -0
  200. tator-0.0.0.dev0/tator/util/clone_localization_list.py +161 -0
  201. tator-0.0.0.dev0/tator/util/clone_localization_type.py +57 -0
  202. tator-0.0.0.dev0/tator/util/clone_media_list.py +232 -0
  203. tator-0.0.0.dev0/tator/util/clone_media_type.py +51 -0
  204. tator-0.0.0.dev0/tator/util/clone_membership.py +50 -0
  205. tator-0.0.0.dev0/tator/util/clone_section.py +43 -0
  206. tator-0.0.0.dev0/tator/util/clone_state_list.py +137 -0
  207. tator-0.0.0.dev0/tator/util/clone_state_type.py +57 -0
  208. tator-0.0.0.dev0/tator/util/clone_version.py +51 -0
  209. tator-0.0.0.dev0/tator/util/concat.py +112 -0
  210. tator-0.0.0.dev0/tator/util/download_attachment.py +40 -0
  211. tator-0.0.0.dev0/tator/util/download_media.py +114 -0
  212. tator-0.0.0.dev0/tator/util/download_temporary_file.py +55 -0
  213. tator-0.0.0.dev0/tator/util/find_single_change.py +79 -0
  214. tator-0.0.0.dev0/tator/util/full_state_graphic.py +29 -0
  215. tator-0.0.0.dev0/tator/util/get_api.py +39 -0
  216. tator-0.0.0.dev0/tator/util/get_images.py +63 -0
  217. tator-0.0.0.dev0/tator/util/get_paginator.py +95 -0
  218. tator-0.0.0.dev0/tator/util/get_parser.py +40 -0
  219. tator-0.0.0.dev0/tator/util/import_media.py +115 -0
  220. tator-0.0.0.dev0/tator/util/import_resumable.py +128 -0
  221. tator-0.0.0.dev0/tator/util/live_stream.py +56 -0
  222. tator-0.0.0.dev0/tator/util/md5sum.py +52 -0
  223. tator-0.0.0.dev0/tator/util/media_manipulation.py +67 -0
  224. tator-0.0.0.dev0/tator/util/media_util.py +454 -0
  225. tator-0.0.0.dev0/tator/util/multi_stream.py +221 -0
  226. tator-0.0.0.dev0/tator/util/register_algorithm.py +69 -0
  227. tator-0.0.0.dev0/tator/util/register_applet.py +62 -0
  228. tator-0.0.0.dev0/tator/util/resumable_upload.py +151 -0
  229. tator-0.0.0.dev0/tator/util/tator-symbol.gif +0 -0
  230. tator-0.0.0.dev0/tator/util/tator-symbol.png +0 -0
  231. tator-0.0.0.dev0/tator/util/to_dataframe.py +16 -0
  232. tator-0.0.0.dev0/tator/util/update_applet.py +64 -0
  233. tator-0.0.0.dev0/tator/util/upload_attachment.py +43 -0
  234. tator-0.0.0.dev0/tator/util/upload_generic_file.py +55 -0
  235. tator-0.0.0.dev0/tator/util/upload_media.py +95 -0
  236. tator-0.0.0.dev0/tator/util/upload_temporary_file.py +43 -0
  237. tator-0.0.0.dev0/tator/version.py +7 -0
  238. tator-0.0.0.dev0/tator.egg-info/PKG-INFO +15 -0
  239. tator-0.0.0.dev0/tator.egg-info/SOURCES.txt +294 -0
  240. tator-0.0.0.dev0/tator.egg-info/dependency_links.txt +1 -0
  241. tator-0.0.0.dev0/tator.egg-info/requires.txt +9 -0
  242. tator-0.0.0.dev0/tator.egg-info/top_level.txt +1 -0
  243. tator-0.0.0.dev0/test/test_a_float_array.py +129 -0
  244. tator-0.0.0.dev0/test/test_algorithm.py +408 -0
  245. tator-0.0.0.dev0/test/test_algorithm_launch.py +288 -0
  246. tator-0.0.0.dev0/test/test_applet.py +190 -0
  247. tator-0.0.0.dev0/test/test_archive_date.py +38 -0
  248. tator-0.0.0.dev0/test/test_attachment.py +24 -0
  249. tator-0.0.0.dev0/test/test_attribute_type_addition.py +164 -0
  250. tator-0.0.0.dev0/test/test_attribute_type_deletion.py +75 -0
  251. tator-0.0.0.dev0/test/test_attribute_type_mutation.py +329 -0
  252. tator-0.0.0.dev0/test/test_attributes.py +24 -0
  253. tator-0.0.0.dev0/test/test_change_log.py +622 -0
  254. tator-0.0.0.dev0/test/test_chunked_create.py +138 -0
  255. tator-0.0.0.dev0/test/test_clone_leaf_type.py +12 -0
  256. tator-0.0.0.dev0/test/test_clone_localization_type.py +26 -0
  257. tator-0.0.0.dev0/test/test_clone_media.py +144 -0
  258. tator-0.0.0.dev0/test/test_clone_media_type.py +12 -0
  259. tator-0.0.0.dev0/test/test_clone_membership.py +30 -0
  260. tator-0.0.0.dev0/test/test_clone_section.py +17 -0
  261. tator-0.0.0.dev0/test/test_clone_state_type.py +20 -0
  262. tator-0.0.0.dev0/test/test_clone_version.py +17 -0
  263. tator-0.0.0.dev0/test/test_collection.py +81 -0
  264. tator-0.0.0.dev0/test/test_download_media.py +164 -0
  265. tator-0.0.0.dev0/test/test_extract.py +68 -0
  266. tator-0.0.0.dev0/test/test_file.py +426 -0
  267. tator-0.0.0.dev0/test/test_file_type.py +100 -0
  268. tator-0.0.0.dev0/test/test_get_clip.py +17 -0
  269. tator-0.0.0.dev0/test/test_getframe.py +18 -0
  270. tator-0.0.0.dev0/test/test_hosted_template.py +51 -0
  271. tator-0.0.0.dev0/test/test_import_media.py +68 -0
  272. tator-0.0.0.dev0/test/test_job_cancel.py +91 -0
  273. tator-0.0.0.dev0/test/test_job_cluster.py +57 -0
  274. tator-0.0.0.dev0/test/test_leaf.py +78 -0
  275. tator-0.0.0.dev0/test/test_leaf_type.py +59 -0
  276. tator-0.0.0.dev0/test/test_local_transcode.py +93 -0
  277. tator-0.0.0.dev0/test/test_localization.py +274 -0
  278. tator-0.0.0.dev0/test/test_localization_graphic.py +573 -0
  279. tator-0.0.0.dev0/test/test_localization_type.py +80 -0
  280. tator-0.0.0.dev0/test/test_media.py +285 -0
  281. tator-0.0.0.dev0/test/test_media_type.py +45 -0
  282. tator-0.0.0.dev0/test/test_multi.py +42 -0
  283. tator-0.0.0.dev0/test/test_pagination.py +158 -0
  284. tator-0.0.0.dev0/test/test_poly.py +72 -0
  285. tator-0.0.0.dev0/test/test_project_thumbnail.py +9 -0
  286. tator-0.0.0.dev0/test/test_search.py +193 -0
  287. tator-0.0.0.dev0/test/test_state.py +269 -0
  288. tator-0.0.0.dev0/test/test_state_graphic.py +53 -0
  289. tator-0.0.0.dev0/test/test_state_type.py +64 -0
  290. tator-0.0.0.dev0/test/test_stategraphic.py +54 -0
  291. tator-0.0.0.dev0/test/test_temporary_file.py +36 -0
  292. tator-0.0.0.dev0/test/test_tracks.py +115 -0
  293. tator-0.0.0.dev0/test/test_transcode.py +147 -0
  294. tator-0.0.0.dev0/test/test_util_media_manipulation.py +53 -0
  295. tator-0.0.0.dev0/test/test_util_media_util.py +100 -0
  296. 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,3 @@
1
+ include tator/transcode/black.mp4
2
+ include tator/util/tator-symbol.png
3
+ include tator/util/tator-symbol.gif
@@ -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,3 @@
1
+ [tool.black]
2
+ line-length = 100
3
+ include = '\.pyi?$'
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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
+