Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
eaaf94d
Feat : Multiple download functionality with performance testing
Dhiren-Mhatre Aug 5, 2025
97c29eb
applied feedback
Dhiren-Mhatre Aug 26, 2025
fadbaac
removed timeout
Dhiren-Mhatre Aug 28, 2025
4bfcd98
Merge branch 'master' into feat/multiple-download-performance-testing
Avantol13 Sep 2, 2025
3679b4b
addressed feedbacks
Dhiren-Mhatre Sep 4, 2025
f005a87
added unit tests
Dhiren-Mhatre Sep 14, 2025
3dd6b69
Merge branch 'master' into feat/multiple-download-performance-testing
Avantol13 Sep 30, 2025
a78f9be
added docstrings
Dhiren-Mhatre Oct 2, 2025
a348aee
Merge branch 'master' into feat/multiple-download-performance-testing
Avantol13 Oct 3, 2025
970e77d
fixed test
Dhiren-Mhatre Oct 6, 2025
2516e27
fixed tests
Dhiren-Mhatre Oct 7, 2025
4b371e7
fixed tests
Dhiren-Mhatre Oct 12, 2025
ffbf404
version bumped and fixed tests
Dhiren-Mhatre Oct 16, 2025
31aa42d
test fixes
jacob50231 Jan 14, 2026
609cf3f
fix test_download_single_success and test_download_single_failed
jacob50231 Jan 14, 2026
3921d84
Merge branch 'master' into feat/multiple-download-performance-testing
jacob50231 Jan 14, 2026
a5cfc63
code cleanup
jacob50231 Jan 15, 2026
811e83c
Merge branch 'feat/multiple-download-performance-testing' of https://…
jacob50231 Jan 15, 2026
3c4d960
fix is a directory error
jacob50231 Jan 15, 2026
48d181b
parse file name from url instead
jacob50231 Jan 15, 2026
a2c3cc9
snyk vulnerability fix
jacob50231 Jan 16, 2026
2acb787
test requested changes from alex
jacob50231 Feb 9, 2026
44dc95a
remove old download_single
jacob50231 Mar 6, 2026
84354eb
Merge branch 'master' into feat/multiple-download-performance-testing
jacob50231 Jul 1, 2026
ace420b
update poetry.lock
jacob50231 Jul 1, 2026
9f87b9c
update werkzeug
jacob50231 Jul 13, 2026
c81d0e5
Merge pull request #308 from Dhiren-Mhatre/feat/multiple-download-per…
jacob50231 Jul 17, 2026
70874f4
Apply automatic documentation changes
jacob50231 Jul 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .secrets.baseline
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,7 @@
"filename": "tests/test_file.py",
"hashed_secret": "bc5494e9e5c7bd002f295376f6130e2eced73a4a",
"is_verified": false,
"line_number": 84
"line_number": 86
}
],
"tests/test_index.py": [
Expand Down Expand Up @@ -656,5 +656,5 @@
}
]
},
"generated_at": "2025-11-07T21:07:45Z"
"generated_at": "2026-01-14T17:34:14Z"
}
Binary file modified docs/_build/doctrees/file.doctree
Binary file not shown.
510 changes: 485 additions & 25 deletions docs/_build/html/_modules/gen3/file.html

Large diffs are not rendered by default.

36 changes: 35 additions & 1 deletion docs/_build/html/file.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ <h1>Gen3 File Class<a class="headerlink" href="#gen3-file-class" title="Link to
<span class="gp">... </span><span class="n">file</span> <span class="o">=</span> <span class="n">Gen3File</span><span class="p">(</span><span class="n">auth</span><span class="p">)</span>
</pre></div>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="gen3.file.Gen3File.async_download_multiple">
<span class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></span><span class="sig-name descname"><span class="pre">async_download_multiple</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">manifest_data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">download_path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'.'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">filename_format</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'original'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">max_concurrent_requests</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">300</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num_processes</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">3</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">queue_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1000</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skip_completed</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rename</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">no_progress</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/gen3/file.html#Gen3File.async_download_multiple"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gen3.file.Gen3File.async_download_multiple" title="Link to this definition">¶</a></dt>
<dd><p>Asynchronously download multiple files using multiprocessing and queues.</p>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="gen3.file.Gen3File.delete_file">
<span class="sig-name descname"><span class="pre">delete_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">guid</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/gen3/file.html#Gen3File.delete_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gen3.file.Gen3File.delete_file" title="Link to this definition">¶</a></dt>
Expand Down Expand Up @@ -91,7 +97,7 @@ <h1>Gen3 File Class<a class="headerlink" href="#gen3-file-class" title="Link to

<dl class="py method">
<dt class="sig sig-object py" id="gen3.file.Gen3File.download_single">
<span class="sig-name descname"><span class="pre">download_single</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">object_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/gen3/file.html#Gen3File.download_single"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gen3.file.Gen3File.download_single" title="Link to this definition">¶</a></dt>
<span class="sig-name descname"><span class="pre">download_single</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">object_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/gen3/file.html#Gen3File.download_single"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gen3.file.Gen3File.download_single" title="Link to this definition">¶</a></dt>
<dd><p>Download a single file using its GUID.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
Expand All @@ -100,6 +106,12 @@ <h1>Gen3 File Class<a class="headerlink" href="#gen3-file-class" title="Link to
<li><p><strong>path</strong> (<em>str</em>) – Path to store the downloaded file at</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>True if download successful, False otherwise</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>

Expand All @@ -122,6 +134,26 @@ <h1>Gen3 File Class<a class="headerlink" href="#gen3-file-class" title="Link to
</div>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="gen3.file.Gen3File.get_presigned_urls_batch">
<span class="sig-name descname"><span class="pre">get_presigned_urls_batch</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">guids</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/gen3/file.html#Gen3File.get_presigned_urls_batch"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gen3.file.Gen3File.get_presigned_urls_batch" title="Link to this definition">¶</a></dt>
<dd><p>Get presigned URLs for multiple files efficiently.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>guids</strong> (<em>List</em><em>[</em><em>str</em><em>]</em>) – List of GUIDs to get presigned URLs for</p></li>
<li><p><strong>protocol</strong> (<em>str</em><em>, </em><em>optional</em>) – Protocol preference for URLs</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Mapping of GUID to presigned URL response</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>Dict[str, Dict]</p>
</dd>
</dl>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="gen3.file.Gen3File.upload_file">
<span class="sig-name descname"><span class="pre">upload_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">authz</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">protocol</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expires_in</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bucket</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/gen3/file.html#Gen3File.upload_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#gen3.file.Gen3File.upload_file" title="Link to this definition">¶</a></dt>
Expand Down Expand Up @@ -218,10 +250,12 @@ <h1 class="logo"><a href="index.html">Gen3 SDK</a></h1>
<li class="toctree-l1"><a class="reference internal" href="auth.html">Gen3 Auth Helper</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Gen3 File Class</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#gen3.file.Gen3File"><code class="docutils literal notranslate"><span class="pre">Gen3File</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="#gen3.file.Gen3File.async_download_multiple"><code class="docutils literal notranslate"><span class="pre">Gen3File.async_download_multiple()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#gen3.file.Gen3File.delete_file"><code class="docutils literal notranslate"><span class="pre">Gen3File.delete_file()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#gen3.file.Gen3File.delete_file_locations"><code class="docutils literal notranslate"><span class="pre">Gen3File.delete_file_locations()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#gen3.file.Gen3File.download_single"><code class="docutils literal notranslate"><span class="pre">Gen3File.download_single()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#gen3.file.Gen3File.get_presigned_url"><code class="docutils literal notranslate"><span class="pre">Gen3File.get_presigned_url()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#gen3.file.Gen3File.get_presigned_urls_batch"><code class="docutils literal notranslate"><span class="pre">Gen3File.get_presigned_urls_batch()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#gen3.file.Gen3File.upload_file"><code class="docutils literal notranslate"><span class="pre">Gen3File.upload_file()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="#gen3.file.Gen3File.upload_file_to_guid"><code class="docutils literal notranslate"><span class="pre">Gen3File.upload_file_to_guid()</span></code></a></li>
</ul>
Expand Down
12 changes: 8 additions & 4 deletions docs/_build/html/genindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ <h2 id="A">A</h2>
<li><a href="metadata.html#gen3.metadata.Gen3Metadata.async_delete_alias">async_delete_alias() (gen3.metadata.Gen3Metadata method)</a>
</li>
<li><a href="metadata.html#gen3.metadata.Gen3Metadata.async_delete_aliases">async_delete_aliases() (gen3.metadata.Gen3Metadata method)</a>
</li>
<li><a href="file.html#gen3.file.Gen3File.async_download_multiple">async_download_multiple() (gen3.file.Gen3File method)</a>
</li>
<li><a href="tools/indexing.html#gen3.tools.indexing.download_manifest.async_download_object_manifest">async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)</a>
</li>
Expand All @@ -87,11 +89,11 @@ <h2 id="A">A</h2>
<li><a href="metadata.html#gen3.metadata.Gen3Metadata.async_get_aliases">async_get_aliases() (gen3.metadata.Gen3Metadata method)</a>
</li>
<li><a href="indexing.html#gen3.index.Gen3Index.async_get_record">async_get_record() (gen3.index.Gen3Index method)</a>
</li>
<li><a href="indexing.html#gen3.index.Gen3Index.async_get_records_from_checksum">async_get_records_from_checksum() (gen3.index.Gen3Index method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="indexing.html#gen3.index.Gen3Index.async_get_records_from_checksum">async_get_records_from_checksum() (gen3.index.Gen3Index method)</a>
</li>
<li><a href="indexing.html#gen3.index.Gen3Index.async_get_records_on_page">async_get_records_on_page() (gen3.index.Gen3Index method)</a>
</li>
<li><a href="indexing.html#gen3.index.Gen3Index.async_get_with_params">async_get_with_params() (gen3.index.Gen3Index method)</a>
Expand Down Expand Up @@ -352,10 +354,10 @@ <h2 id="G">G</h2>
</li>
<li><a href="submission.html#gen3.submission.Gen3Submission.get_dictionary_all">get_dictionary_all() (gen3.submission.Gen3Submission method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="submission.html#gen3.submission.Gen3Submission.get_dictionary_node">get_dictionary_node() (gen3.submission.Gen3Submission method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="tools/drs_pull.html#gen3.tools.download.drs_download.DownloadManager.get_fresh_token">get_fresh_token() (gen3.tools.download.drs_download.DownloadManager method)</a>
</li>
<li><a href="submission.html#gen3.submission.Gen3Submission.get_graphql_schema">get_graphql_schema() (gen3.submission.Gen3Submission method)</a>
Expand All @@ -369,6 +371,8 @@ <h2 id="G">G</h2>
<li><a href="jobs.html#gen3.jobs.Gen3Jobs.get_output">get_output() (gen3.jobs.Gen3Jobs method)</a>
</li>
<li><a href="file.html#gen3.file.Gen3File.get_presigned_url">get_presigned_url() (gen3.file.Gen3File method)</a>
</li>
<li><a href="file.html#gen3.file.Gen3File.get_presigned_urls_batch">get_presigned_urls_batch() (gen3.file.Gen3File method)</a>
</li>
<li><a href="submission.html#gen3.submission.Gen3Submission.get_programs">get_programs() (gen3.submission.Gen3Submission method)</a>
</li>
Expand Down
2 changes: 2 additions & 0 deletions docs/_build/html/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,12 @@ <h1>Welcome to Gen3 SDK’s documentation!<a class="headerlink" href="#welcome-t
</li>
<li class="toctree-l1"><a class="reference internal" href="file.html">Gen3 File Class</a><ul>
<li class="toctree-l2"><a class="reference internal" href="file.html#gen3.file.Gen3File"><code class="docutils literal notranslate"><span class="pre">Gen3File</span></code></a><ul>
<li class="toctree-l3"><a class="reference internal" href="file.html#gen3.file.Gen3File.async_download_multiple"><code class="docutils literal notranslate"><span class="pre">Gen3File.async_download_multiple()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="file.html#gen3.file.Gen3File.delete_file"><code class="docutils literal notranslate"><span class="pre">Gen3File.delete_file()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="file.html#gen3.file.Gen3File.delete_file_locations"><code class="docutils literal notranslate"><span class="pre">Gen3File.delete_file_locations()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="file.html#gen3.file.Gen3File.download_single"><code class="docutils literal notranslate"><span class="pre">Gen3File.download_single()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="file.html#gen3.file.Gen3File.get_presigned_url"><code class="docutils literal notranslate"><span class="pre">Gen3File.get_presigned_url()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="file.html#gen3.file.Gen3File.get_presigned_urls_batch"><code class="docutils literal notranslate"><span class="pre">Gen3File.get_presigned_urls_batch()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="file.html#gen3.file.Gen3File.upload_file"><code class="docutils literal notranslate"><span class="pre">Gen3File.upload_file()</span></code></a></li>
<li class="toctree-l3"><a class="reference internal" href="file.html#gen3.file.Gen3File.upload_file_to_guid"><code class="docutils literal notranslate"><span class="pre">Gen3File.upload_file_to_guid()</span></code></a></li>
</ul>
Expand Down
Binary file modified docs/_build/html/objects.inv
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/_build/html/searchindex.js

Large diffs are not rendered by default.

Loading
Loading