aind-data-transfer-service 1.13.0__tar.gz → 1.14.0__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 (101) hide show
  1. {aind_data_transfer_service-1.13.0/src/aind_data_transfer_service.egg-info → aind_data_transfer_service-1.14.0}/PKG-INFO +1 -1
  2. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/UserGuideV2.rst +6 -12
  3. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/__init__.py +1 -1
  4. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/models/core.py +1 -1
  5. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0/src/aind_data_transfer_service.egg-info}/PKG-INFO +1 -1
  6. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/legacy_sample.csv +4 -4
  7. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/legacy_sample2.csv +2 -2
  8. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/new_sample.csv +2 -2
  9. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample_empty_rows_2.csv +2 -2
  10. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_core.py +11 -3
  11. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_csv_handler.py +2 -0
  12. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_server.py +2 -2
  13. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.flake8 +0 -0
  14. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  16. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.github/ISSUE_TEMPLATE/user-story.md +0 -0
  17. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.github/workflows/add_issue_to_project_board.yml +0 -0
  18. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.github/workflows/publish_dev.yml +0 -0
  19. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.github/workflows/publish_main.yml +0 -0
  20. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.github/workflows/run_dev_tests.yml +0 -0
  21. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.github/workflows/run_main_tests.yml +0 -0
  22. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.gitignore +0 -0
  23. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/.readthedocs.yaml +0 -0
  24. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/CODE_OF_CONDUCT.md +0 -0
  25. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/Dockerfile +0 -0
  26. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/LICENSE +0 -0
  27. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/README.md +0 -0
  28. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/Makefile +0 -0
  29. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/diagrams/system_container.png +0 -0
  30. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/diagrams/system_container.puml +0 -0
  31. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/diagrams/system_context.png +0 -0
  32. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/diagrams/system_context.puml +0 -0
  33. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/basic_upload.py +0 -0
  34. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/behavior_videos_compression.py +0 -0
  35. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/custom_codeocean_pipeline_settings.py +0 -0
  36. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/custom_metadata_mapper_settings.py +0 -0
  37. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/example1.csv +0 -0
  38. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/hcr_example.py +0 -0
  39. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/skip_s3_check.py +0 -0
  40. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/upload_with_custom_slurm_settings.py +0 -0
  41. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/examples/upload_with_notification.py +0 -0
  42. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/make.bat +0 -0
  43. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/Contributing.rst +0 -0
  44. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/UserGuideV1.rst +0 -0
  45. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/_static/dark-logo.svg +0 -0
  46. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/_static/favicon.ico +0 -0
  47. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/_static/light-logo.svg +0 -0
  48. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/aind_data_transfer_service.configs.rst +0 -0
  49. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/aind_data_transfer_service.hpc.rst +0 -0
  50. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/aind_data_transfer_service.models.rst +0 -0
  51. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/aind_data_transfer_service.rst +0 -0
  52. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/conf.py +0 -0
  53. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/index.rst +0 -0
  54. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/docs/source/modules.rst +0 -0
  55. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/pyproject.toml +0 -0
  56. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/setup.cfg +0 -0
  57. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/setup.py +0 -0
  58. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/configs/__init__.py +0 -0
  59. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/configs/csv_handler.py +0 -0
  60. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/configs/job_configs.py +0 -0
  61. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/configs/job_upload_template.py +0 -0
  62. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/hpc/__init__.py +0 -0
  63. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/hpc/client.py +0 -0
  64. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/hpc/models.py +0 -0
  65. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/log_handler.py +0 -0
  66. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/models/__init__.py +0 -0
  67. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/models/internal.py +0 -0
  68. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/server.py +0 -0
  69. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/templates/index.html +0 -0
  70. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/templates/job_params.html +0 -0
  71. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/templates/job_status.html +0 -0
  72. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/templates/job_tasks_table.html +0 -0
  73. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service/templates/task_logs.html +0 -0
  74. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service.egg-info/SOURCES.txt +0 -0
  75. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service.egg-info/dependency_links.txt +0 -0
  76. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service.egg-info/requires.txt +0 -0
  77. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/src/aind_data_transfer_service.egg-info/top_level.txt +0 -0
  78. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/__init__.py +0 -0
  79. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/airflow_dag_run_response.json +0 -0
  80. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/airflow_dag_runs_response.json +0 -0
  81. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/airflow_task_instances_response.json +0 -0
  82. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/describe_parameters_response.json +0 -0
  83. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/get_parameter_response.json +0 -0
  84. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/job_upload_template.xlsx +0 -0
  85. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample.csv +0 -0
  86. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample.xlsx +0 -0
  87. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample_alt_modality_case.csv +0 -0
  88. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample_empty_rows.csv +0 -0
  89. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample_empty_rows.xlsx +0 -0
  90. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample_invalid_ext.txt +0 -0
  91. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample_malformed.csv +0 -0
  92. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample_malformed.xlsx +0 -0
  93. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/resources/sample_malformed_2.csv +0 -0
  94. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_configs.py +0 -0
  95. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_hpc_client.py +0 -0
  96. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_hpc_models.py +0 -0
  97. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_internal.py +0 -0
  98. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_job_upload_template.py +0 -0
  99. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_log_handler.py +0 -0
  100. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_server/Dockerfile +0 -0
  101. {aind_data_transfer_service-1.13.0 → aind_data_transfer_service-1.14.0}/tests/test_server/db.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aind-data-transfer-service
3
- Version: 1.13.0
3
+ Version: 1.14.0
4
4
  Summary: Service that handles requests to upload data to the cloud
5
5
  Author: Allen Institute for Neural Dynamics
6
6
  License: MIT
@@ -45,13 +45,7 @@ job_types.
45
45
  container here.
46
46
  - gather_final_metadata: Automatically generates a processing.json and
47
47
  metadata.nd.json file.
48
- - final_check_s3_folder_exist: The current behavior is to upload data to
49
- the private data bucket if the metadata is invalid and the s3_bucket is
50
- set to default. If the metadata is valid and the s3_bucket is set to
51
- default, then the data is uploaded to the open bucket. Hence, another
52
- check is added once the final s3_location is resolved. We plan to change
53
- this behavior soon to just raise an error if the metadata is incomplete
54
- and upload to the open bucket by default.
48
+ - check_metadata_files: Checks that the metadata files exist and are json.
55
49
  - upload_data_to_s3: Uploads the data to S3.
56
50
  - register_data_asset_to_codeocean: Registers the data asset to Code Ocean.
57
51
  - update_docdb_record: Updates the DocDB record with the Code Ocean Data
@@ -118,6 +112,11 @@ portal can accessed at
118
112
 
119
113
  - Required fields
120
114
 
115
+ - job_type: We store pre-compiled default configurations in AWS Parameter
116
+ Store (e.g. modality transformation settings, Code Ocean pipeline
117
+ settings). This field determines which preset to use when
118
+ running the upload job. A list of job types can be seen by clicking the
119
+ ``Job Parameters`` link.
121
120
  - project_name: A list of project names can be seen by clicking the
122
121
  ``Project Names`` link
123
122
  - subject_id: The LabTracks ID of the mouse
@@ -141,11 +140,6 @@ portal can accessed at
141
140
 
142
141
  - Optional fields
143
142
 
144
- - job_type: We store pre-compiled default configurations in AWS Parameter
145
- Store (e.g. modality transformation settings, Code Ocean pipeline
146
- settings). If you set this field, then we will use this preset when
147
- running the upload job. A list of job types can be seen by clicking the
148
- ``Job Parameters`` link.
149
143
  - metadata_dir: If metadata files are pre-compiled and saved to a
150
144
  directory, you can add the Posix style path to the directory under
151
145
  this column
@@ -1,7 +1,7 @@
1
1
  """Init package"""
2
2
  import os
3
3
 
4
- __version__ = "1.13.0"
4
+ __version__ = "1.14.0"
5
5
 
6
6
  # Global constants
7
7
  OPEN_DATA_BUCKET_NAME = os.getenv("OPEN_DATA_BUCKET_NAME", "open")
@@ -129,7 +129,7 @@ class UploadJobConfigsV2(BaseSettings):
129
129
  model_config = ConfigDict(use_enum_values=True, extra="ignore")
130
130
 
131
131
  job_type: str = Field(
132
- default="default",
132
+ ...,
133
133
  description=(
134
134
  "Job type for the upload job. Tasks will be run based on the "
135
135
  "job_type unless otherwise specified in task_overrides."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aind-data-transfer-service
3
- Version: 1.13.0
3
+ Version: 1.14.0
4
4
  Summary: Service that handles requests to upload data to the cloud
5
5
  Author: Allen Institute for Neural Dynamics
6
6
  License: MIT
@@ -1,4 +1,4 @@
1
- project_name, modality0, modality0.source, modality1, modality1.source, s3-bucket, subject-id, platform, acq-datetime, force_cloud_sync, modality0.process_capsule_id
2
- Ephys Platform, ecephys, dir/data_set_1, ,, private, 123454, ecephys, 2020-10-10 14:10:10, True,
3
- Behavior Platform, behavior-videos, dir/data_set_2, MRI, dir/data_set_3, open, 123456, behavior, 10/13/2020 1:10:10 PM,,1f999652-00a0-4c4b-99b5-64c2985ad070
4
- Behavior Platform, behavior-videos, dir/data_set_2, behavior-videos, dir/data_set_3, default, 123456, behavior, 10/13/2020 1:10:10 PM,,
1
+ project_name, modality0, modality0.source, modality1, modality1.source, s3-bucket, subject-id, platform, acq-datetime, force_cloud_sync, modality0.process_capsule_id, job_type
2
+ Ephys Platform, ecephys, dir/data_set_1, ,, private, 123454, ecephys, 2020-10-10 14:10:10, True,, default
3
+ Behavior Platform, behavior-videos, dir/data_set_2, MRI, dir/data_set_3, open, 123456, behavior, 10/13/2020 1:10:10 PM,,1f999652-00a0-4c4b-99b5-64c2985ad070, default
4
+ Behavior Platform, behavior-videos, dir/data_set_2, behavior-videos, dir/data_set_3, default, 123456, behavior, 10/13/2020 1:10:10 PM,,, default
@@ -1,2 +1,2 @@
1
- project_name, modality0, modality0.source, modality1, modality1.source, s3-bucket, subject-id, platform, acq-datetime, modality0.pipeline_id
2
- Behavior Platform, behavior-videos, dir/data_set_2, MRI, dir/data_set_3, open, 123456, behavior, 10/13/2020 1:10:10 PM,1f999652-00a0-4c4b-99b5-64c2985ad070
1
+ project_name, modality0, modality0.source, modality1, modality1.source, s3-bucket, subject-id, platform, acq-datetime, modality0.pipeline_id, job_type
2
+ Behavior Platform, behavior-videos, dir/data_set_2, MRI, dir/data_set_3, open, 123456, behavior, 10/13/2020 1:10:10 PM,1f999652-00a0-4c4b-99b5-64c2985ad070, default
@@ -1,4 +1,4 @@
1
1
  project_name, modality0, modality0.input_source, modality1, modality1.input_source, s3-bucket, subject-id, platform, acq-datetime, job_type, metadata_dir
2
- Ephys Platform, ecephys, dir/data_set_1, , , default,123454, ecephys, 2020-10-10 14:10:10, , dir/metadata
2
+ Ephys Platform, ecephys, dir/data_set_1, , , default,123454, ecephys, 2020-10-10 14:10:10, ecephys, dir/metadata
3
3
  Behavior Platform, behavior-videos, dir/data_set_2, MRI, dir/data_set_3, open,123456, behavior, 2020-10-13T13:10:10, custom,
4
- Behavior Platform, behavior-videos, dir/data_set_2, , , ,123456, behavior, 2020-10-13 13:10:10, ,
4
+ Behavior Platform, behavior-videos, dir/data_set_2, , , ,123456, behavior, 2020-10-13 13:10:10, default,
@@ -1,7 +1,7 @@
1
1
  project_name, modality0, modality0.input_source, modality1, modality1.input_source, s3-bucket, subject-id, platform, acq-datetime, job_type, metadata_dir
2
- Ephys Platform, ecephys, dir/data_set_1, , , default,123454, ecephys, 2020-10-10 14:10:10, , dir/metadata
2
+ Ephys Platform, ecephys, dir/data_set_1, , , default,123454, ecephys, 2020-10-10 14:10:10, ecephys, dir/metadata
3
3
  Behavior Platform, behavior-videos, dir/data_set_2, MRI, dir/data_set_3, open,123456, behavior, 2020-10-13T13:10:10, custom,
4
- Behavior Platform, behavior-videos, dir/data_set_2, , , ,123456, behavior, 2020-10-13 13:10:10, ,
4
+ Behavior Platform, behavior-videos, dir/data_set_2, , , ,123456, behavior, 2020-10-13 13:10:10, default,
5
5
  ,,,,,,,,,,
6
6
  ,,,,,,,,,,
7
7
  ,,,,,,,,,,
@@ -86,6 +86,7 @@ class TestUploadJobConfigsV2(unittest.TestCase):
86
86
  def setUpClass(cls) -> None:
87
87
  """Set up test class"""
88
88
  example_configs = UploadJobConfigsV2(
89
+ job_type="default",
89
90
  project_name="Behavior Platform",
90
91
  platform=Platform.BEHAVIOR,
91
92
  modalities=[Modality.BEHAVIOR_VIDEOS],
@@ -102,7 +103,7 @@ class TestUploadJobConfigsV2(unittest.TestCase):
102
103
 
103
104
  cls.example_configs = example_configs
104
105
  cls.base_configs = example_configs.model_dump(
105
- exclude={"job_type": True, "s3_bucket": True, "s3_prefix": True}
106
+ exclude={"s3_bucket": True, "s3_prefix": True}
106
107
  )
107
108
 
108
109
  def test_s3_prefix(self):
@@ -118,21 +119,27 @@ class TestUploadJobConfigsV2(unittest.TestCase):
118
119
 
119
120
  def test_job_type_validation(self):
120
121
  """Test job_type is validated against list context provided."""
122
+ base_configs = self.example_configs.model_dump(
123
+ exclude={"job_type": True, "s3_bucket": True, "s3_prefix": True}
124
+ )
121
125
  with validation_context({"job_types": ["default", "ecephys"]}):
122
126
  round_trip_model = UploadJobConfigsV2(
123
127
  job_type="ecephys",
124
- **self.base_configs,
128
+ **base_configs,
125
129
  )
126
130
  self.assertEqual("ecephys", round_trip_model.job_type)
127
131
 
128
132
  def test_job_type_validation_fail(self):
129
133
  """Test job_type is validated against list context provided and
130
134
  fails validation."""
135
+ base_configs = self.example_configs.model_dump(
136
+ exclude={"job_type": True, "s3_bucket": True, "s3_prefix": True}
137
+ )
131
138
  with self.assertRaises(ValidationError) as err:
132
139
  with validation_context({"job_types": ["default", "ecephys"]}):
133
140
  UploadJobConfigsV2(
134
141
  job_type="random_string",
135
- **self.base_configs,
142
+ **base_configs,
136
143
  )
137
144
  err_msg = json.loads(err.exception.json())[0]["msg"]
138
145
  self.assertEqual(
@@ -244,6 +251,7 @@ class TestSubmitJobRequestV2(unittest.TestCase):
244
251
  def setUpClass(cls) -> None:
245
252
  """Set up example configs to be used in tests"""
246
253
  example_upload_config = UploadJobConfigsV2(
254
+ job_type="default",
247
255
  project_name="Behavior Platform",
248
256
  platform=Platform.BEHAVIOR,
249
257
  modalities=[
@@ -48,6 +48,7 @@ class TestCsvHandler(unittest.TestCase):
48
48
  },
49
49
  subject_id="123454",
50
50
  acq_datetime=datetime(2020, 10, 10, 14, 10, 10),
51
+ job_type="ecephys",
51
52
  ),
52
53
  UploadJobConfigsV2(
53
54
  project_name="Behavior Platform",
@@ -81,6 +82,7 @@ class TestCsvHandler(unittest.TestCase):
81
82
  },
82
83
  subject_id="123456",
83
84
  acq_datetime=datetime(2020, 10, 13, 13, 10, 10),
85
+ job_type="default",
84
86
  ),
85
87
  ]
86
88
  self.assertEqual(expected_jobs, jobs)
@@ -1593,7 +1593,7 @@ class TestServer(unittest.TestCase):
1593
1593
  "Ephys Platform",
1594
1594
  "Behavior Platform",
1595
1595
  ]
1596
- mock_get_job_types.return_value = ["default", "custom"]
1596
+ mock_get_job_types.return_value = ["default", "ecephys", "custom"]
1597
1597
  mock_get_airflow_jobs.return_value = (0, list())
1598
1598
  with TestClient(app) as client:
1599
1599
  with open(NEW_SAMPLE_CSV, "rb") as f:
@@ -1665,7 +1665,7 @@ class TestServer(unittest.TestCase):
1665
1665
  "Ephys Platform",
1666
1666
  "Behavior Platform",
1667
1667
  ]
1668
- mock_get_job_types.return_value = ["default", "custom"]
1668
+ mock_get_job_types.return_value = ["default", "ecephys", "custom"]
1669
1669
  mock_get_airflow_jobs.return_value = (0, list())
1670
1670
  with TestClient(app) as client:
1671
1671
  with open(SAMPLE_CSV_EMPTY_ROWS_2, "rb") as f: