You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add Google cloud storage support
Contrarily to the other two storage options, we do not assume immutability, so quite
some changes to track correctly the different lifetime between storage and local paths
were added.
* Rename remaining mentions of dynamic to mutable
* Update README.md
* fix: mark max_concurrent_downloads as required int
-**Rate limit handling**: Automatically respects Zenodo's rate limits using `X-RateLimit-*` headers with exponential backoff retry
19
-
-**Concurrent download control**: Limits simultaneous downloads to prevent overwhelming Zenodo
20
+
-**Concurrent download control**: Limits simultaneous downloads to prevent overwhelming servers
20
21
-**Progress bars**: Shows download progress with tqdm
21
-
-**Immutable URLs**: Returns mtime=0 since Zenodo URLs are persistent
22
+
-**Immutable URLs**: Returns mtime=0 for Zenodo and data.pypsa.org (persistent URLs); uses actual mtime for GCS
22
23
-**Environment variable support**: Configure via environment variables for CI/CD workflows
23
24
24
25
## Installation
@@ -66,7 +67,7 @@ If you don't explicitly configure it, the plugin will use default settings autom
66
67
67
68
## Usage
68
69
69
-
Use Zenodo or data.pypsa.org URLs directly in your rules. Snakemake automatically detects supported URLs and routes them to this plugin:
70
+
Use Zenodo, data.pypsa.org, or Google Cloud Storage URLs directly in your rules. Snakemake automatically detects supported URLs and routes them to this plugin:
4. Store in cache for future use (if caching is enabled)
112
121
113
122
### Example: CI/CD Configuration
@@ -139,19 +148,19 @@ The plugin automatically:
139
148
140
149
## URL Handling
141
150
142
-
- Handles URLs from `zenodo.org`, `sandbox.zenodo.org`, and `data.pypsa.org`
151
+
- Handles URLs from `zenodo.org`, `sandbox.zenodo.org`, `data.pypsa.org`, and `storage.googleapis.com`
143
152
- Other HTTP(S) URLs are handled by the standard `snakemake-storage-plugin-http`
144
153
- Both plugins can coexist in the same workflow
145
154
146
155
### Plugin Priority
147
156
148
157
When using `storage()` without specifying a plugin name, Snakemake checks all installed plugins:
149
-
- **Cached HTTP plugin**: Only accepts zenodo.org and data.pypsa.org URLs
158
+
- **Cached HTTP plugin**: Only accepts zenodo.org, data.pypsa.org, and storage.googleapis.com URLs
150
159
- **HTTP plugin**: Accepts all HTTP/HTTPS URLs (including zenodo.org)
151
160
152
161
If both plugins are installed, supported URLs would be ambiguous - both plugins accept them.
153
162
Typically snakemake would raise an error: **"Multiple suitable storage providers found"** if you try to use `storage()` without specifying which plugin to use, ie. one needs to explicitly call the Cached HTTP provider using `storage.cached_http(url)` instead of `storage(url)`,
154
-
but we monkey-patch the http plugin to refuse zenodo.org and data.pypsa.org URLs.
163
+
but we monkey-patch the http plugin to refuse zenodo.org, data.pypsa.org, and storage.googleapis.com URLs.
0 commit comments