From 398521c5b667bb76f492c5d02ef9fe5b85f378ab Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sun, 7 Sep 2025 09:22:44 +0000 Subject: [PATCH 1/4] fix: requirements-dev.txt to reduce vulnerabilities The following vulnerabilities are fixed by pinning transitive dependencies: - https://snyk.io/vuln/SNYK-PYTHON-DJANGO-12485156 --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index c6bc035bba..912bef8526 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -22,7 +22,7 @@ click==8.1.3 # via pip-tools coverage==5.1 # via -r requirements-dev.in -django==4.2.22 +django==4.2.24 # via # -c requirements.txt # django-appconf From 7b7aabc0300cc4c36176dc886673465329b3ee2a Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Wed, 10 Sep 2025 10:31:11 +0000 Subject: [PATCH 2/4] fix: requirements.txt to reduce vulnerabilities The following vulnerabilities are fixed by pinning transitive dependencies: - https://snyk.io/vuln/SNYK-PYTHON-DJANGO-12485156 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 3e0f5c49ac..2d195db6ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -28,7 +28,7 @@ defusedxml==0.7.1 # via # python3-openid # social-auth-core -django==4.2.22 +django==4.2.24 # via # -r requirements.in # django-anymail From a9d54072643b90bb79da6393abc93cca0dc903a6 Mon Sep 17 00:00:00 2001 From: Hana Snow Date: Wed, 10 Sep 2025 13:37:07 -0400 Subject: [PATCH 3/4] fix gzip write file mode --- seqr/views/apis/data_manager_api_tests.py | 2 +- seqr/views/utils/export_utils.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/seqr/views/apis/data_manager_api_tests.py b/seqr/views/apis/data_manager_api_tests.py index 4cb5a6f4b1..ed5ce585b0 100644 --- a/seqr/views/apis/data_manager_api_tests.py +++ b/seqr/views/apis/data_manager_api_tests.py @@ -1507,7 +1507,7 @@ def _has_expected_ped_files(self, mock_open, mock_gzip_open, mock_mkdir, dataset if has_gene_id_file: mock_gzip_open.assert_not_called() else: - mock_gzip_open.assert_called_once_with(f'{self.LOCAL_WRITE_DIR}/db_id_to_gene_id.csv.gz', 'w') + mock_gzip_open.assert_called_once_with(f'{self.LOCAL_WRITE_DIR}/db_id_to_gene_id.csv.gz', 'wt') file = [ row.split(',') for row in mock_gzip_open.return_value.__enter__.return_value.write.call_args.args[0].split('\n') ] diff --git a/seqr/views/utils/export_utils.py b/seqr/views/utils/export_utils.py index 0bc3c8e944..df0d51cfaf 100644 --- a/seqr/views/utils/export_utils.py +++ b/seqr/views/utils/export_utils.py @@ -97,11 +97,12 @@ def write_multiple_files(files, file_path, user, gzip_file=False, **kwargs): with TemporaryDirectory() as temp_dir_name: dir_name = temp_dir_name if is_gs_path else file_path open_func = gzip.open if gzip_file else open + open_mode = 'wt' if gzip_file else 'w' for filename, content in _format_files_content(files, **kwargs): current_file = f'{dir_name}/{filename}' if gzip_file: current_file += '.gz' - with open_func(current_file, 'w') as f: + with open_func(current_file, open_mode) as f: f.write(content) if is_gs_path: mv_file_to_gs(f'{temp_dir_name}/*', f'{file_path}/', user) From ad283c3b7a0010e7a4bd5d85d93beddd0b956655 Mon Sep 17 00:00:00 2001 From: Hana Snow Date: Wed, 10 Sep 2025 13:50:36 -0400 Subject: [PATCH 4/4] fix test --- seqr/views/apis/anvil_workspace_api_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seqr/views/apis/anvil_workspace_api_tests.py b/seqr/views/apis/anvil_workspace_api_tests.py index ae8952fdea..91bbfd8ed6 100644 --- a/seqr/views/apis/anvil_workspace_api_tests.py +++ b/seqr/views/apis/anvil_workspace_api_tests.py @@ -800,7 +800,7 @@ def _assert_valid_operation(self, project, test_add_data=True): '\n'.join(['\t'.join(row) for row in [header] + rows]) ) - self.mock_gzip_temp_open.assert_called_with(f'{TEMP_PATH}/db_id_to_gene_id.csv.gz', 'w') + self.mock_gzip_temp_open.assert_called_with(f'{TEMP_PATH}/db_id_to_gene_id.csv.gz', 'wt') gene_file = self.mock_gzip_temp_open.return_value.__enter__.return_value.write.call_args.args[0].split('\n') self.assertEqual(len(gene_file), 52) self.assertListEqual(gene_file[:3], ['db_id,gene_id', '1,ENSG00000223972', '2,ENSG00000227232'])