diff --git a/CLOUD_SETUP.md b/CLOUD_SETUP.md index 9abfcc2..d5505d6 100644 --- a/CLOUD_SETUP.md +++ b/CLOUD_SETUP.md @@ -23,10 +23,14 @@ Lithops requires a service account with proper permissions to deploy Cloud Funct export PROJECT_ID=$(gcloud config get-value project) ``` -For this project, the project ID is: `ds-englacial` +For this project, the project ID is: `astera-englacial` + + ### 2. Create Service Account +**If the service account was already created you can skip to Step 4.** + ```bash gcloud iam service-accounts create lithops-executor \ --display-name="Lithops Executor Service Account" \ @@ -51,13 +55,13 @@ Grant Storage Object Admin role (to read/write GCS buckets): gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:lithops-executor@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.objectAdmin" + ``` ### 4. Download Service Account Key ```bash -gcloud iam service-accounts keys create ~/lithops-sa-key.json \ - --iam-account=lithops-executor@${PROJECT_ID}.iam.gserviceaccount.com +gcloud iam service-accounts keys create ~/lithops-sa-key.json --iam-account=lithops-executor@${PROJECT_ID}.iam.gserviceaccount.com ``` This creates a JSON key file at `~/lithops-sa-key.json`. @@ -74,6 +78,7 @@ The `lithops.yaml` configuration file should reference the service account key: lithops: backend: gcp_functions storage: gcp_storage + data_limit: False gcp: region: us-west1 @@ -82,12 +87,35 @@ gcp: gcp_functions: region: us-west1 runtime: ismip6-icechunk + runtime_memory: 8192 + runtime_timeout: 540 + project_id: astera-englacial gcp_storage: - storage_bucket: ismip6-icechunk + storage_bucket: ismip6-icechunk # Lithops uses storage_bucket, not bucket region: us-west1 ``` +### Additional steps that Julius needed to reproduce +- Get permission for service account on `astera-englacial` to be `'storage.admin'` on `gs://ismip6-icechunk` + +- Needed to manually activate the following APIS: + - Cloud Pub/Sub + - Cloud Functions + - Cloud Build + - Artifact Registry + - All of these might take a bit of time to activate. +- The service account needed the following additional permissions: + - Command `gcloud projects add-iam-policy-binding astera-englacial \ + --member=serviceAccount:lithops-executor@astera-englacial.iam.gserviceaccount.com \ + --role=roles` + - `pubsub.admin` + - `Cloud Functions Admin` (forgot the exact syntax) + - `iam.serviceAccountUser` +- Downgrade to python 3.12 + - Delete old function definitions (just to be sure) + - Add `gen: 2` to lithops config. + ### Important Notes - **Do NOT use Application Default Credentials**: Lithops requires a service account key file with `client_email` and `token_uri` fields, which ADC doesn't provide @@ -112,8 +140,18 @@ gcp_storage: ## Build the runtime ```bash -# lithops runtime delete ismip6-icechunk -c lithops.yaml -lithops runtime build -f requirements.txt ismip6-icechunk -c lithops.yaml -lithops runtime deploy ismip6-icechunk -c lithops.yaml +# To create the requirements I exported the locked uv env +# `uv export --no-hashes --no-dev --no-editable > requirements.txt` +# and then manually populated requirements-lithops.txt with the same versions +# This could definitely be improved +# Then build and deploy the runtime (If the deploy succeeds you should be good to go!) +uv run lithops runtime build -f requirements-lithops.txt ismip6-icechunk -c lithops.yaml +uv run lithops runtime deploy ismip6-icechunk -c lithops.yaml ``` +## Running the script + +And then run the script with uv +``` +uv run python virtualize_with_lithops_combine_variables.py +``` \ No newline at end of file diff --git a/lithops.yaml b/lithops.yaml index f96c060..8893ad7 100644 --- a/lithops.yaml +++ b/lithops.yaml @@ -5,14 +5,17 @@ lithops: gcp: region: us-west1 - credentials_path: /Users/aimeebarciauskas/lithops-sa-key.json + credentials_path: ~/lithops-sa-key.json gcp_functions: region: us-west1 runtime: ismip6-icechunk - runtime_memory: 8192 - runtime_timeout: 540 - project_id: ds-englacial + runtime_memory: 1024 + runtime_timeout: 300 + project_id: astera-englacial + gen: 2 + requirements: requirements-lithops.txt gcp_storage: - storage_bucket: ismip6-icechunk # Lithops uses storage_bucket, not bucket + storage_bucket: ismip6-icechunk + region: us-west1 \ No newline at end of file diff --git a/notebooks/open_icechunk_combined_vars.ipynb b/notebooks/open_icechunk_combined_vars.ipynb new file mode 100644 index 0000000..b09d107 --- /dev/null +++ b/notebooks/open_icechunk_combined_vars.ipynb @@ -0,0 +1,3619 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7f3d3038-948d-4846-b2e2-8be2dde9f661", + "metadata": {}, + "source": [ + "# Test opening and reading from the Icechunk Store\n", + "\n", + "## Step 0: Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e4ecb459-e6ec-45f6-b291-61f6da476fe4", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n const py_version = '3.8.0'.replace('rc', '-rc.').replace('.dev', '-dev.');\n const reloading = false;\n const Bokeh = root.Bokeh;\n\n // Set a timeout for this load but only if we are not already initializing\n if (typeof (root._bokeh_timeout) === \"undefined\" || (force || !root._bokeh_is_initializing)) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n // Don't load bokeh if it is still initializing\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n } else if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n // There is nothing to load\n run_callbacks();\n return null;\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error(e) {\n const src_el = e.srcElement\n console.error(\"failed to load \" + (src_el.href || src_el.src));\n }\n\n const skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {}, 'shim': {}});\n root._bokeh_is_loading = css_urls.length + 0;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n const existing_stylesheets = []\n const links = document.getElementsByTagName('link')\n for (let i = 0; i < links.length; i++) {\n const link = links[i]\n if (link.href != null) {\n existing_stylesheets.push(link.href)\n }\n }\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const escaped = encodeURI(url)\n if (existing_stylesheets.indexOf(escaped) !== -1) {\n on_load()\n continue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } var existing_scripts = []\n const scripts = document.getElementsByTagName('script')\n for (let i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n existing_scripts.push(script.src)\n }\n }\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (let i = 0; i < js_modules.length; i++) {\n const url = js_modules[i];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) !== -1 || existing_scripts.indexOf(escaped) !== -1) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n const url = js_exports[name];\n const escaped = encodeURI(url)\n if (skip.indexOf(escaped) >= 0 || root[name] != null) {\n if (!window.requirejs) {\n on_load();\n }\n continue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.holoviz.org/panel/1.8.2/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.8.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.8.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.8.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.8.0.min.js\", \"https://cdn.holoviz.org/panel/1.8.2/dist/panel.min.js\"];\n const js_modules = [];\n const js_exports = {};\n const css_urls = [];\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (let i = 0; i < inline_js.length; i++) {\n try {\n inline_js[i].call(root, root.Bokeh);\n } catch(e) {\n if (!reloading) {\n throw e;\n }\n }\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n var NewBokeh = root.Bokeh;\n if (Bokeh.versions === undefined) {\n Bokeh.versions = new Map();\n }\n if (NewBokeh.version !== Bokeh.version) {\n Bokeh.versions.set(NewBokeh.version, NewBokeh)\n }\n root.Bokeh = Bokeh;\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n // If the timeout and bokeh was not successfully loaded we reset\n // everything and try loading again\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n root._bokeh_is_loading = 0\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n const bokeh_loaded = root.Bokeh != null && (root.Bokeh.version === py_version || (root.Bokeh.versions !== undefined && root.Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n if (root.Bokeh) {\n root.Bokeh = undefined;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));", + "application/vnd.holoviews_load.v0+json": "" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n let retries = 0;\n const open = () => {\n if (comm.active) {\n comm.open();\n } else if (retries > 3) {\n console.warn('Comm target never activated')\n } else {\n retries += 1\n setTimeout(open, 500)\n }\n }\n if (comm.active) {\n comm.open();\n } else {\n setTimeout(open, 500)\n }\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n })\n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n", + "application/vnd.holoviews_load.v0+json": "" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ] + }, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "28e5d9e6-ecc4-46a7-b27d-e1a955710c1a" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import icechunk\n", + "import xarray as xr\n", + "import hvplot.xarray\n", + "import zarr\n", + "\n", + "zarr.config.set({\n", + " 'async.concurrency': 100,\n", + " 'threading.max_workers': None\n", + "})" + ] + }, + { + "cell_type": "markdown", + "id": "13b66768-8874-4970-b33a-b560272b9cc8", + "metadata": {}, + "source": [ + "## Step 1: Setup Icechunk Store" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "98a8fe8a-e6c8-40b7-9124-1e53db69ba89", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# When opening the repo, use None for anonymous/public access\n", + "credentials = icechunk.containers_credentials({\n", + " \"gs://ismip6/\": None\n", + "})\n", + "config = icechunk.RepositoryConfig.default()\n", + "\n", + "icechunk_storage = icechunk.gcs_storage(\n", + " bucket=\"ismip6-icechunk\",\n", + " # prefix=\"combined-variables-2025-12-19-v2\", # sparsely populated bucket due to failures\n", + " prefix=\"manual-transfer\", # Manual copy from Julius laptop for demonstration\n", + " anonymous=True\n", + ")\n", + "repo = icechunk.Repository.open(icechunk_storage, config, authorize_virtual_chunk_access=credentials)\n", + "session = repo.readonly_session(branch=\"main\")" + ] + }, + { + "cell_type": "markdown", + "id": "3cc576c9-a551-4bce-8e51-b5266bc78af1", + "metadata": {}, + "source": [ + "## Step 3 Test Opening with Zarr" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "08fcb4d9-820d-4d55-bcf9-834dcb8042c5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# opening using Zarr\n", + "root = zarr.open(session.store, mode='r')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b4efec55-7fa2-4713-a858-03715883bbff", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
/\n",
+       "├── AWI_PISM1\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp01\n",
+       "│   ├── exp02\n",
+       "│   ├── exp03\n",
+       "│   ├── exp04\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp11\n",
+       "│   ├── exp12\n",
+       "│   ├── exp13\n",
+       "│   ├── expA1\n",
+       "│   ├── expA2\n",
+       "│   ├── expA3\n",
+       "│   ├── expA4\n",
+       "│   ├── expA5\n",
+       "│   ├── expA6\n",
+       "│   ├── expA7\n",
+       "│   ├── expA8\n",
+       "│   ├── expB1\n",
+       "│   ├── expB10\n",
+       "│   ├── expB2\n",
+       "│   ├── expB3\n",
+       "│   ├── expB4\n",
+       "│   ├── expB5\n",
+       "│   ├── expB6\n",
+       "│   ├── expB7\n",
+       "│   ├── expB8\n",
+       "│   ├── expB9\n",
+       "│   └── hist_std\n",
+       "├── CPOM_BISICLES\n",
+       "│   └── expTD58_08\n",
+       "├── DOE_MALI\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp12\n",
+       "│   └── exp13\n",
+       "├── ILTS_PIK_SICOPOLIS1\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp12\n",
+       "│   ├── exp13\n",
+       "│   ├── expA5\n",
+       "│   ├── expA6\n",
+       "│   ├── expA7\n",
+       "│   ├── expA8\n",
+       "│   ├── expB10\n",
+       "│   ├── expB6\n",
+       "│   ├── expB7\n",
+       "│   ├── expB8\n",
+       "│   ├── expB9\n",
+       "│   ├── expC1\n",
+       "│   ├── expC10\n",
+       "│   ├── expC12\n",
+       "│   ├── expC3\n",
+       "│   ├── expC4\n",
+       "│   ├── expC6\n",
+       "│   ├── expC7\n",
+       "│   ├── expC9\n",
+       "│   ├── expD1\n",
+       "│   ├── expD10\n",
+       "│   ├── expD11\n",
+       "│   ├── expD12\n",
+       "│   ├── expD13\n",
+       "│   ├── expD14\n",
+       "│   ├── expD15\n",
+       "│   ├── expD16\n",
+       "│   ├── expD17\n",
+       "│   ├── expD18\n",
+       "│   ├── expD19\n",
+       "│   ├── expD2\n",
+       "│   ├── expD20\n",
+       "│   ├── expD3\n",
+       "│   ├── expD4\n",
+       "│   ├── expD5\n",
+       "│   ├── expD51\n",
+       "│   ├── expD52\n",
+       "│   ├── expD53\n",
+       "│   ├── expD54\n",
+       "│   ├── expD55\n",
+       "│   ├── expD56\n",
+       "│   ├── expD57\n",
+       "│   ├── expD58\n",
+       "│   ├── expD6\n",
+       "│   ├── expD7\n",
+       "│   ├── expD8\n",
+       "│   ├── expD9\n",
+       "│   ├── expE10\n",
+       "│   ├── expE6\n",
+       "│   ├── expE7\n",
+       "│   ├── expE8\n",
+       "│   ├── expE9\n",
+       "│   └── hist_std\n",
+       "├── IMAU_IMAUICE1\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp12\n",
+       "│   ├── exp13\n",
+       "│   └── hist_std\n",
+       "├── IMAU_IMAUICE2\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp12\n",
+       "│   ├── exp13\n",
+       "│   ├── expA5\n",
+       "│   ├── expA6\n",
+       "│   ├── expA7\n",
+       "│   └── hist_std\n",
+       "├── JPL1_ISSM\n",
+       "│   ├── abmb\n",
+       "│   ├── asmb\n",
+       "│   ├── ctrl\n",
+       "│   ├── ctrl_proj\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp07_HighPIGL_08\n",
+       "│   ├── exp07_LowPIGL_08\n",
+       "│   ├── exp07_PIGL_08\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp12\n",
+       "│   ├── exp12HighOcean_08\n",
+       "│   ├── exp12HighPIGL_08\n",
+       "│   ├── exp12PIGL_08\n",
+       "│   ├── exp13\n",
+       "│   ├── expA1\n",
+       "│   ├── expA2\n",
+       "│   ├── expA3\n",
+       "│   ├── expA4\n",
+       "│   ├── expB1\n",
+       "│   ├── expB2\n",
+       "│   ├── expB3\n",
+       "│   ├── expB4\n",
+       "│   ├── expB5\n",
+       "│   ├── expC12\n",
+       "│   ├── expC3\n",
+       "│   ├── expC6\n",
+       "│   ├── expC9\n",
+       "│   ├── expD1\n",
+       "│   ├── expD10\n",
+       "│   ├── expD11\n",
+       "│   ├── expD12\n",
+       "│   ├── expD13\n",
+       "│   ├── expD14\n",
+       "│   ├── expD15\n",
+       "│   ├── expD16\n",
+       "│   ├── expD17\n",
+       "│   ├── expD18\n",
+       "│   ├── expD2\n",
+       "│   ├── expD3\n",
+       "│   ├── expD4\n",
+       "│   ├── expD5\n",
+       "│   ├── expD51\n",
+       "│   ├── expD52\n",
+       "│   ├── expD53\n",
+       "│   ├── expD54\n",
+       "│   ├── expD55\n",
+       "│   ├── expD56\n",
+       "│   ├── expD57\n",
+       "│   ├── expD58\n",
+       "│   ├── expD6\n",
+       "│   ├── expD7\n",
+       "│   ├── expD8\n",
+       "│   ├── expD9\n",
+       "│   └── hist\n",
+       "├── NCAR_CISM\n",
+       "│   ├── ctrl_proj_open\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp01\n",
+       "│   ├── exp02\n",
+       "│   ├── exp03\n",
+       "│   ├── exp04\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp13\n",
+       "│   ├── expA1\n",
+       "│   ├── expA2\n",
+       "│   ├── expA3\n",
+       "│   ├── expA4\n",
+       "│   ├── expA5\n",
+       "│   ├── expA6\n",
+       "│   ├── expA7\n",
+       "│   ├── expA8\n",
+       "│   ├── expB1\n",
+       "│   ├── expB10\n",
+       "│   ├── expB2\n",
+       "│   ├── expB3\n",
+       "│   ├── expB4\n",
+       "│   ├── expB5\n",
+       "│   ├── expB6\n",
+       "│   ├── expB7\n",
+       "│   ├── expB8\n",
+       "│   ├── expB9\n",
+       "│   ├── expC1\n",
+       "│   ├── expC10\n",
+       "│   ├── expC10_open\n",
+       "│   ├── expC11\n",
+       "│   ├── expC12\n",
+       "│   ├── expD1\n",
+       "│   ├── expD10\n",
+       "│   ├── expD11\n",
+       "│   ├── expD13\n",
+       "│   ├── expD14\n",
+       "│   ├── expD15\n",
+       "│   ├── expD16\n",
+       "│   ├── expD17\n",
+       "│   ├── expD18\n",
+       "│   ├── expD2\n",
+       "│   ├── expD3\n",
+       "│   ├── expD4\n",
+       "│   ├── expD5\n",
+       "│   ├── expD51\n",
+       "│   ├── expD52\n",
+       "│   ├── expD53\n",
+       "│   ├── expD54\n",
+       "│   ├── expD55\n",
+       "│   ├── expD56\n",
+       "│   ├── expD57\n",
+       "│   ├── expD58\n",
+       "│   ├── hist_open\n",
+       "│   └── hist_std\n",
+       "├── PIK_PISM1\n",
+       "│   ├── ctrl_proj_open\n",
+       "│   ├── exp01\n",
+       "│   ├── exp02\n",
+       "│   ├── exp03\n",
+       "│   ├── exp04\n",
+       "│   └── hist_open\n",
+       "├── PIK_PISM2\n",
+       "│   ├── ctrl_proj_open\n",
+       "│   ├── exp01\n",
+       "│   ├── exp02\n",
+       "│   ├── exp03\n",
+       "│   └── exp04\n",
+       "├── UCIJPL_ISSM\n",
+       "│   ├── ctrl_proj_open\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp01\n",
+       "│   ├── exp02\n",
+       "│   ├── exp03\n",
+       "│   ├── exp04\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp11\n",
+       "│   ├── exp12\n",
+       "│   ├── exp13\n",
+       "│   ├── expA5\n",
+       "│   ├── expA6\n",
+       "│   ├── expA7\n",
+       "│   ├── expA8\n",
+       "│   ├── expB10\n",
+       "│   ├── expB6\n",
+       "│   ├── expB7\n",
+       "│   ├── expB8\n",
+       "│   ├── expB9\n",
+       "│   ├── expC11\n",
+       "│   ├── expC12\n",
+       "│   ├── expC2\n",
+       "│   ├── expC3\n",
+       "│   ├── expC5\n",
+       "│   ├── expC6\n",
+       "│   ├── expD1\n",
+       "│   ├── expD10\n",
+       "│   ├── expD11\n",
+       "│   ├── expD12\n",
+       "│   ├── expD13\n",
+       "│   ├── expD14\n",
+       "│   ├── expD15\n",
+       "│   ├── expD16\n",
+       "│   ├── expD17\n",
+       "│   ├── expD18\n",
+       "│   ├── expD2\n",
+       "│   ├── expD3\n",
+       "│   ├── expD4\n",
+       "│   ├── expD5\n",
+       "│   ├── expD6\n",
+       "│   ├── expD7\n",
+       "│   ├── expD8\n",
+       "│   ├── expD9\n",
+       "│   ├── hist_open\n",
+       "│   └── hist_std\n",
+       "├── ULB_fETISh_16km\n",
+       "│   ├── ctrl_proj_open\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp01\n",
+       "│   ├── exp02\n",
+       "│   ├── exp03\n",
+       "│   ├── exp04\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp11\n",
+       "│   ├── exp12\n",
+       "│   ├── exp13\n",
+       "│   ├── expA1\n",
+       "│   ├── expA2\n",
+       "│   ├── expA3\n",
+       "│   ├── expA4\n",
+       "│   ├── expA5\n",
+       "│   ├── expA7\n",
+       "│   ├── expA8\n",
+       "│   ├── hist_open\n",
+       "│   └── hist_std\n",
+       "├── ULB_fETISh_32km\n",
+       "│   ├── ctrl_proj_open\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp01\n",
+       "│   ├── exp02\n",
+       "│   ├── exp03\n",
+       "│   ├── exp04\n",
+       "│   ├── exp06\n",
+       "│   ├── exp07\n",
+       "│   ├── exp08\n",
+       "│   ├── exp09\n",
+       "│   ├── exp10\n",
+       "│   ├── exp11\n",
+       "│   ├── exp12\n",
+       "│   ├── exp13\n",
+       "│   ├── expA1\n",
+       "│   ├── expA2\n",
+       "│   ├── expA3\n",
+       "│   ├── expA4\n",
+       "│   ├── expA5\n",
+       "│   ├── expA6\n",
+       "│   ├── expA7\n",
+       "│   ├── expA8\n",
+       "│   ├── hist_open\n",
+       "│   └── hist_std\n",
+       "├── UTAS_ElmerIce\n",
+       "│   ├── ctrl_proj_std\n",
+       "│   ├── exp05\n",
+       "│   ├── exp06\n",
+       "│   └── exp13\n",
+       "└── VUB_AISMPALEO\n",
+       "    └── ctrl_proj_std\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m/\u001b[0m\n", + "├── \u001b[1mAWI_PISM1\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp01\u001b[0m\n", + "│ ├── \u001b[1mexp02\u001b[0m\n", + "│ ├── \u001b[1mexp03\u001b[0m\n", + "│ ├── \u001b[1mexp04\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp11\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ ├── \u001b[1mexpA1\u001b[0m\n", + "│ ├── \u001b[1mexpA2\u001b[0m\n", + "│ ├── \u001b[1mexpA3\u001b[0m\n", + "│ ├── \u001b[1mexpA4\u001b[0m\n", + "│ ├── \u001b[1mexpA5\u001b[0m\n", + "│ ├── \u001b[1mexpA6\u001b[0m\n", + "│ ├── \u001b[1mexpA7\u001b[0m\n", + "│ ├── \u001b[1mexpA8\u001b[0m\n", + "│ ├── \u001b[1mexpB1\u001b[0m\n", + "│ ├── \u001b[1mexpB10\u001b[0m\n", + "│ ├── \u001b[1mexpB2\u001b[0m\n", + "│ ├── \u001b[1mexpB3\u001b[0m\n", + "│ ├── \u001b[1mexpB4\u001b[0m\n", + "│ ├── \u001b[1mexpB5\u001b[0m\n", + "│ ├── \u001b[1mexpB6\u001b[0m\n", + "│ ├── \u001b[1mexpB7\u001b[0m\n", + "│ ├── \u001b[1mexpB8\u001b[0m\n", + "│ ├── \u001b[1mexpB9\u001b[0m\n", + "│ └── \u001b[1mhist_std\u001b[0m\n", + "├── \u001b[1mCPOM_BISICLES\u001b[0m\n", + "│ └── \u001b[1mexpTD58_08\u001b[0m\n", + "├── \u001b[1mDOE_MALI\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ └── \u001b[1mexp13\u001b[0m\n", + "├── \u001b[1mILTS_PIK_SICOPOLIS1\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ ├── \u001b[1mexpA5\u001b[0m\n", + "│ ├── \u001b[1mexpA6\u001b[0m\n", + "│ ├── \u001b[1mexpA7\u001b[0m\n", + "│ ├── \u001b[1mexpA8\u001b[0m\n", + "│ ├── \u001b[1mexpB10\u001b[0m\n", + "│ ├── \u001b[1mexpB6\u001b[0m\n", + "│ ├── \u001b[1mexpB7\u001b[0m\n", + "│ ├── \u001b[1mexpB8\u001b[0m\n", + "│ ├── \u001b[1mexpB9\u001b[0m\n", + "│ ├── \u001b[1mexpC1\u001b[0m\n", + "│ ├── \u001b[1mexpC10\u001b[0m\n", + "│ ├── \u001b[1mexpC12\u001b[0m\n", + "│ ├── \u001b[1mexpC3\u001b[0m\n", + "│ ├── \u001b[1mexpC4\u001b[0m\n", + "│ ├── \u001b[1mexpC6\u001b[0m\n", + "│ ├── \u001b[1mexpC7\u001b[0m\n", + "│ ├── \u001b[1mexpC9\u001b[0m\n", + "│ ├── \u001b[1mexpD1\u001b[0m\n", + "│ ├── \u001b[1mexpD10\u001b[0m\n", + "│ ├── \u001b[1mexpD11\u001b[0m\n", + "│ ├── \u001b[1mexpD12\u001b[0m\n", + "│ ├── \u001b[1mexpD13\u001b[0m\n", + "│ ├── \u001b[1mexpD14\u001b[0m\n", + "│ ├── \u001b[1mexpD15\u001b[0m\n", + "│ ├── \u001b[1mexpD16\u001b[0m\n", + "│ ├── \u001b[1mexpD17\u001b[0m\n", + "│ ├── \u001b[1mexpD18\u001b[0m\n", + "│ ├── \u001b[1mexpD19\u001b[0m\n", + "│ ├── \u001b[1mexpD2\u001b[0m\n", + "│ ├── \u001b[1mexpD20\u001b[0m\n", + "│ ├── \u001b[1mexpD3\u001b[0m\n", + "│ ├── \u001b[1mexpD4\u001b[0m\n", + "│ ├── \u001b[1mexpD5\u001b[0m\n", + "│ ├── \u001b[1mexpD51\u001b[0m\n", + "│ ├── \u001b[1mexpD52\u001b[0m\n", + "│ ├── \u001b[1mexpD53\u001b[0m\n", + "│ ├── \u001b[1mexpD54\u001b[0m\n", + "│ ├── \u001b[1mexpD55\u001b[0m\n", + "│ ├── \u001b[1mexpD56\u001b[0m\n", + "│ ├── \u001b[1mexpD57\u001b[0m\n", + "│ ├── \u001b[1mexpD58\u001b[0m\n", + "│ ├── \u001b[1mexpD6\u001b[0m\n", + "│ ├── \u001b[1mexpD7\u001b[0m\n", + "│ ├── \u001b[1mexpD8\u001b[0m\n", + "│ ├── \u001b[1mexpD9\u001b[0m\n", + "│ ├── \u001b[1mexpE10\u001b[0m\n", + "│ ├── \u001b[1mexpE6\u001b[0m\n", + "│ ├── \u001b[1mexpE7\u001b[0m\n", + "│ ├── \u001b[1mexpE8\u001b[0m\n", + "│ ├── \u001b[1mexpE9\u001b[0m\n", + "│ └── \u001b[1mhist_std\u001b[0m\n", + "├── \u001b[1mIMAU_IMAUICE1\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ └── \u001b[1mhist_std\u001b[0m\n", + "├── \u001b[1mIMAU_IMAUICE2\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ ├── \u001b[1mexpA5\u001b[0m\n", + "│ ├── \u001b[1mexpA6\u001b[0m\n", + "│ ├── \u001b[1mexpA7\u001b[0m\n", + "│ └── \u001b[1mhist_std\u001b[0m\n", + "├── \u001b[1mJPL1_ISSM\u001b[0m\n", + "│ ├── \u001b[1mabmb\u001b[0m\n", + "│ ├── \u001b[1masmb\u001b[0m\n", + "│ ├── \u001b[1mctrl\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp07_HighPIGL_08\u001b[0m\n", + "│ ├── \u001b[1mexp07_LowPIGL_08\u001b[0m\n", + "│ ├── \u001b[1mexp07_PIGL_08\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ ├── \u001b[1mexp12HighOcean_08\u001b[0m\n", + "│ ├── \u001b[1mexp12HighPIGL_08\u001b[0m\n", + "│ ├── \u001b[1mexp12PIGL_08\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ ├── \u001b[1mexpA1\u001b[0m\n", + "│ ├── \u001b[1mexpA2\u001b[0m\n", + "│ ├── \u001b[1mexpA3\u001b[0m\n", + "│ ├── \u001b[1mexpA4\u001b[0m\n", + "│ ├── \u001b[1mexpB1\u001b[0m\n", + "│ ├── \u001b[1mexpB2\u001b[0m\n", + "│ ├── \u001b[1mexpB3\u001b[0m\n", + "│ ├── \u001b[1mexpB4\u001b[0m\n", + "│ ├── \u001b[1mexpB5\u001b[0m\n", + "│ ├── \u001b[1mexpC12\u001b[0m\n", + "│ ├── \u001b[1mexpC3\u001b[0m\n", + "│ ├── \u001b[1mexpC6\u001b[0m\n", + "│ ├── \u001b[1mexpC9\u001b[0m\n", + "│ ├── \u001b[1mexpD1\u001b[0m\n", + "│ ├── \u001b[1mexpD10\u001b[0m\n", + "│ ├── \u001b[1mexpD11\u001b[0m\n", + "│ ├── \u001b[1mexpD12\u001b[0m\n", + "│ ├── \u001b[1mexpD13\u001b[0m\n", + "│ ├── \u001b[1mexpD14\u001b[0m\n", + "│ ├── \u001b[1mexpD15\u001b[0m\n", + "│ ├── \u001b[1mexpD16\u001b[0m\n", + "│ ├── \u001b[1mexpD17\u001b[0m\n", + "│ ├── \u001b[1mexpD18\u001b[0m\n", + "│ ├── \u001b[1mexpD2\u001b[0m\n", + "│ ├── \u001b[1mexpD3\u001b[0m\n", + "│ ├── \u001b[1mexpD4\u001b[0m\n", + "│ ├── \u001b[1mexpD5\u001b[0m\n", + "│ ├── \u001b[1mexpD51\u001b[0m\n", + "│ ├── \u001b[1mexpD52\u001b[0m\n", + "│ ├── \u001b[1mexpD53\u001b[0m\n", + "│ ├── \u001b[1mexpD54\u001b[0m\n", + "│ ├── \u001b[1mexpD55\u001b[0m\n", + "│ ├── \u001b[1mexpD56\u001b[0m\n", + "│ ├── \u001b[1mexpD57\u001b[0m\n", + "│ ├── \u001b[1mexpD58\u001b[0m\n", + "│ ├── \u001b[1mexpD6\u001b[0m\n", + "│ ├── \u001b[1mexpD7\u001b[0m\n", + "│ ├── \u001b[1mexpD8\u001b[0m\n", + "│ ├── \u001b[1mexpD9\u001b[0m\n", + "│ └── \u001b[1mhist\u001b[0m\n", + "├── \u001b[1mNCAR_CISM\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_open\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp01\u001b[0m\n", + "│ ├── \u001b[1mexp02\u001b[0m\n", + "│ ├── \u001b[1mexp03\u001b[0m\n", + "│ ├── \u001b[1mexp04\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ ├── \u001b[1mexpA1\u001b[0m\n", + "│ ├── \u001b[1mexpA2\u001b[0m\n", + "│ ├── \u001b[1mexpA3\u001b[0m\n", + "│ ├── \u001b[1mexpA4\u001b[0m\n", + "│ ├── \u001b[1mexpA5\u001b[0m\n", + "│ ├── \u001b[1mexpA6\u001b[0m\n", + "│ ├── \u001b[1mexpA7\u001b[0m\n", + "│ ├── \u001b[1mexpA8\u001b[0m\n", + "│ ├── \u001b[1mexpB1\u001b[0m\n", + "│ ├── \u001b[1mexpB10\u001b[0m\n", + "│ ├── \u001b[1mexpB2\u001b[0m\n", + "│ ├── \u001b[1mexpB3\u001b[0m\n", + "│ ├── \u001b[1mexpB4\u001b[0m\n", + "│ ├── \u001b[1mexpB5\u001b[0m\n", + "│ ├── \u001b[1mexpB6\u001b[0m\n", + "│ ├── \u001b[1mexpB7\u001b[0m\n", + "│ ├── \u001b[1mexpB8\u001b[0m\n", + "│ ├── \u001b[1mexpB9\u001b[0m\n", + "│ ├── \u001b[1mexpC1\u001b[0m\n", + "│ ├── \u001b[1mexpC10\u001b[0m\n", + "│ ├── \u001b[1mexpC10_open\u001b[0m\n", + "│ ├── \u001b[1mexpC11\u001b[0m\n", + "│ ├── \u001b[1mexpC12\u001b[0m\n", + "│ ├── \u001b[1mexpD1\u001b[0m\n", + "│ ├── \u001b[1mexpD10\u001b[0m\n", + "│ ├── \u001b[1mexpD11\u001b[0m\n", + "│ ├── \u001b[1mexpD13\u001b[0m\n", + "│ ├── \u001b[1mexpD14\u001b[0m\n", + "│ ├── \u001b[1mexpD15\u001b[0m\n", + "│ ├── \u001b[1mexpD16\u001b[0m\n", + "│ ├── \u001b[1mexpD17\u001b[0m\n", + "│ ├── \u001b[1mexpD18\u001b[0m\n", + "│ ├── \u001b[1mexpD2\u001b[0m\n", + "│ ├── \u001b[1mexpD3\u001b[0m\n", + "│ ├── \u001b[1mexpD4\u001b[0m\n", + "│ ├── \u001b[1mexpD5\u001b[0m\n", + "│ ├── \u001b[1mexpD51\u001b[0m\n", + "│ ├── \u001b[1mexpD52\u001b[0m\n", + "│ ├── \u001b[1mexpD53\u001b[0m\n", + "│ ├── \u001b[1mexpD54\u001b[0m\n", + "│ ├── \u001b[1mexpD55\u001b[0m\n", + "│ ├── \u001b[1mexpD56\u001b[0m\n", + "│ ├── \u001b[1mexpD57\u001b[0m\n", + "│ ├── \u001b[1mexpD58\u001b[0m\n", + "│ ├── \u001b[1mhist_open\u001b[0m\n", + "│ └── \u001b[1mhist_std\u001b[0m\n", + "├── \u001b[1mPIK_PISM1\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_open\u001b[0m\n", + "│ ├── \u001b[1mexp01\u001b[0m\n", + "│ ├── \u001b[1mexp02\u001b[0m\n", + "│ ├── \u001b[1mexp03\u001b[0m\n", + "│ ├── \u001b[1mexp04\u001b[0m\n", + "│ └── \u001b[1mhist_open\u001b[0m\n", + "├── \u001b[1mPIK_PISM2\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_open\u001b[0m\n", + "│ ├── \u001b[1mexp01\u001b[0m\n", + "│ ├── \u001b[1mexp02\u001b[0m\n", + "│ ├── \u001b[1mexp03\u001b[0m\n", + "│ └── \u001b[1mexp04\u001b[0m\n", + "├── \u001b[1mUCIJPL_ISSM\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_open\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp01\u001b[0m\n", + "│ ├── \u001b[1mexp02\u001b[0m\n", + "│ ├── \u001b[1mexp03\u001b[0m\n", + "│ ├── \u001b[1mexp04\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp11\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ ├── \u001b[1mexpA5\u001b[0m\n", + "│ ├── \u001b[1mexpA6\u001b[0m\n", + "│ ├── \u001b[1mexpA7\u001b[0m\n", + "│ ├── \u001b[1mexpA8\u001b[0m\n", + "│ ├── \u001b[1mexpB10\u001b[0m\n", + "│ ├── \u001b[1mexpB6\u001b[0m\n", + "│ ├── \u001b[1mexpB7\u001b[0m\n", + "│ ├── \u001b[1mexpB8\u001b[0m\n", + "│ ├── \u001b[1mexpB9\u001b[0m\n", + "│ ├── \u001b[1mexpC11\u001b[0m\n", + "│ ├── \u001b[1mexpC12\u001b[0m\n", + "│ ├── \u001b[1mexpC2\u001b[0m\n", + "│ ├── \u001b[1mexpC3\u001b[0m\n", + "│ ├── \u001b[1mexpC5\u001b[0m\n", + "│ ├── \u001b[1mexpC6\u001b[0m\n", + "│ ├── \u001b[1mexpD1\u001b[0m\n", + "│ ├── \u001b[1mexpD10\u001b[0m\n", + "│ ├── \u001b[1mexpD11\u001b[0m\n", + "│ ├── \u001b[1mexpD12\u001b[0m\n", + "│ ├── \u001b[1mexpD13\u001b[0m\n", + "│ ├── \u001b[1mexpD14\u001b[0m\n", + "│ ├── \u001b[1mexpD15\u001b[0m\n", + "│ ├── \u001b[1mexpD16\u001b[0m\n", + "│ ├── \u001b[1mexpD17\u001b[0m\n", + "│ ├── \u001b[1mexpD18\u001b[0m\n", + "│ ├── \u001b[1mexpD2\u001b[0m\n", + "│ ├── \u001b[1mexpD3\u001b[0m\n", + "│ ├── \u001b[1mexpD4\u001b[0m\n", + "│ ├── \u001b[1mexpD5\u001b[0m\n", + "│ ├── \u001b[1mexpD6\u001b[0m\n", + "│ ├── \u001b[1mexpD7\u001b[0m\n", + "│ ├── \u001b[1mexpD8\u001b[0m\n", + "│ ├── \u001b[1mexpD9\u001b[0m\n", + "│ ├── \u001b[1mhist_open\u001b[0m\n", + "│ └── \u001b[1mhist_std\u001b[0m\n", + "├── \u001b[1mULB_fETISh_16km\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_open\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp01\u001b[0m\n", + "│ ├── \u001b[1mexp02\u001b[0m\n", + "│ ├── \u001b[1mexp03\u001b[0m\n", + "│ ├── \u001b[1mexp04\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp11\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ ├── \u001b[1mexpA1\u001b[0m\n", + "│ ├── \u001b[1mexpA2\u001b[0m\n", + "│ ├── \u001b[1mexpA3\u001b[0m\n", + "│ ├── \u001b[1mexpA4\u001b[0m\n", + "│ ├── \u001b[1mexpA5\u001b[0m\n", + "│ ├── \u001b[1mexpA7\u001b[0m\n", + "│ ├── \u001b[1mexpA8\u001b[0m\n", + "│ ├── \u001b[1mhist_open\u001b[0m\n", + "│ └── \u001b[1mhist_std\u001b[0m\n", + "├── \u001b[1mULB_fETISh_32km\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_open\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp01\u001b[0m\n", + "│ ├── \u001b[1mexp02\u001b[0m\n", + "│ ├── \u001b[1mexp03\u001b[0m\n", + "│ ├── \u001b[1mexp04\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ ├── \u001b[1mexp07\u001b[0m\n", + "│ ├── \u001b[1mexp08\u001b[0m\n", + "│ ├── \u001b[1mexp09\u001b[0m\n", + "│ ├── \u001b[1mexp10\u001b[0m\n", + "│ ├── \u001b[1mexp11\u001b[0m\n", + "│ ├── \u001b[1mexp12\u001b[0m\n", + "│ ├── \u001b[1mexp13\u001b[0m\n", + "│ ├── \u001b[1mexpA1\u001b[0m\n", + "│ ├── \u001b[1mexpA2\u001b[0m\n", + "│ ├── \u001b[1mexpA3\u001b[0m\n", + "│ ├── \u001b[1mexpA4\u001b[0m\n", + "│ ├── \u001b[1mexpA5\u001b[0m\n", + "│ ├── \u001b[1mexpA6\u001b[0m\n", + "│ ├── \u001b[1mexpA7\u001b[0m\n", + "│ ├── \u001b[1mexpA8\u001b[0m\n", + "│ ├── \u001b[1mhist_open\u001b[0m\n", + "│ └── \u001b[1mhist_std\u001b[0m\n", + "├── \u001b[1mUTAS_ElmerIce\u001b[0m\n", + "│ ├── \u001b[1mctrl_proj_std\u001b[0m\n", + "│ ├── \u001b[1mexp05\u001b[0m\n", + "│ ├── \u001b[1mexp06\u001b[0m\n", + "│ └── \u001b[1mexp13\u001b[0m\n", + "└── \u001b[1mVUB_AISMPALEO\u001b[0m\n", + " └── \u001b[1mctrl_proj_std\u001b[0m\n" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "root.tree(level=1)" + ] + }, + { + "cell_type": "markdown", + "id": "a4a0c7ee-f748-4a80-aec1-eb9463f3916f", + "metadata": {}, + "source": [ + "## Step 4: Test Open + Plot with `xarray.open_datatree`\n", + "\n", + "Note: It is not recommended to do this with the entire datatree." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "16a6a18e-9f8a-420f-a0b9-31d630280cda", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/juliusbusecke/Code/ismip-indexing/.venv/lib/python3.12/site-packages/zarr/codecs/numcodecs/_codecs.py:141: ZarrUserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n" + ] + } + ], + "source": [ + "dt = xr.open_datatree(\n", + " session.store,\n", + " engine=\"zarr\",\n", + " zarr_format=3,\n", + " consolidated=False,\n", + " chunks={},\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d5edc9c7-637c-4c21-af9e-a5e62748dd85", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataTree>\n",
+       "Group: /\n",
+       "├── Group: /IMAU_IMAUICE2\n",
+       "│   ├── Group: /IMAU_IMAUICE2/ctrl_proj_std\n",
+       "│   │       Dimensions:              (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: nv4, bnds\n",
+       "│   │       Data variables: (12/17)\n",
+       "│   │           acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           topg                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           dlithkdt             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           lithk                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           sftgrf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           time_bnds            (time, bnds) datetime64[ns] 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│   │           libmassbfgr          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE2\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   ├── Group: /IMAU_IMAUICE2/exp06\n",
+       "│   │       Dimensions:              (y: 761, x: 761, nv4: 4, time: 86, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: nv4, bnds\n",
+       "│   │       Data variables: (12/17)\n",
+       "│   │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           libmassbfgr          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           orog                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           sftgif               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftflf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgrf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE2\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   ├── Group: /IMAU_IMAUICE2/exp13\n",
+       "│   │       Dimensions:              (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: nv4, bnds\n",
+       "│   │       Data variables: (12/17)\n",
+       "│   │           yvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lithk                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftflf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgif               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           topg                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           time_bnds            (time, bnds) datetime64[ns] 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│   │           acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE2\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   ...\n",
+       "│   ├── Group: /IMAU_IMAUICE2/expA5\n",
+       "│   │       Dimensions:              (time: 86, y: 761, x: 761, bnds: 2, nv4: 4)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │       Dimensions without coordinates: bnds, nv4\n",
+       "│   │       Data variables: (12/17)\n",
+       "│   │           dlithkdt             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           orog                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgif               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           time_bnds            (time, bnds) datetime64[ns] 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           sftgrf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftflf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lithk                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE2\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   ├── Group: /IMAU_IMAUICE2/hist_std\n",
+       "│   │       Dimensions:              (time: 36, y: 761, x: 761, nv4: 4)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 288B 1980-01-01 ... 2015-01-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: nv4\n",
+       "│   │       Data variables: (12/16)\n",
+       "│   │           sftflf               (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lithk                (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           sftgif               (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           yvelmean             (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base                 (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr          (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgrf               (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           orog                 (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE2\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   └── Group: /IMAU_IMAUICE2/expA6\n",
+       "│           Dimensions:              (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n",
+       "│           Coordinates:\n",
+       "│             * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│             * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│             * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│               polar_stereographic  int32 4B ...\n",
+       "│               lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│               lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│           Dimensions without coordinates: nv4, bnds\n",
+       "│           Data variables: (12/17)\n",
+       "│               acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               sftflf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│               licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│               orog                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               ...                   ...\n",
+       "│               lithk                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               libmassbfgr          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               sftgrf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               time_bnds            (time, bnds) datetime64[ns] 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│               sftgif               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│           Attributes:\n",
+       "│               Conventions:   CF-1.6\n",
+       "│               title:         ISMIP6 Projections Greenland model output\n",
+       "│               institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│               source:        IMAUICE\n",
+       "│               references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│               contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│               comment:       IMAU, IMAUICE2\n",
+       "│               grid_mapping:  polar_stereographic\n",
+       "├── Group: /CPOM_BISICLES\n",
+       "│   └── Group: /CPOM_BISICLES/expTD58_08\n",
+       "│           Dimensions:          (time: 90, x: 761, y: 761)\n",
+       "│           Coordinates:\n",
+       "│             * time             (time) float64 720B 365.2 730.5 ... 3.251e+04 3.287e+04\n",
+       "│             * x                (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│             * y                (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│               lat              (x, y) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│               lon              (x, y) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│           Data variables: (12/31)\n",
+       "│               acabf            (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               xvelbase         (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               base             (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               iareagr          (time) float64 720B dask.array<chunksize=(90,), meta=np.ndarray>\n",
+       "│               libmassbffl      (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               licalvf          (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               ...               ...\n",
+       "│               zvelbase         (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               litempbotfl      (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               sftgrf           (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               tendlibmassbffl  (time) float64 720B dask.array<chunksize=(90,), meta=np.ndarray>\n",
+       "│               libmassbfgr      (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│               topg             (time, x, y) float64 417MB dask.array<chunksize=(18, 153, 153), meta=np.ndarray>\n",
+       "│           Attributes:\n",
+       "│               info:      Model CPOM BISICLES\n",
+       "│               history:   bisiclesISMIPVarExtractorV2.py\n",
+       "│               meshName:  6080x6080km_8km_Antarctic_stereo\n",
+       "├── Group: /ILTS_PIK_SICOPOLIS1\n",
+       "│   ├── Group: /ILTS_PIK_SICOPOLIS1/expA7\n",
+       "│   │       Dimensions:      (time: 86, y: 761, x: 761, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │           lat          (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │           lon          (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: bnds\n",
+       "│   │       Data variables: (12/29)\n",
+       "│   │           yvelsurf     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           dlithkdt     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           crs          int8 1B ...\n",
+       "│   │           hfgeoubed    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           acabf        (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           yvelmean     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelmean     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           strbasemag   (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbffl  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           year         (time) float32 344B dask.array<chunksize=(1,), meta=np.ndarray>\n",
+       "│   │           litempbotfl  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           title:        ISMIP6 output of simulation ant08_b2_future25-06_expA7\n",
+       "│   │           institution:  Institute of Low Temperature Science, Hokkaido University, ...\n",
+       "│   │           source:       SICOPOLIS Version 5-dev\n",
+       "│   │           history:      Wed Oct  2 11:09:28 2019: ncks -O -F -v time,time_bnds,year...\n",
+       "│   │           references:   http://www.sicopolis.net/\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           NCO:          netCDF Operators version 4.7.8 (Homepage = http://nco.sf.ne...\n",
+       "│   ├── Group: /ILTS_PIK_SICOPOLIS1/expD2\n",
+       "│   │       Dimensions:      (time: 86, y: 761, x: 761, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │       Dimensions without coordinates: bnds\n",
+       "│   │       Data variables: (12/29)\n",
+       "│   │           yvelsurf     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base         (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           dlithkdt     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf      (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotfl  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           lithk        (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           zvelbase     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelbase     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           time_bnds    (time, bnds) object 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│   │           hfgeoubed    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           orog         (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           title:        ISMIP6 output of simulation ant08_b2_future25-06_expD2\n",
+       "│   │           institution:  Institute of Low Temperature Science, Hokkaido University, ...\n",
+       "│   │           source:       SICOPOLIS Version 5.1\n",
+       "│   │           history:      Tue Feb  4 12:05:06 2020: ncks -O -F -v time,time_bnds,year...\n",
+       "│   │           references:   http://www.sicopolis.net/\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           NCO:          netCDF Operators version 4.8.1 (Homepage = http://nco.sf.ne...\n",
+       "│   ├── Group: /ILTS_PIK_SICOPOLIS1/expD20\n",
+       "│   │       Dimensions:      (time: 86, y: 761, x: 761, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │       Dimensions without coordinates: bnds\n",
+       "│   │       Data variables: (12/29)\n",
+       "│   │           yvelsurf     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           dlithkdt     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           hfgeoubed    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lifmassbf    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotgr  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           litemptop    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelbase     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbffl  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftflf       (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotfl  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           zvelbase     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           title:        ISMIP6 output of simulation ant08_b2_future25-06_expD20\n",
+       "│   │           institution:  Institute of Low Temperature Science, Hokkaido University, ...\n",
+       "│   │           source:       SICOPOLIS Version 5.1\n",
+       "│   │           history:      Tue Feb  4 12:31:18 2020: ncks -O -F -v time,time_bnds,year...\n",
+       "│   │           references:   http://www.sicopolis.net/\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           NCO:          netCDF Operators version 4.8.1 (Homepage = http://nco.sf.ne...\n",
+       "│   ...\n",
+       "│   ├── Group: /ILTS_PIK_SICOPOLIS1/expD53\n",
+       "│   │       Dimensions:      (time: 86, y: 761, x: 761, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │           lat          (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │           lon          (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: bnds\n",
+       "│   │       Data variables: (12/29)\n",
+       "│   │           acabf        (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base         (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           year         (time) float32 344B dask.array<chunksize=(1,), meta=np.ndarray>\n",
+       "│   │           dlithkdt     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lifmassbf    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           orog         (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           zvelsurf     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelmean     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbffl  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelsurf     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           time_bnds    (time, bnds) object 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           title:        ISMIP6 output of simulation ant08_b2_future25-06_expD53\n",
+       "│   │           institution:  Institute of Low Temperature Science, Hokkaido University, ...\n",
+       "│   │           source:       SICOPOLIS Version 5-dev\n",
+       "│   │           history:      Sun Oct  6 18:07:23 2019: ncks -O -F -v time,time_bnds,year...\n",
+       "│   │           references:   http://www.sicopolis.net/\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           NCO:          netCDF Operators version 4.7.8 (Homepage = http://nco.sf.ne...\n",
+       "│   ├── Group: /ILTS_PIK_SICOPOLIS1/expE10\n",
+       "│   │       Dimensions:      (time: 86, y: 761, x: 761, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │           lon          (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │           lat          (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: bnds\n",
+       "│   │       Data variables: (12/29)\n",
+       "│   │           zvelbase     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base         (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           year         (time) float32 344B dask.array<chunksize=(1,), meta=np.ndarray>\n",
+       "│   │           zvelsurf     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbffl  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf      (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           crs          int8 1B ...\n",
+       "│   │           litempbotgr  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftflf       (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelsurf     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelbase     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelbase     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           title:        ISMIP6 output of simulation ant08_b2_future25-06_expE10\n",
+       "│   │           institution:  Institute of Low Temperature Science, Hokkaido University, ...\n",
+       "│   │           source:       SICOPOLIS Version 5-dev\n",
+       "│   │           history:      Thu Oct  3 13:33:26 2019: ncks -O -F -v time,time_bnds,year...\n",
+       "│   │           references:   http://www.sicopolis.net/\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           NCO:          netCDF Operators version 4.7.8 (Homepage = http://nco.sf.ne...\n",
+       "│   └── Group: /ILTS_PIK_SICOPOLIS1/expA5\n",
+       "│           Dimensions:      (time: 86, y: 761, x: 761, bnds: 2)\n",
+       "│           Coordinates:\n",
+       "│             * time         (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n",
+       "│             * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│             * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│               lon          (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│               lat          (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│           Dimensions without coordinates: bnds\n",
+       "│           Data variables: (12/29)\n",
+       "│               year         (time) float32 344B dask.array<chunksize=(1,), meta=np.ndarray>\n",
+       "│               yvelmean     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               zvelsurf     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               hfgeoubed    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               licalvf      (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               litempbotfl  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               ...           ...\n",
+       "│               orog         (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               base         (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               litemptop    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               dlithkdt     (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               lifmassbf    (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               libmassbfgr  (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│           Attributes:\n",
+       "│               title:        ISMIP6 output of simulation ant08_b2_future25-06_expA5\n",
+       "│               institution:  Institute of Low Temperature Science, Hokkaido University, ...\n",
+       "│               source:       SICOPOLIS Version 5-dev\n",
+       "│               history:      Wed Oct  2 11:06:36 2019: ncks -O -F -v time,time_bnds,year...\n",
+       "│               references:   http://www.sicopolis.net/\n",
+       "│               Conventions:  CF-1.6\n",
+       "│               NCO:          netCDF Operators version 4.7.8 (Homepage = http://nco.sf.ne...\n",
+       "...\n",
+       "├── Group: /IMAU_IMAUICE1\n",
+       "│   ├── Group: /IMAU_IMAUICE1/ctrl_proj_std\n",
+       "│   │       Dimensions:              (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: nv4, bnds\n",
+       "│   │       Data variables: (12/18)\n",
+       "│   │           xvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           dlithkdt             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           orog                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           sftflf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           topg                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbffl          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE1\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   ├── Group: /IMAU_IMAUICE1/exp13\n",
+       "│   │       Dimensions:              (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: nv4, bnds\n",
+       "│   │       Data variables: (12/17)\n",
+       "│   │           base                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftflf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           libmassbfgr          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           time_bnds            (time, bnds) datetime64[ns] 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│   │           dlithkdt             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgrf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lithk                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE1\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   ├── Group: /IMAU_IMAUICE1/hist_std\n",
+       "│   │       Dimensions:              (time: 36, y: 761, x: 761, two: 2, nv4: 4)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 288B 1979-07-01 ... 2014-07-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │       Dimensions without coordinates: two, nv4\n",
+       "│   │       Data variables: (12/18)\n",
+       "│   │           xvelmean             (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           acabf                (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelmean             (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           topg                 (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lithk                (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           sftgif               (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           dlithkdt             (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgrf               (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base                 (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 83MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE1\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   ...\n",
+       "│   ├── Group: /IMAU_IMAUICE1/exp08\n",
+       "│   │       Dimensions:              (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │       Dimensions without coordinates: nv4, bnds\n",
+       "│   │       Data variables: (12/17)\n",
+       "│   │           lithk                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           time_bnds            (time, bnds) datetime64[ns] 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│   │           dlithkdt             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           base                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           topg                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE1\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   ├── Group: /IMAU_IMAUICE1/exp10\n",
+       "│   │       Dimensions:              (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│   │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│   │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│   │           polar_stereographic  int32 4B ...\n",
+       "│   │       Dimensions without coordinates: nv4, bnds\n",
+       "│   │       Data variables: (12/17)\n",
+       "│   │           acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           dlithkdt             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           topg                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│   │           sftflf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...                   ...\n",
+       "│   │           orog                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgrf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:   CF-1.6\n",
+       "│   │           title:         ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│   │           source:        IMAUICE\n",
+       "│   │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│   │           comment:       IMAU, IMAUICE1\n",
+       "│   │           grid_mapping:  polar_stereographic\n",
+       "│   └── Group: /IMAU_IMAUICE1/exp06\n",
+       "│           Dimensions:              (time: 86, bnds: 2, y: 761, x: 761, nv4: 4)\n",
+       "│           Coordinates:\n",
+       "│             * time                 (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n",
+       "│             * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│             * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "│               polar_stereographic  int32 4B ...\n",
+       "│               lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│               lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "│           Dimensions without coordinates: bnds, nv4\n",
+       "│           Data variables: (12/17)\n",
+       "│               time_bnds            (time, bnds) datetime64[ns] 1kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│               libmassbfgr          (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               dlithkdt             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               licalvf              (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "│               orog                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               ...                   ...\n",
+       "│               sftgif               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               xvelmean             (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               ligroundf            (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               sftflf               (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               acabf                (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               topg                 (time, y, x) float32 199MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│           Attributes:\n",
+       "│               Conventions:   CF-1.6\n",
+       "│               title:         ISMIP6 Projections Greenland model output\n",
+       "│               institution:   Utrecht University, Institute for Marine and Atmospheric R...\n",
+       "│               source:        IMAUICE\n",
+       "│               references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│               contact:       Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n",
+       "│               comment:       IMAU, IMAUICE1\n",
+       "│               grid_mapping:  polar_stereographic\n",
+       "├── Group: /PIK_PISM1\n",
+       "│   ├── Group: /PIK_PISM1/exp01\n",
+       "│   │       Dimensions:      (time: 101, y: 761, x: 761, nv: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │       Dimensions without coordinates: nv\n",
+       "│   │       Data variables: (12/28)\n",
+       "│   │           acabf        (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base         (time, y, x) float32 234MB dask.array<chunksize=(101, 761, 761), meta=np.ndarray>\n",
+       "│   │           hfgeoubed    (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │           zvelbase     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf      (time, y, x) float32 234MB dask.array<chunksize=(101, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotfl  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           yvelbase     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbffl  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftflf       (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelbase     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelsurf     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           title:        ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:  Potsdam Institute for Climate Impact Research, DE\n",
+       "│   │           source:       PISM\n",
+       "│   │           references:   https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:      Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n",
+       "│   │           comment:      PIK, PISM1\n",
+       "│   ├── Group: /PIK_PISM1/ctrl_proj_open\n",
+       "│   │       Dimensions:      (time: 101, y: 761, x: 761, nv: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │       Dimensions without coordinates: nv\n",
+       "│   │       Data variables: (12/28)\n",
+       "│   │           acabf        (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           hfgeoubed    (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf      (time, y, x) float32 234MB dask.array<chunksize=(101, 761, 761), meta=np.ndarray>\n",
+       "│   │           orog         (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelsurf     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelmean     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           mapping      float64 8B ...\n",
+       "│   │           yvelsurf     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotgr  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelbase     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           zvelsurf     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgif       (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           title:        ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:  Potsdam Institute for Climate Impact Research, DE\n",
+       "│   │           source:       PISM\n",
+       "│   │           references:   https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:      Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n",
+       "│   │           comment:      PIK, PISM1\n",
+       "│   ├── Group: /PIK_PISM1/hist_open\n",
+       "│   │       Dimensions:      (time: 166, y: 761, x: 761, nv: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 1kB 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │       Dimensions without coordinates: nv\n",
+       "│   │       Data variables: (12/28)\n",
+       "│   │           acabf        (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           zvelsurf     (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           hfgeoubed    (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbfgr  (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lifmassbf    (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotgr  (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           dlithkdt     (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litemptop    (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelbase     (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf      (time, y, x) float32 385MB dask.array<chunksize=(166, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelmean     (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lithk        (time, y, x) float32 385MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           title:        ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:  Potsdam Institute for Climate Impact Research, DE\n",
+       "│   │           source:       PISM\n",
+       "│   │           references:   https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:      Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n",
+       "│   │           comment:      PIK, PISM1\n",
+       "│   ├── Group: /PIK_PISM1/exp04\n",
+       "│   │       Dimensions:      (time: 101, y: 761, x: 761, nv: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │       Dimensions without coordinates: nv\n",
+       "│   │       Data variables: (12/28)\n",
+       "│   │           acabf        (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           base         (time, y, x) float32 234MB dask.array<chunksize=(101, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgrf       (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           libmassbffl  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           lifmassbf    (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotfl  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           ...           ...\n",
+       "│   │           lithk        (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           yvelmean     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litemptop    (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotgr  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           zvelsurf     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelsurf     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           title:        ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:  Potsdam Institute for Climate Impact Research, DE\n",
+       "│   │           source:       PISM\n",
+       "│   │           references:   https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:      Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n",
+       "│   │           comment:      PIK, PISM1\n",
+       "│   ├── Group: /PIK_PISM1/exp02\n",
+       "│   │       Dimensions:      (time: 101, y: 761, x: 761, nv: 2)\n",
+       "│   │       Coordinates:\n",
+       "│   │         * time         (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n",
+       "│   │         * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │         * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│   │       Dimensions without coordinates: nv\n",
+       "│   │       Data variables: (12/28)\n",
+       "│   │           acabf        (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           hfgeoubed    (y, x) float32 2MB dask.array<chunksize=(761, 761), meta=np.ndarray>\n",
+       "│   │           licalvf      (time, y, x) float32 234MB dask.array<chunksize=(101, 761, 761), meta=np.ndarray>\n",
+       "│   │           litempbotfl  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           litemptop    (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           mapping      float64 8B ...\n",
+       "│   │           ...           ...\n",
+       "│   │           litempbotgr  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           time_bnds    (time, nv) datetime64[ns] 2kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│   │           yvelsurf     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           sftgif       (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           xvelmean     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │           dlithkdt     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│   │       Attributes:\n",
+       "│   │           Conventions:  CF-1.6\n",
+       "│   │           title:        ISMIP6 Projections Greenland model output\n",
+       "│   │           institution:  Potsdam Institute for Climate Impact Research, DE\n",
+       "│   │           source:       PISM\n",
+       "│   │           references:   https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│   │           contact:      Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n",
+       "│   │           comment:      PIK, PISM1\n",
+       "│   └── Group: /PIK_PISM1/exp03\n",
+       "│           Dimensions:      (time: 101, y: 761, x: 761, nv: 2)\n",
+       "│           Coordinates:\n",
+       "│             * time         (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n",
+       "│             * y            (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│             * x            (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n",
+       "│           Dimensions without coordinates: nv\n",
+       "│           Data variables: (12/28)\n",
+       "│               acabf        (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               yvelmean     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               dlithkdt     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               libmassbffl  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               licalvf      (time, y, x) float32 234MB dask.array<chunksize=(101, 761, 761), meta=np.ndarray>\n",
+       "│               litempbotfl  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               ...           ...\n",
+       "│               time_bnds    (time, nv) datetime64[ns] 2kB dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
+       "│               zvelbase     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               libmassbfgr  (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               yvelbase     (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               orog         (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│               strbasemag   (time, y, x) float32 234MB dask.array<chunksize=(1, 761, 761), meta=np.ndarray>\n",
+       "│           Attributes:\n",
+       "│               Conventions:  CF-1.6\n",
+       "│               title:        ISMIP6 Projections Greenland model output\n",
+       "│               institution:  Potsdam Institute for Climate Impact Research, DE\n",
+       "│               source:       PISM\n",
+       "│               references:   https://doi.org/10.5194/tc-14-3033-2020\n",
+       "│               contact:      Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n",
+       "│               comment:      PIK, PISM1\n",
+       "└── Group: /NCAR_CISM\n",
+       "    ├── Group: /NCAR_CISM/expC11\n",
+       "    │       Dimensions:              (time: 87, y: 761, x: 761, nv4: 4)\n",
+       "    │       Coordinates:\n",
+       "    │         * time                 (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n",
+       "    │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │           polar_stereographic  int32 4B ...\n",
+       "    │       Dimensions without coordinates: nv4\n",
+       "    │       Data variables: (12/29)\n",
+       "    │           zvelbase             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           base                 (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           dlithkdt             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           libmassbffl          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           licalvf              (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           lifmassbf            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           ...                   ...\n",
+       "    │           xvelmean             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           ligroundf            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           libmassbfgr          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           sftflf               (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           yvelsurf             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           yvelmean             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │       Attributes:\n",
+       "    │           Conventions:   CF-1.6\n",
+       "    │           title:         ISMIP6 Projections Greenland model output\n",
+       "    │           institution:   National Center for Atmospheric Research, USA\n",
+       "    │           source:        CISM\n",
+       "    │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "    │           contact:       Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n",
+       "    │           comment:       NCAR, CISM\n",
+       "    │           grid_mapping:  polar_stereographic\n",
+       "    ├── Group: /NCAR_CISM/expC1\n",
+       "    │       Dimensions:              (time: 87, y: 761, x: 761, nv4: 4)\n",
+       "    │       Coordinates:\n",
+       "    │         * time                 (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n",
+       "    │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │           polar_stereographic  int32 4B ...\n",
+       "    │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │       Dimensions without coordinates: nv4\n",
+       "    │       Data variables: (12/29)\n",
+       "    │           yvelbase             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           base                 (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           orog                 (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           xvelsurf             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "    │           lithk                (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           ...                   ...\n",
+       "    │           acabf                (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           dlithkdt             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           lifmassbf            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           sftgrf               (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           zvelbase             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           litemptop            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │       Attributes:\n",
+       "    │           Conventions:   CF-1.6\n",
+       "    │           title:         ISMIP6 Projections Greenland model output\n",
+       "    │           institution:   National Center for Atmospheric Research, USA\n",
+       "    │           source:        CISM\n",
+       "    │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "    │           contact:       Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n",
+       "    │           comment:       NCAR, CISM\n",
+       "    │           grid_mapping:  polar_stereographic\n",
+       "    ├── Group: /NCAR_CISM/expD15\n",
+       "    │       Dimensions:              (time: 87, y: 761, x: 761, nv4: 4)\n",
+       "    │       Coordinates:\n",
+       "    │         * time                 (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n",
+       "    │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │           polar_stereographic  int32 4B ...\n",
+       "    │       Dimensions without coordinates: nv4\n",
+       "    │       Data variables: (12/29)\n",
+       "    │           xvelmean             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           sftgrf               (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           dlithkdt             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           libmassbffl          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           licalvf              (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           litemptop            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           ...                   ...\n",
+       "    │           yvelsurf             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           litempbotgr          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           libmassbfgr          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           ligroundf            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "    │           strbasemag           (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │       Attributes:\n",
+       "    │           Conventions:   CF-1.6\n",
+       "    │           title:         ISMIP6 Projections Greenland model output\n",
+       "    │           institution:   National Center for Atmospheric Research, USA\n",
+       "    │           source:        CISM\n",
+       "    │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "    │           contact:       Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n",
+       "    │           comment:       NCAR, CISM\n",
+       "    │           grid_mapping:  polar_stereographic\n",
+       "    ...\n",
+       "    ├── Group: /NCAR_CISM/expD54\n",
+       "    │       Dimensions:              (time: 87, y: 761, x: 761, nv4: 4)\n",
+       "    │       Coordinates:\n",
+       "    │         * time                 (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n",
+       "    │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │           polar_stereographic  int32 4B ...\n",
+       "    │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │       Dimensions without coordinates: nv4\n",
+       "    │       Data variables: (12/28)\n",
+       "    │           yvelbase             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           yvelsurf             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           licalvf              (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           lithk                (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           sftgrf               (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           strbasemag           (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           ...                   ...\n",
+       "    │           sftflf               (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           xvelsurf             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           hfgeoubed            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           litempbotgr          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           base                 (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           lon_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "    │       Attributes:\n",
+       "    │           Conventions:   CF-1.6\n",
+       "    │           title:         ISMIP6 Projections Greenland model output\n",
+       "    │           institution:   National Center for Atmospheric Research, USA\n",
+       "    │           source:        CISM\n",
+       "    │           references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "    │           contact:       Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n",
+       "    │           comment:       NCAR, CISM\n",
+       "    │           grid_mapping:  polar_stereographic\n",
+       "    ├── Group: /NCAR_CISM/expC10_open\n",
+       "    │       Dimensions:              (time: 87, y: 761, x: 761, nv4: 4)\n",
+       "    │       Coordinates:\n",
+       "    │         * time                 (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n",
+       "    │         * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │         * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "    │           lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │           lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "    │           polar_stereographic  int32 4B ...\n",
+       "    │       Dimensions without coordinates: nv4\n",
+       "    │       Data variables: (12/29)\n",
+       "    │           acabf                (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           dlithkdt             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "    │           libmassbffl          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           ligroundf            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           lifmassbf            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           ...                   ...\n",
+       "    │           xvelbase             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           sftgrf               (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           base                 (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           yvelmean             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           zvelsurf             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │           litempbotfl          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "    │       Attributes:\n",
+       "    │           Conventions:   CF-1.6\n",
+       "    │           title:         ISMIP6 Projections Greenland model output\n",
+       "    │           institution:   National Center for Atmospheric Research, USA\n",
+       "    │           source:        CISM\n",
+       "    │           references:    https://doi.org/10.5194/tc-2019-324\n",
+       "    │           contact:       Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n",
+       "    │           comment:       NCAR, CISM\n",
+       "    │           grid_mapping:  polar_stereographic\n",
+       "    └── Group: /NCAR_CISM/expB1\n",
+       "            Dimensions:              (time: 87, y: 761, x: 761, nv4: 4)\n",
+       "            Coordinates:\n",
+       "              * time                 (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n",
+       "              * y                    (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "              * x                    (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n",
+       "                lat                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "                lon                  (y, x) float64 5MB dask.array<chunksize=(381, 381), meta=np.ndarray>\n",
+       "                polar_stereographic  int32 4B ...\n",
+       "            Dimensions without coordinates: nv4\n",
+       "            Data variables: (12/29)\n",
+       "                acabf                (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                zvelsurf             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                libmassbffl          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                licalvf              (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                ligroundf            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                litempbotfl          (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                ...                   ...\n",
+       "                dlithkdt             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                lifmassbf            (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                sftgif               (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                yvelbase             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "                lat_bnds             (y, x, nv4) float64 19MB dask.array<chunksize=(381, 381, 1), meta=np.ndarray>\n",
+       "                xvelbase             (time, y, x) float32 202MB dask.array<chunksize=(1, 86, 761), meta=np.ndarray>\n",
+       "            Attributes:\n",
+       "                Conventions:   CF-1.6\n",
+       "                title:         ISMIP6 Projections Greenland model output\n",
+       "                institution:   National Center for Atmospheric Research, USA\n",
+       "                source:        CISM\n",
+       "                references:    https://doi.org/10.5194/tc-14-3033-2020\n",
+       "                contact:       Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n",
+       "                comment:       NCAR, CISM\n",
+       "                grid_mapping:  polar_stereographic
" + ], + "text/plain": [ + "\n", + "Group: /\n", + "├── Group: /IMAU_IMAUICE2\n", + "│ ├── Group: /IMAU_IMAUICE2/ctrl_proj_std\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ Dimensions without coordinates: nv4, bnds\n", + "│ │ Data variables: (12/17)\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ topg (time, y, x) float32 199MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ lithk (time, y, x) float32 199MB dask.array\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ sftgrf (time, y, x) float32 199MB dask.array\n", + "│ │ time_bnds (time, bnds) datetime64[ns] 1kB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE2\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ ├── Group: /IMAU_IMAUICE2/exp06\n", + "│ │ Dimensions: (y: 761, x: 761, nv4: 4, time: 86, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ Dimensions without coordinates: nv4, bnds\n", + "│ │ Data variables: (12/17)\n", + "│ │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ │ orog (time, y, x) float32 199MB dask.array\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ xvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ sftgif (time, y, x) float32 199MB dask.array\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ sftflf (time, y, x) float32 199MB dask.array\n", + "│ │ sftgrf (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE2\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ ├── Group: /IMAU_IMAUICE2/exp13\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ Dimensions without coordinates: nv4, bnds\n", + "│ │ Data variables: (12/17)\n", + "│ │ yvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ lithk (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ sftflf (time, y, x) float32 199MB dask.array\n", + "│ │ sftgif (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ topg (time, y, x) float32 199MB dask.array\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ time_bnds (time, bnds) datetime64[ns] 1kB dask.array\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE2\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ ...\n", + "│ ├── Group: /IMAU_IMAUICE2/expA5\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, bnds: 2, nv4: 4)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ Dimensions without coordinates: bnds, nv4\n", + "│ │ Data variables: (12/17)\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ │ orog (time, y, x) float32 199MB dask.array\n", + "│ │ sftgif (time, y, x) float32 199MB dask.array\n", + "│ │ time_bnds (time, bnds) datetime64[ns] 1kB dask.array\n", + "│ │ ... ...\n", + "│ │ sftgrf (time, y, x) float32 199MB dask.array\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ sftflf (time, y, x) float32 199MB dask.array\n", + "│ │ lithk (time, y, x) float32 199MB dask.array\n", + "│ │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE2\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ ├── Group: /IMAU_IMAUICE2/hist_std\n", + "│ │ Dimensions: (time: 36, y: 761, x: 761, nv4: 4)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 288B 1980-01-01 ... 2015-01-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ Dimensions without coordinates: nv4\n", + "│ │ Data variables: (12/16)\n", + "│ │ sftflf (time, y, x) float32 83MB dask.array\n", + "│ │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ licalvf (time, y, x) float32 83MB dask.array\n", + "│ │ lithk (time, y, x) float32 83MB dask.array\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ sftgif (time, y, x) float32 83MB dask.array\n", + "│ │ ... ...\n", + "│ │ yvelmean (time, y, x) float32 83MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 83MB dask.array\n", + "│ │ base (time, y, x) float32 83MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 83MB dask.array\n", + "│ │ sftgrf (time, y, x) float32 83MB dask.array\n", + "│ │ orog (time, y, x) float32 83MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE2\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ └── Group: /IMAU_IMAUICE2/expA6\n", + "│ Dimensions: (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n", + "│ Coordinates:\n", + "│ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ polar_stereographic int32 4B ...\n", + "│ lat (y, x) float64 5MB dask.array\n", + "│ lon (y, x) float64 5MB dask.array\n", + "│ Dimensions without coordinates: nv4, bnds\n", + "│ Data variables: (12/17)\n", + "│ acabf (time, y, x) float32 199MB dask.array\n", + "│ sftflf (time, y, x) float32 199MB dask.array\n", + "│ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ licalvf (time, y, x) float32 199MB dask.array\n", + "│ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ orog (time, y, x) float32 199MB dask.array\n", + "│ ... ...\n", + "│ lithk (time, y, x) float32 199MB dask.array\n", + "│ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ sftgrf (time, y, x) float32 199MB dask.array\n", + "│ time_bnds (time, bnds) datetime64[ns] 1kB dask.array\n", + "│ sftgif (time, y, x) float32 199MB dask.array\n", + "│ Attributes:\n", + "│ Conventions: CF-1.6\n", + "│ title: ISMIP6 Projections Greenland model output\n", + "│ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ source: IMAUICE\n", + "│ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ comment: IMAU, IMAUICE2\n", + "│ grid_mapping: polar_stereographic\n", + "├── Group: /CPOM_BISICLES\n", + "│ └── Group: /CPOM_BISICLES/expTD58_08\n", + "│ Dimensions: (time: 90, x: 761, y: 761)\n", + "│ Coordinates:\n", + "│ * time (time) float64 720B 365.2 730.5 ... 3.251e+04 3.287e+04\n", + "│ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ lat (x, y) float64 5MB dask.array\n", + "│ lon (x, y) float64 5MB dask.array\n", + "│ Data variables: (12/31)\n", + "│ acabf (time, x, y) float64 417MB dask.array\n", + "│ xvelbase (time, x, y) float64 417MB dask.array\n", + "│ base (time, x, y) float64 417MB dask.array\n", + "│ iareagr (time) float64 720B dask.array\n", + "│ libmassbffl (time, x, y) float64 417MB dask.array\n", + "│ licalvf (time, x, y) float64 417MB dask.array\n", + "│ ... ...\n", + "│ zvelbase (time, x, y) float64 417MB dask.array\n", + "│ litempbotfl (time, x, y) float64 417MB dask.array\n", + "│ sftgrf (time, x, y) float64 417MB dask.array\n", + "│ tendlibmassbffl (time) float64 720B dask.array\n", + "│ libmassbfgr (time, x, y) float64 417MB dask.array\n", + "│ topg (time, x, y) float64 417MB dask.array\n", + "│ Attributes:\n", + "│ info: Model CPOM BISICLES\n", + "│ history: bisiclesISMIPVarExtractorV2.py\n", + "│ meshName: 6080x6080km_8km_Antarctic_stereo\n", + "├── Group: /ILTS_PIK_SICOPOLIS1\n", + "│ ├── Group: /ILTS_PIK_SICOPOLIS1/expA7\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ lat (y, x) float32 2MB dask.array\n", + "│ │ lon (y, x) float32 2MB dask.array\n", + "│ │ Dimensions without coordinates: bnds\n", + "│ │ Data variables: (12/29)\n", + "│ │ yvelsurf (time, y, x) float32 199MB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ crs int8 1B ...\n", + "│ │ hfgeoubed (time, y, x) float32 199MB dask.array\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ yvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ xvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ strbasemag (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbffl (time, y, x) float32 199MB dask.array\n", + "│ │ year (time) float32 344B dask.array\n", + "│ │ litempbotfl (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ title: ISMIP6 output of simulation ant08_b2_future25-06_expA7\n", + "│ │ institution: Institute of Low Temperature Science, Hokkaido University, ...\n", + "│ │ source: SICOPOLIS Version 5-dev\n", + "│ │ history: Wed Oct 2 11:09:28 2019: ncks -O -F -v time,time_bnds,year...\n", + "│ │ references: http://www.sicopolis.net/\n", + "│ │ Conventions: CF-1.6\n", + "│ │ NCO: netCDF Operators version 4.7.8 (Homepage = http://nco.sf.ne...\n", + "│ ├── Group: /ILTS_PIK_SICOPOLIS1/expD2\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ Dimensions without coordinates: bnds\n", + "│ │ Data variables: (12/29)\n", + "│ │ yvelsurf (time, y, x) float32 199MB dask.array\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ litempbotfl (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ lithk (time, y, x) float32 199MB dask.array\n", + "│ │ zvelbase (time, y, x) float32 199MB dask.array\n", + "│ │ yvelbase (time, y, x) float32 199MB dask.array\n", + "│ │ time_bnds (time, bnds) object 1kB dask.array\n", + "│ │ hfgeoubed (time, y, x) float32 199MB dask.array\n", + "│ │ orog (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ title: ISMIP6 output of simulation ant08_b2_future25-06_expD2\n", + "│ │ institution: Institute of Low Temperature Science, Hokkaido University, ...\n", + "│ │ source: SICOPOLIS Version 5.1\n", + "│ │ history: Tue Feb 4 12:05:06 2020: ncks -O -F -v time,time_bnds,year...\n", + "│ │ references: http://www.sicopolis.net/\n", + "│ │ Conventions: CF-1.6\n", + "│ │ NCO: netCDF Operators version 4.8.1 (Homepage = http://nco.sf.ne...\n", + "│ ├── Group: /ILTS_PIK_SICOPOLIS1/expD20\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ Dimensions without coordinates: bnds\n", + "│ │ Data variables: (12/29)\n", + "│ │ yvelsurf (time, y, x) float32 199MB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ hfgeoubed (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ lifmassbf (time, y, x) float32 199MB dask.array\n", + "│ │ litempbotgr (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ litemptop (time, y, x) float32 199MB dask.array\n", + "│ │ yvelbase (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbffl (time, y, x) float32 199MB dask.array\n", + "│ │ sftflf (time, y, x) float32 199MB dask.array\n", + "│ │ litempbotfl (time, y, x) float32 199MB dask.array\n", + "│ │ zvelbase (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ title: ISMIP6 output of simulation ant08_b2_future25-06_expD20\n", + "│ │ institution: Institute of Low Temperature Science, Hokkaido University, ...\n", + "│ │ source: SICOPOLIS Version 5.1\n", + "│ │ history: Tue Feb 4 12:31:18 2020: ncks -O -F -v time,time_bnds,year...\n", + "│ │ references: http://www.sicopolis.net/\n", + "│ │ Conventions: CF-1.6\n", + "│ │ NCO: netCDF Operators version 4.8.1 (Homepage = http://nco.sf.ne...\n", + "│ ...\n", + "│ ├── Group: /ILTS_PIK_SICOPOLIS1/expD53\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ lat (y, x) float32 2MB dask.array\n", + "│ │ lon (y, x) float32 2MB dask.array\n", + "│ │ Dimensions without coordinates: bnds\n", + "│ │ Data variables: (12/29)\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ year (time) float32 344B dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ lifmassbf (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ orog (time, y, x) float32 199MB dask.array\n", + "│ │ zvelsurf (time, y, x) float32 199MB dask.array\n", + "│ │ yvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbffl (time, y, x) float32 199MB dask.array\n", + "│ │ yvelsurf (time, y, x) float32 199MB dask.array\n", + "│ │ time_bnds (time, bnds) object 1kB dask.array\n", + "│ │ Attributes:\n", + "│ │ title: ISMIP6 output of simulation ant08_b2_future25-06_expD53\n", + "│ │ institution: Institute of Low Temperature Science, Hokkaido University, ...\n", + "│ │ source: SICOPOLIS Version 5-dev\n", + "│ │ history: Sun Oct 6 18:07:23 2019: ncks -O -F -v time,time_bnds,year...\n", + "│ │ references: http://www.sicopolis.net/\n", + "│ │ Conventions: CF-1.6\n", + "│ │ NCO: netCDF Operators version 4.7.8 (Homepage = http://nco.sf.ne...\n", + "│ ├── Group: /ILTS_PIK_SICOPOLIS1/expE10\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ lon (y, x) float32 2MB dask.array\n", + "│ │ lat (y, x) float32 2MB dask.array\n", + "│ │ Dimensions without coordinates: bnds\n", + "│ │ Data variables: (12/29)\n", + "│ │ zvelbase (time, y, x) float32 199MB dask.array\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ year (time) float32 344B dask.array\n", + "│ │ zvelsurf (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbffl (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ crs int8 1B ...\n", + "│ │ litempbotgr (time, y, x) float32 199MB dask.array\n", + "│ │ sftflf (time, y, x) float32 199MB dask.array\n", + "│ │ yvelsurf (time, y, x) float32 199MB dask.array\n", + "│ │ yvelbase (time, y, x) float32 199MB dask.array\n", + "│ │ xvelbase (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ title: ISMIP6 output of simulation ant08_b2_future25-06_expE10\n", + "│ │ institution: Institute of Low Temperature Science, Hokkaido University, ...\n", + "│ │ source: SICOPOLIS Version 5-dev\n", + "│ │ history: Thu Oct 3 13:33:26 2019: ncks -O -F -v time,time_bnds,year...\n", + "│ │ references: http://www.sicopolis.net/\n", + "│ │ Conventions: CF-1.6\n", + "│ │ NCO: netCDF Operators version 4.7.8 (Homepage = http://nco.sf.ne...\n", + "│ └── Group: /ILTS_PIK_SICOPOLIS1/expA5\n", + "│ Dimensions: (time: 86, y: 761, x: 761, bnds: 2)\n", + "│ Coordinates:\n", + "│ * time (time) object 688B 2015-07-01 00:00:00 ... 2100-07-01 00:00:00\n", + "│ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ lon (y, x) float32 2MB dask.array\n", + "│ lat (y, x) float32 2MB dask.array\n", + "│ Dimensions without coordinates: bnds\n", + "│ Data variables: (12/29)\n", + "│ year (time) float32 344B dask.array\n", + "│ yvelmean (time, y, x) float32 199MB dask.array\n", + "│ zvelsurf (time, y, x) float32 199MB dask.array\n", + "│ hfgeoubed (time, y, x) float32 199MB dask.array\n", + "│ licalvf (time, y, x) float32 199MB dask.array\n", + "│ litempbotfl (time, y, x) float32 199MB dask.array\n", + "│ ... ...\n", + "│ orog (time, y, x) float32 199MB dask.array\n", + "│ base (time, y, x) float32 199MB dask.array\n", + "│ litemptop (time, y, x) float32 199MB dask.array\n", + "│ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ lifmassbf (time, y, x) float32 199MB dask.array\n", + "│ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ Attributes:\n", + "│ title: ISMIP6 output of simulation ant08_b2_future25-06_expA5\n", + "│ institution: Institute of Low Temperature Science, Hokkaido University, ...\n", + "│ source: SICOPOLIS Version 5-dev\n", + "│ history: Wed Oct 2 11:06:36 2019: ncks -O -F -v time,time_bnds,year...\n", + "│ references: http://www.sicopolis.net/\n", + "│ Conventions: CF-1.6\n", + "│ NCO: netCDF Operators version 4.7.8 (Homepage = http://nco.sf.ne...\n", + "...\n", + "├── Group: /IMAU_IMAUICE1\n", + "│ ├── Group: /IMAU_IMAUICE1/ctrl_proj_std\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ Dimensions without coordinates: nv4, bnds\n", + "│ │ Data variables: (12/18)\n", + "│ │ xvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ orog (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ sftflf (time, y, x) float32 199MB dask.array\n", + "│ │ yvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ topg (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbffl (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE1\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ ├── Group: /IMAU_IMAUICE1/exp13\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ Dimensions without coordinates: nv4, bnds\n", + "│ │ Data variables: (12/17)\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ xvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ │ sftflf (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ time_bnds (time, bnds) datetime64[ns] 1kB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ yvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ sftgrf (time, y, x) float32 199MB dask.array\n", + "│ │ lithk (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE1\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ ├── Group: /IMAU_IMAUICE1/hist_std\n", + "│ │ Dimensions: (time: 36, y: 761, x: 761, two: 2, nv4: 4)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 288B 1979-07-01 ... 2014-07-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ Dimensions without coordinates: two, nv4\n", + "│ │ Data variables: (12/18)\n", + "│ │ xvelmean (time, y, x) float32 83MB dask.array\n", + "│ │ acabf (time, y, x) float32 83MB dask.array\n", + "│ │ yvelmean (time, y, x) float32 83MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 83MB dask.array\n", + "│ │ topg (time, y, x) float32 83MB dask.array\n", + "│ │ lithk (time, y, x) float32 83MB dask.array\n", + "│ │ ... ...\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ sftgif (time, y, x) float32 83MB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 83MB dask.array\n", + "│ │ sftgrf (time, y, x) float32 83MB dask.array\n", + "│ │ base (time, y, x) float32 83MB dask.array\n", + "│ │ licalvf (time, y, x) float32 83MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE1\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ ...\n", + "│ ├── Group: /IMAU_IMAUICE1/exp08\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ Dimensions without coordinates: nv4, bnds\n", + "│ │ Data variables: (12/17)\n", + "│ │ lithk (time, y, x) float32 199MB dask.array\n", + "│ │ xvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ time_bnds (time, bnds) datetime64[ns] 1kB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ topg (time, y, x) float32 199MB dask.array\n", + "│ │ yvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE1\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ ├── Group: /IMAU_IMAUICE1/exp10\n", + "│ │ Dimensions: (time: 86, y: 761, x: 761, nv4: 4, bnds: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ │ lat (y, x) float64 5MB dask.array\n", + "│ │ lon (y, x) float64 5MB dask.array\n", + "│ │ polar_stereographic int32 4B ...\n", + "│ │ Dimensions without coordinates: nv4, bnds\n", + "│ │ Data variables: (12/17)\n", + "│ │ acabf (time, y, x) float32 199MB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ │ topg (time, y, x) float32 199MB dask.array\n", + "│ │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ │ sftflf (time, y, x) float32 199MB dask.array\n", + "│ │ ... ...\n", + "│ │ orog (time, y, x) float32 199MB dask.array\n", + "│ │ sftgrf (time, y, x) float32 199MB dask.array\n", + "│ │ base (time, y, x) float32 199MB dask.array\n", + "│ │ yvelmean (time, y, x) float32 199MB dask.array\n", + "│ │ licalvf (time, y, x) float32 199MB dask.array\n", + "│ │ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ │ source: IMAUICE\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ │ comment: IMAU, IMAUICE1\n", + "│ │ grid_mapping: polar_stereographic\n", + "│ └── Group: /IMAU_IMAUICE1/exp06\n", + "│ Dimensions: (time: 86, bnds: 2, y: 761, x: 761, nv4: 4)\n", + "│ Coordinates:\n", + "│ * time (time) datetime64[ns] 688B 2015-07-01 ... 2100-07-01\n", + "│ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + "│ polar_stereographic int32 4B ...\n", + "│ lat (y, x) float64 5MB dask.array\n", + "│ lon (y, x) float64 5MB dask.array\n", + "│ Dimensions without coordinates: bnds, nv4\n", + "│ Data variables: (12/17)\n", + "│ time_bnds (time, bnds) datetime64[ns] 1kB dask.array\n", + "│ libmassbfgr (time, y, x) float32 199MB dask.array\n", + "│ dlithkdt (time, y, x) float32 199MB dask.array\n", + "│ licalvf (time, y, x) float32 199MB dask.array\n", + "│ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + "│ orog (time, y, x) float32 199MB dask.array\n", + "│ ... ...\n", + "│ sftgif (time, y, x) float32 199MB dask.array\n", + "│ xvelmean (time, y, x) float32 199MB dask.array\n", + "│ ligroundf (time, y, x) float32 199MB dask.array\n", + "│ sftflf (time, y, x) float32 199MB dask.array\n", + "│ acabf (time, y, x) float32 199MB dask.array\n", + "│ topg (time, y, x) float32 199MB dask.array\n", + "│ Attributes:\n", + "│ Conventions: CF-1.6\n", + "│ title: ISMIP6 Projections Greenland model output\n", + "│ institution: Utrecht University, Institute for Marine and Atmospheric R...\n", + "│ source: IMAUICE\n", + "│ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ contact: Name = Heiko Goelzer, Roderik van de Wal, Email = h.goelze...\n", + "│ comment: IMAU, IMAUICE1\n", + "│ grid_mapping: polar_stereographic\n", + "├── Group: /PIK_PISM1\n", + "│ ├── Group: /PIK_PISM1/exp01\n", + "│ │ Dimensions: (time: 101, y: 761, x: 761, nv: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ Dimensions without coordinates: nv\n", + "│ │ Data variables: (12/28)\n", + "│ │ acabf (time, y, x) float32 234MB dask.array\n", + "│ │ base (time, y, x) float32 234MB dask.array\n", + "│ │ hfgeoubed (y, x) float32 2MB dask.array\n", + "│ │ zvelbase (time, y, x) float32 234MB dask.array\n", + "│ │ licalvf (time, y, x) float32 234MB dask.array\n", + "│ │ litempbotfl (time, y, x) float32 234MB dask.array\n", + "│ │ ... ...\n", + "│ │ yvelbase (time, y, x) float32 234MB dask.array\n", + "│ │ libmassbffl (time, y, x) float32 234MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 234MB dask.array\n", + "│ │ sftflf (time, y, x) float32 234MB dask.array\n", + "│ │ xvelbase (time, y, x) float32 234MB dask.array\n", + "│ │ yvelsurf (time, y, x) float32 234MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Potsdam Institute for Climate Impact Research, DE\n", + "│ │ source: PISM\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n", + "│ │ comment: PIK, PISM1\n", + "│ ├── Group: /PIK_PISM1/ctrl_proj_open\n", + "│ │ Dimensions: (time: 101, y: 761, x: 761, nv: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ Dimensions without coordinates: nv\n", + "│ │ Data variables: (12/28)\n", + "│ │ acabf (time, y, x) float32 234MB dask.array\n", + "│ │ hfgeoubed (y, x) float32 2MB dask.array\n", + "│ │ licalvf (time, y, x) float32 234MB dask.array\n", + "│ │ orog (time, y, x) float32 234MB dask.array\n", + "│ │ xvelsurf (time, y, x) float32 234MB dask.array\n", + "│ │ yvelmean (time, y, x) float32 234MB dask.array\n", + "│ │ ... ...\n", + "│ │ mapping float64 8B ...\n", + "│ │ yvelsurf (time, y, x) float32 234MB dask.array\n", + "│ │ litempbotgr (time, y, x) float32 234MB dask.array\n", + "│ │ xvelbase (time, y, x) float32 234MB dask.array\n", + "│ │ zvelsurf (time, y, x) float32 234MB dask.array\n", + "│ │ sftgif (time, y, x) float32 234MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Potsdam Institute for Climate Impact Research, DE\n", + "│ │ source: PISM\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n", + "│ │ comment: PIK, PISM1\n", + "│ ├── Group: /PIK_PISM1/hist_open\n", + "│ │ Dimensions: (time: 166, y: 761, x: 761, nv: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 1kB 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ Dimensions without coordinates: nv\n", + "│ │ Data variables: (12/28)\n", + "│ │ acabf (time, y, x) float32 385MB dask.array\n", + "│ │ zvelsurf (time, y, x) float32 385MB dask.array\n", + "│ │ hfgeoubed (y, x) float32 2MB dask.array\n", + "│ │ libmassbfgr (time, y, x) float32 385MB dask.array\n", + "│ │ lifmassbf (time, y, x) float32 385MB dask.array\n", + "│ │ litempbotgr (time, y, x) float32 385MB dask.array\n", + "│ │ ... ...\n", + "│ │ dlithkdt (time, y, x) float32 385MB dask.array\n", + "│ │ litemptop (time, y, x) float32 385MB dask.array\n", + "│ │ yvelbase (time, y, x) float32 385MB dask.array\n", + "│ │ licalvf (time, y, x) float32 385MB dask.array\n", + "│ │ xvelmean (time, y, x) float32 385MB dask.array\n", + "│ │ lithk (time, y, x) float32 385MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Potsdam Institute for Climate Impact Research, DE\n", + "│ │ source: PISM\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n", + "│ │ comment: PIK, PISM1\n", + "│ ├── Group: /PIK_PISM1/exp04\n", + "│ │ Dimensions: (time: 101, y: 761, x: 761, nv: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ Dimensions without coordinates: nv\n", + "│ │ Data variables: (12/28)\n", + "│ │ acabf (time, y, x) float32 234MB dask.array\n", + "│ │ base (time, y, x) float32 234MB dask.array\n", + "│ │ sftgrf (time, y, x) float32 234MB dask.array\n", + "│ │ libmassbffl (time, y, x) float32 234MB dask.array\n", + "│ │ lifmassbf (time, y, x) float32 234MB dask.array\n", + "│ │ litempbotfl (time, y, x) float32 234MB dask.array\n", + "│ │ ... ...\n", + "│ │ lithk (time, y, x) float32 234MB dask.array\n", + "│ │ yvelmean (time, y, x) float32 234MB dask.array\n", + "│ │ litemptop (time, y, x) float32 234MB dask.array\n", + "│ │ litempbotgr (time, y, x) float32 234MB dask.array\n", + "│ │ zvelsurf (time, y, x) float32 234MB dask.array\n", + "│ │ xvelsurf (time, y, x) float32 234MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Potsdam Institute for Climate Impact Research, DE\n", + "│ │ source: PISM\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n", + "│ │ comment: PIK, PISM1\n", + "│ ├── Group: /PIK_PISM1/exp02\n", + "│ │ Dimensions: (time: 101, y: 761, x: 761, nv: 2)\n", + "│ │ Coordinates:\n", + "│ │ * time (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n", + "│ │ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ │ Dimensions without coordinates: nv\n", + "│ │ Data variables: (12/28)\n", + "│ │ acabf (time, y, x) float32 234MB dask.array\n", + "│ │ hfgeoubed (y, x) float32 2MB dask.array\n", + "│ │ licalvf (time, y, x) float32 234MB dask.array\n", + "│ │ litempbotfl (time, y, x) float32 234MB dask.array\n", + "│ │ litemptop (time, y, x) float32 234MB dask.array\n", + "│ │ mapping float64 8B ...\n", + "│ │ ... ...\n", + "│ │ litempbotgr (time, y, x) float32 234MB dask.array\n", + "│ │ time_bnds (time, nv) datetime64[ns] 2kB dask.array\n", + "│ │ yvelsurf (time, y, x) float32 234MB dask.array\n", + "│ │ sftgif (time, y, x) float32 234MB dask.array\n", + "│ │ xvelmean (time, y, x) float32 234MB dask.array\n", + "│ │ dlithkdt (time, y, x) float32 234MB dask.array\n", + "│ │ Attributes:\n", + "│ │ Conventions: CF-1.6\n", + "│ │ title: ISMIP6 Projections Greenland model output\n", + "│ │ institution: Potsdam Institute for Climate Impact Research, DE\n", + "│ │ source: PISM\n", + "│ │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ │ contact: Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n", + "│ │ comment: PIK, PISM1\n", + "│ └── Group: /PIK_PISM1/exp03\n", + "│ Dimensions: (time: 101, y: 761, x: 761, nv: 2)\n", + "│ Coordinates:\n", + "│ * time (time) object 808B 2016-01-01 00:00:00 ... 2116-01-01 00:00:00\n", + "│ * y (y) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ * x (x) float32 3kB -3.04e+06 -3.032e+06 ... 3.032e+06 3.04e+06\n", + "│ Dimensions without coordinates: nv\n", + "│ Data variables: (12/28)\n", + "│ acabf (time, y, x) float32 234MB dask.array\n", + "│ yvelmean (time, y, x) float32 234MB dask.array\n", + "│ dlithkdt (time, y, x) float32 234MB dask.array\n", + "│ libmassbffl (time, y, x) float32 234MB dask.array\n", + "│ licalvf (time, y, x) float32 234MB dask.array\n", + "│ litempbotfl (time, y, x) float32 234MB dask.array\n", + "│ ... ...\n", + "│ time_bnds (time, nv) datetime64[ns] 2kB dask.array\n", + "│ zvelbase (time, y, x) float32 234MB dask.array\n", + "│ libmassbfgr (time, y, x) float32 234MB dask.array\n", + "│ yvelbase (time, y, x) float32 234MB dask.array\n", + "│ orog (time, y, x) float32 234MB dask.array\n", + "│ strbasemag (time, y, x) float32 234MB dask.array\n", + "│ Attributes:\n", + "│ Conventions: CF-1.6\n", + "│ title: ISMIP6 Projections Greenland model output\n", + "│ institution: Potsdam Institute for Climate Impact Research, DE\n", + "│ source: PISM\n", + "│ references: https://doi.org/10.5194/tc-14-3033-2020\n", + "│ contact: Name = Ronja Reese, Torsten Albrecht, Matthias Mengel, Rica...\n", + "│ comment: PIK, PISM1\n", + "└── Group: /NCAR_CISM\n", + " ├── Group: /NCAR_CISM/expC11\n", + " │ Dimensions: (time: 87, y: 761, x: 761, nv4: 4)\n", + " │ Coordinates:\n", + " │ * time (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n", + " │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ lat (y, x) float64 5MB dask.array\n", + " │ lon (y, x) float64 5MB dask.array\n", + " │ polar_stereographic int32 4B ...\n", + " │ Dimensions without coordinates: nv4\n", + " │ Data variables: (12/29)\n", + " │ zvelbase (time, y, x) float32 202MB dask.array\n", + " │ base (time, y, x) float32 202MB dask.array\n", + " │ dlithkdt (time, y, x) float32 202MB dask.array\n", + " │ libmassbffl (time, y, x) float32 202MB dask.array\n", + " │ licalvf (time, y, x) float32 202MB dask.array\n", + " │ lifmassbf (time, y, x) float32 202MB dask.array\n", + " │ ... ...\n", + " │ xvelmean (time, y, x) float32 202MB dask.array\n", + " │ ligroundf (time, y, x) float32 202MB dask.array\n", + " │ libmassbfgr (time, y, x) float32 202MB dask.array\n", + " │ sftflf (time, y, x) float32 202MB dask.array\n", + " │ yvelsurf (time, y, x) float32 202MB dask.array\n", + " │ yvelmean (time, y, x) float32 202MB dask.array\n", + " │ Attributes:\n", + " │ Conventions: CF-1.6\n", + " │ title: ISMIP6 Projections Greenland model output\n", + " │ institution: National Center for Atmospheric Research, USA\n", + " │ source: CISM\n", + " │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + " │ contact: Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n", + " │ comment: NCAR, CISM\n", + " │ grid_mapping: polar_stereographic\n", + " ├── Group: /NCAR_CISM/expC1\n", + " │ Dimensions: (time: 87, y: 761, x: 761, nv4: 4)\n", + " │ Coordinates:\n", + " │ * time (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n", + " │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ lon (y, x) float64 5MB dask.array\n", + " │ polar_stereographic int32 4B ...\n", + " │ lat (y, x) float64 5MB dask.array\n", + " │ Dimensions without coordinates: nv4\n", + " │ Data variables: (12/29)\n", + " │ yvelbase (time, y, x) float32 202MB dask.array\n", + " │ base (time, y, x) float32 202MB dask.array\n", + " │ orog (time, y, x) float32 202MB dask.array\n", + " │ xvelsurf (time, y, x) float32 202MB dask.array\n", + " │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + " │ lithk (time, y, x) float32 202MB dask.array\n", + " │ ... ...\n", + " │ acabf (time, y, x) float32 202MB dask.array\n", + " │ dlithkdt (time, y, x) float32 202MB dask.array\n", + " │ lifmassbf (time, y, x) float32 202MB dask.array\n", + " │ sftgrf (time, y, x) float32 202MB dask.array\n", + " │ zvelbase (time, y, x) float32 202MB dask.array\n", + " │ litemptop (time, y, x) float32 202MB dask.array\n", + " │ Attributes:\n", + " │ Conventions: CF-1.6\n", + " │ title: ISMIP6 Projections Greenland model output\n", + " │ institution: National Center for Atmospheric Research, USA\n", + " │ source: CISM\n", + " │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + " │ contact: Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n", + " │ comment: NCAR, CISM\n", + " │ grid_mapping: polar_stereographic\n", + " ├── Group: /NCAR_CISM/expD15\n", + " │ Dimensions: (time: 87, y: 761, x: 761, nv4: 4)\n", + " │ Coordinates:\n", + " │ * time (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n", + " │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ lat (y, x) float64 5MB dask.array\n", + " │ lon (y, x) float64 5MB dask.array\n", + " │ polar_stereographic int32 4B ...\n", + " │ Dimensions without coordinates: nv4\n", + " │ Data variables: (12/29)\n", + " │ xvelmean (time, y, x) float32 202MB dask.array\n", + " │ sftgrf (time, y, x) float32 202MB dask.array\n", + " │ dlithkdt (time, y, x) float32 202MB dask.array\n", + " │ libmassbffl (time, y, x) float32 202MB dask.array\n", + " │ licalvf (time, y, x) float32 202MB dask.array\n", + " │ litemptop (time, y, x) float32 202MB dask.array\n", + " │ ... ...\n", + " │ yvelsurf (time, y, x) float32 202MB dask.array\n", + " │ litempbotgr (time, y, x) float32 202MB dask.array\n", + " │ libmassbfgr (time, y, x) float32 202MB dask.array\n", + " │ ligroundf (time, y, x) float32 202MB dask.array\n", + " │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + " │ strbasemag (time, y, x) float32 202MB dask.array\n", + " │ Attributes:\n", + " │ Conventions: CF-1.6\n", + " │ title: ISMIP6 Projections Greenland model output\n", + " │ institution: National Center for Atmospheric Research, USA\n", + " │ source: CISM\n", + " │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + " │ contact: Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n", + " │ comment: NCAR, CISM\n", + " │ grid_mapping: polar_stereographic\n", + " ...\n", + " ├── Group: /NCAR_CISM/expD54\n", + " │ Dimensions: (time: 87, y: 761, x: 761, nv4: 4)\n", + " │ Coordinates:\n", + " │ * time (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n", + " │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ lat (y, x) float64 5MB dask.array\n", + " │ polar_stereographic int32 4B ...\n", + " │ lon (y, x) float64 5MB dask.array\n", + " │ Dimensions without coordinates: nv4\n", + " │ Data variables: (12/28)\n", + " │ yvelbase (time, y, x) float32 202MB dask.array\n", + " │ yvelsurf (time, y, x) float32 202MB dask.array\n", + " │ licalvf (time, y, x) float32 202MB dask.array\n", + " │ lithk (time, y, x) float32 202MB dask.array\n", + " │ sftgrf (time, y, x) float32 202MB dask.array\n", + " │ strbasemag (time, y, x) float32 202MB dask.array\n", + " │ ... ...\n", + " │ sftflf (time, y, x) float32 202MB dask.array\n", + " │ xvelsurf (time, y, x) float32 202MB dask.array\n", + " │ hfgeoubed (time, y, x) float32 202MB dask.array\n", + " │ litempbotgr (time, y, x) float32 202MB dask.array\n", + " │ base (time, y, x) float32 202MB dask.array\n", + " │ lon_bnds (y, x, nv4) float64 19MB dask.array\n", + " │ Attributes:\n", + " │ Conventions: CF-1.6\n", + " │ title: ISMIP6 Projections Greenland model output\n", + " │ institution: National Center for Atmospheric Research, USA\n", + " │ source: CISM\n", + " │ references: https://doi.org/10.5194/tc-14-3033-2020\n", + " │ contact: Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n", + " │ comment: NCAR, CISM\n", + " │ grid_mapping: polar_stereographic\n", + " ├── Group: /NCAR_CISM/expC10_open\n", + " │ Dimensions: (time: 87, y: 761, x: 761, nv4: 4)\n", + " │ Coordinates:\n", + " │ * time (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n", + " │ * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " │ lat (y, x) float64 5MB dask.array\n", + " │ lon (y, x) float64 5MB dask.array\n", + " │ polar_stereographic int32 4B ...\n", + " │ Dimensions without coordinates: nv4\n", + " │ Data variables: (12/29)\n", + " │ acabf (time, y, x) float32 202MB dask.array\n", + " │ dlithkdt (time, y, x) float32 202MB dask.array\n", + " │ lat_bnds (y, x, nv4) float64 19MB dask.array\n", + " │ libmassbffl (time, y, x) float32 202MB dask.array\n", + " │ ligroundf (time, y, x) float32 202MB dask.array\n", + " │ lifmassbf (time, y, x) float32 202MB dask.array\n", + " │ ... ...\n", + " │ xvelbase (time, y, x) float32 202MB dask.array\n", + " │ sftgrf (time, y, x) float32 202MB dask.array\n", + " │ base (time, y, x) float32 202MB dask.array\n", + " │ yvelmean (time, y, x) float32 202MB dask.array\n", + " │ zvelsurf (time, y, x) float32 202MB dask.array\n", + " │ litempbotfl (time, y, x) float32 202MB dask.array\n", + " │ Attributes:\n", + " │ Conventions: CF-1.6\n", + " │ title: ISMIP6 Projections Greenland model output\n", + " │ institution: National Center for Atmospheric Research, USA\n", + " │ source: CISM\n", + " │ references: https://doi.org/10.5194/tc-2019-324\n", + " │ contact: Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n", + " │ comment: NCAR, CISM\n", + " │ grid_mapping: polar_stereographic\n", + " └── Group: /NCAR_CISM/expB1\n", + " Dimensions: (time: 87, y: 761, x: 761, nv4: 4)\n", + " Coordinates:\n", + " * time (time) datetime64[ns] 696B 2014-12-27 ... 2100-12-06\n", + " * y (y) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " * x (x) float64 6kB -3.04e+06 -3.032e+06 ... 3.04e+06\n", + " lat (y, x) float64 5MB dask.array\n", + " lon (y, x) float64 5MB dask.array\n", + " polar_stereographic int32 4B ...\n", + " Dimensions without coordinates: nv4\n", + " Data variables: (12/29)\n", + " acabf (time, y, x) float32 202MB dask.array\n", + " zvelsurf (time, y, x) float32 202MB dask.array\n", + " libmassbffl (time, y, x) float32 202MB dask.array\n", + " licalvf (time, y, x) float32 202MB dask.array\n", + " ligroundf (time, y, x) float32 202MB dask.array\n", + " litempbotfl (time, y, x) float32 202MB dask.array\n", + " ... ...\n", + " dlithkdt (time, y, x) float32 202MB dask.array\n", + " lifmassbf (time, y, x) float32 202MB dask.array\n", + " sftgif (time, y, x) float32 202MB dask.array\n", + " yvelbase (time, y, x) float32 202MB dask.array\n", + " lat_bnds (y, x, nv4) float64 19MB dask.array\n", + " xvelbase (time, y, x) float32 202MB dask.array\n", + " Attributes:\n", + " Conventions: CF-1.6\n", + " title: ISMIP6 Projections Greenland model output\n", + " institution: National Center for Atmospheric Research, USA\n", + " source: CISM\n", + " references: https://doi.org/10.5194/tc-14-3033-2020\n", + " contact: Name = William Lipscomb, Gunter Leguy, Email = lipscomb@uc...\n", + " comment: NCAR, CISM\n", + " grid_mapping: polar_stereographic" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dt" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "b9fc8ce3-f2ce-4ed7-94fd-2c111b827772", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# base_array = dt['base'].base\n", + "# base_array" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b3f5c2a4-7e02-4643-be8c-422ac341fde5", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(np.float64(-1125.118165164284), np.float64(1415.013436026001))" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vmin, vmax = base_array.quantile([0.01, 0.99]).values\n", + "vmin, vmax" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "4a19f32f-d068-4d11-9077-c4825413e7ee", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5834b6150ec444de96800280fc1750bf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "BokehModel(combine_events=True, render_bundle={'docs_json': {'fe7255a7-a760-40c3-b756-9a2bf0b8e621': {'version…" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "base_array.hvplot.image(\n", + " x='x', \n", + " y='y', \n", + " clim=(vmin, vmax), \n", + " cmap='RdBu',\n", + " groupby='time',\n", + " widget_location='bottom',\n", + " aspect='equal',\n", + " title=(\" \").join(base_array.attrs['standard_name'].split(\"_\"))\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a49cf51d-5c40-4574-93e4-904202024c14", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "environment": { + "kernel": "conda-env-python313-py", + "name": "workbench-notebooks.m136", + "type": "gcloud", + "uri": "us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-notebooks:m136" + }, + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml index 2076da7..2dd1e80 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ name = "ismip6-helper" version = "0.1.0" description = "Helper utilities for loading ISMIP6 outputs" readme = "README.md" -requires-python = ">=3.13" +requires-python = ">=3.12" authors = [ { name = "Thomas Teisberg" }, ] @@ -17,7 +17,7 @@ classifiers = [ "Intended Audience :: Science/Research", "Topic :: Scientific/Engineering :: Atmospheric Science", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.12", ] dependencies = [ @@ -45,8 +45,9 @@ dependencies = [ "scipy>=1.16.2", "virtualizarr>=2.2.1", "xarray>=2025.10.1", - "lithops>=3.6.2", + "lithops[gcp]>=3.6.2", "kerchunk>=0.2.9", + "google-cloud>=0.34.0", ] [project.optional-dependencies] @@ -56,5 +57,6 @@ dev = [ "ruff>=0.1.0", ] + [tool.hatch.build.targets.wheel] packages = ["ismip6_helper", "ismip6_comparison_app"] diff --git a/requirements-lithops.txt b/requirements-lithops.txt new file mode 100644 index 0000000..56a0949 --- /dev/null +++ b/requirements-lithops.txt @@ -0,0 +1,28 @@ +# Lithops runtime requirements - only PyPI packages +# Lithops core dependencies (required by Lithops itself) +pika==1.3.2 +tblib==3.2.2 +ps-mem==3.14 +cloudpickle==3.1.2 +requests==2.32.5 + +# Core dependencies for virtualization +# icechunk==1.1.13 +# icechunk==1.1.14 # latest +# icechunk==1.1.10 # +# leave out icechunk, for now we are just virtualizing in lithops +virtualizarr==2.2.1 +xarray==2025.10.1 +zarr==3.1.5 +obstore==0.8.2 +kerchunk==0.2.9 +scipy==1.16.2 + +# Dependencies for ismip6_helper functions +pyproj==3.7.2 +numpy==2.3.4 +h5netcdf==1.7.3 +netcdf4==1.7.3 +cftime==1.6.5 +fsspec==2025.9.0 +gcsfs==2025.9.0 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 74e748c..5e6443d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,32 +1,225 @@ -# Mandatory Lithops packages -google-cloud -google-cloud-storage -google-cloud-pubsub -google-auth -google-api-python-client -numpy -six -requests -redis -pika -scikit-learn -diskcache -cloudpickle -ps-mem -tblib -PyYAML -urllib3 -psutil - -# other packages -lithops -icechunk -obstore -xarray -virtualizarr -zarr -numpy -pandas -h5netcdf -gcsfs -pyproj +aiohappyeyeballs==2.6.1 +aiohttp==3.13.1 +aiosignal==1.4.0 +anyio==4.11.0 +appnope==0.1.4 ; sys_platform == 'darwin' +argon2-cffi==25.1.0 +argon2-cffi-bindings==25.1.0 +arrow==1.4.0 +asttokens==3.0.0 +async-lru==2.0.5 +attrs==25.4.0 +babel==2.17.0 +backoff==2.2.1 +bcrypt==5.0.0 +beautifulsoup4==4.14.2 +bleach==6.3.0 +bokeh==3.8.0 +boto3==1.42.3 +botocore==1.42.3 +cachetools==6.2.1 +certifi==2025.10.5 +cffi==2.0.0 +cftime==1.6.5 +charset-normalizer==3.4.4 +click==8.3.0 +cloudpickle==3.1.2 +coiled==1.129.3 +colorama==0.4.6 ; sys_platform == 'win32' +colorcet==3.1.0 +comm==0.2.3 +contourpy==1.3.3 +cryptography==46.0.3 +cycler==0.12.1 +dask==2025.11.0 +debugpy==1.8.17 +decorator==5.2.1 +defusedxml==0.7.1 +deprecated==1.3.1 +distributed==2025.11.0 +donfig==0.8.1.post1 +executing==2.2.1 +fabric==3.2.2 +fastjsonschema==2.21.2 +filelock==3.20.0 +fonttools==4.60.1 +fqdn==1.5.1 +frozenlist==1.8.0 +fsspec==2025.9.0 +gcsfs==2025.9.0 +gilknocker==0.4.2 +google-api-core==2.27.0 +google-api-python-client==2.187.0 +google-auth==2.41.1 +google-auth-httplib2==0.3.0 +google-auth-oauthlib==1.2.2 +google-cloud==0.34.0 +google-cloud-core==2.4.3 +google-cloud-pubsub==2.34.0 +google-cloud-storage==3.4.1 +google-crc32c==1.7.1 +google-resumable-media==2.7.2 +googleapis-common-protos==1.71.0 +grpc-google-iam-v1==0.14.3 +grpcio==1.76.0 +grpcio-status==1.76.0 +h11==0.16.0 +h2==4.3.0 +h5netcdf==1.7.3 +h5py==3.15.1 +holoviews==1.21.0 +hpack==4.1.0 +httpcore==1.0.9 +httplib2==0.31.0 +httpx==0.28.1 +hvplot==0.12.1 +hyperframe==6.1.0 +icechunk==1.1.13 +idna==3.11 +importlib-metadata==8.7.0 +invoke==2.2.1 +ipykernel==7.1.0 +ipython==9.6.0 +ipython-pygments-lexers==1.1.1 +ipywidgets==8.1.7 +isoduration==20.11.0 +jedi==0.19.2 +jinja2==3.1.6 +jmespath==1.0.1 +json5==0.12.1 +jsondiff==2.2.1 +jsonpointer==3.0.0 +jsonschema==4.25.1 +jsonschema-specifications==2025.9.1 +jupyter==1.1.1 +jupyter-bokeh==4.0.5 +jupyter-client==8.6.3 +jupyter-console==6.6.3 +jupyter-core==5.9.1 +jupyter-events==0.12.0 +jupyter-lsp==2.3.0 +jupyter-server==2.17.0 +jupyter-server-terminals==0.5.3 +jupyterlab==4.4.10 +jupyterlab-pygments==0.3.0 +jupyterlab-server==2.28.0 +jupyterlab-widgets==3.0.15 +kerchunk==0.2.9 +kiwisolver==1.4.9 +lark==1.3.1 +linkify-it-py==2.0.3 +lithops==3.6.2 +locket==1.0.0 +markdown==3.9 +markdown-it-py==4.0.0 +markupsafe==3.0.3 +matplotlib==3.10.7 +matplotlib-inline==0.2.1 +mdit-py-plugins==0.5.0 +mdurl==0.1.2 +mistune==3.1.4 +msgpack==1.1.2 +multidict==6.7.0 +narwhals==2.10.0 +nbclient==0.10.2 +nbconvert==7.16.6 +nbformat==5.10.4 +nest-asyncio==1.6.0 +netcdf4==1.7.3 +notebook==7.4.7 +notebook-shim==0.2.4 +numcodecs==0.16.5 +numpy==2.3.4 +oauthlib==3.3.1 +obstore==0.8.2 +opentelemetry-api==1.39.1 +opentelemetry-sdk==1.39.1 +opentelemetry-semantic-conventions==0.60b1 +packaging==25.0 +pandas==2.3.3 +pandocfilters==1.5.1 +panel==1.8.2 +param==2.2.1 +paramiko==4.0.0 +parso==0.8.5 +partd==1.4.2 +pathlib-abc==0.5.2 +pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32' +pika==1.3.2 +pillow==12.0.0 +pip==25.3 +pip-requirements-parser==32.0.1 +platformdirs==4.5.0 +prometheus-client==0.23.1 +prompt-toolkit==3.0.52 +propcache==0.4.1 +proto-plus==1.26.1 +protobuf==6.33.0 +ps-mem==3.14 +psutil==7.1.2 +ptyprocess==0.7.0 ; os_name != 'nt' or (sys_platform != 'emscripten' and sys_platform != 'win32') +pure-eval==0.2.3 +pyarrow==22.0.0 +pyasn1==0.6.1 +pyasn1-modules==0.4.2 +pycparser==2.23 ; implementation_name != 'PyPy' +pygments==2.19.2 +pynacl==1.6.1 +pyparsing==3.2.5 +pyproj==3.7.2 +python-dateutil==2.9.0.post0 +python-json-logger==4.0.0 +pytz==2025.2 +pyviz-comms==3.0.6 +pywinpty==3.0.2 ; os_name == 'nt' +pyyaml==6.0.3 +pyzmq==27.1.0 +referencing==0.37.0 +requests==2.32.5 +requests-oauthlib==2.0.0 +rfc3339-validator==0.1.4 +rfc3986-validator==0.1.1 +rfc3987-syntax==1.1.0 +rich==14.2.0 +rpds-py==0.28.0 +rsa==4.9.1 +s3transfer==0.16.0 +scipy==1.16.2 +send2trash==1.8.3 +setuptools==80.9.0 +six==1.17.0 +sniffio==1.3.1 +sortedcontainers==2.4.0 +soupsieve==2.8 +stack-data==0.6.3 +tabulate==0.9.0 +tblib==3.2.2 +terminado==0.18.1 +tinycss2==1.4.0 +toml==0.10.2 +toolz==1.1.0 +tornado==6.5.2 +tqdm==4.67.1 +traitlets==5.14.3 +typing-extensions==4.15.0 +tzdata==2025.2 +uc-micro-py==1.0.3 +ujson==5.11.0 +universal-pathlib==0.3.7 +uri-template==1.3.0 +uritemplate==4.2.0 +urllib3==2.5.0 +virtualizarr==2.2.1 +wcwidth==0.2.14 +webcolors==24.11.1 +webencodings==0.5.1 +websocket-client==1.9.0 +wheel==0.45.1 +widgetsnbextension==4.0.14 +wrapt==2.0.1 +xarray==2025.10.1 +xyzservices==2025.4.0 +yarl==1.22.0 +zarr==3.1.5 +zict==3.0.0 +zipp==3.23.0 diff --git a/uv.lock b/uv.lock index 7f49286..6c363d2 100644 --- a/uv.lock +++ b/uv.lock @@ -1,9 +1,10 @@ version = 1 revision = 2 -requires-python = ">=3.13" +requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.14'", - "python_full_version < '3.14'", + "python_full_version == '3.13.*'", + "python_full_version < '3.13'", ] [[package]] @@ -30,6 +31,23 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/ba/fa/3ae643cd525cf6844d3dc810481e5748107368eb49563c15a5fb9f680750/aiohttp-3.13.1.tar.gz", hash = "sha256:4b7ee9c355015813a6aa085170b96ec22315dabc3d866fd77d147927000e9464", size = 7835344, upload-time = "2025-10-17T14:03:29.337Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/72/d463a10bf29871f6e3f63bcf3c91362dc4d72ed5917a8271f96672c415ad/aiohttp-3.13.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0760bd9a28efe188d77b7c3fe666e6ef74320d0f5b105f2e931c7a7e884c8230", size = 736218, upload-time = "2025-10-17T14:00:03.51Z" }, + { url = "https://files.pythonhosted.org/packages/26/13/f7bccedbe52ea5a6eef1e4ebb686a8d7765319dfd0a5939f4238cb6e79e6/aiohttp-3.13.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7129a424b441c3fe018a414401bf1b9e1d49492445f5676a3aecf4f74f67fcdb", size = 491251, upload-time = "2025-10-17T14:00:05.756Z" }, + { url = "https://files.pythonhosted.org/packages/0c/7c/7ea51b5aed6cc69c873f62548da8345032aa3416336f2d26869d4d37b4a2/aiohttp-3.13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e1cb04ae64a594f6ddf5cbb024aba6b4773895ab6ecbc579d60414f8115e9e26", size = 490394, upload-time = "2025-10-17T14:00:07.504Z" }, + { url = "https://files.pythonhosted.org/packages/31/05/1172cc4af4557f6522efdee6eb2b9f900e1e320a97e25dffd3c5a6af651b/aiohttp-3.13.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:782d656a641e755decd6bd98d61d2a8ea062fd45fd3ff8d4173605dd0d2b56a1", size = 1737455, upload-time = "2025-10-17T14:00:09.403Z" }, + { url = "https://files.pythonhosted.org/packages/24/3d/ce6e4eca42f797d6b1cd3053cf3b0a22032eef3e4d1e71b9e93c92a3f201/aiohttp-3.13.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f92ad8169767429a6d2237331726c03ccc5f245222f9373aa045510976af2b35", size = 1699176, upload-time = "2025-10-17T14:00:11.314Z" }, + { url = "https://files.pythonhosted.org/packages/25/04/7127ba55653e04da51477372566b16ae786ef854e06222a1c96b4ba6c8ef/aiohttp-3.13.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0e778f634ca50ec005eefa2253856921c429581422d887be050f2c1c92e5ce12", size = 1767216, upload-time = "2025-10-17T14:00:13.668Z" }, + { url = "https://files.pythonhosted.org/packages/b8/3b/43bca1e75847e600f40df829a6b2f0f4e1d4c70fb6c4818fdc09a462afd5/aiohttp-3.13.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9bc36b41cf4aab5d3b34d22934a696ab83516603d1bc1f3e4ff9930fe7d245e5", size = 1865870, upload-time = "2025-10-17T14:00:15.852Z" }, + { url = "https://files.pythonhosted.org/packages/9e/69/b204e5d43384197a614c88c1717c324319f5b4e7d0a1b5118da583028d40/aiohttp-3.13.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3fd4570ea696aee27204dd524f287127ed0966d14d309dc8cc440f474e3e7dbd", size = 1751021, upload-time = "2025-10-17T14:00:18.297Z" }, + { url = "https://files.pythonhosted.org/packages/1c/af/845dc6b6fdf378791d720364bf5150f80d22c990f7e3a42331d93b337cc7/aiohttp-3.13.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7bda795f08b8a620836ebfb0926f7973972a4bf8c74fdf9145e489f88c416811", size = 1561448, upload-time = "2025-10-17T14:00:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/7a/91/d2ab08cd77ed76a49e4106b1cfb60bce2768242dd0c4f9ec0cb01e2cbf94/aiohttp-3.13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:055a51d90e351aae53dcf324d0eafb2abe5b576d3ea1ec03827d920cf81a1c15", size = 1698196, upload-time = "2025-10-17T14:00:22.131Z" }, + { url = "https://files.pythonhosted.org/packages/5e/d1/082f0620dc428ecb8f21c08a191a4694915cd50f14791c74a24d9161cc50/aiohttp-3.13.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d4131df864cbcc09bb16d3612a682af0db52f10736e71312574d90f16406a867", size = 1719252, upload-time = "2025-10-17T14:00:24.453Z" }, + { url = "https://files.pythonhosted.org/packages/fc/78/2af2f44491be7b08e43945b72d2b4fd76f0a14ba850ba9e41d28a7ce716a/aiohttp-3.13.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:163d3226e043f79bf47c87f8dfc89c496cc7bc9128cb7055ce026e435d551720", size = 1736529, upload-time = "2025-10-17T14:00:26.567Z" }, + { url = "https://files.pythonhosted.org/packages/b0/34/3e919ecdc93edaea8d140138049a0d9126141072e519535e2efa38eb7a02/aiohttp-3.13.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:a2370986a3b75c1a5f3d6f6d763fc6be4b430226577b0ed16a7c13a75bf43d8f", size = 1553723, upload-time = "2025-10-17T14:00:28.592Z" }, + { url = "https://files.pythonhosted.org/packages/21/4b/d8003aeda2f67f359b37e70a5a4b53fee336d8e89511ac307ff62aeefcdb/aiohttp-3.13.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d7c14de0c7c9f1e6e785ce6cbe0ed817282c2af0012e674f45b4e58c6d4ea030", size = 1763394, upload-time = "2025-10-17T14:00:31.051Z" }, + { url = "https://files.pythonhosted.org/packages/4c/7b/1dbe6a39e33af9baaafc3fc016a280663684af47ba9f0e5d44249c1f72ec/aiohttp-3.13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb611489cf0db10b99beeb7280bd39e0ef72bc3eb6d8c0f0a16d8a56075d1eb7", size = 1718104, upload-time = "2025-10-17T14:00:33.407Z" }, + { url = "https://files.pythonhosted.org/packages/5c/88/bd1b38687257cce67681b9b0fa0b16437be03383fa1be4d1a45b168bef25/aiohttp-3.13.1-cp312-cp312-win32.whl", hash = "sha256:f90fe0ee75590f7428f7c8b5479389d985d83c949ea10f662ab928a5ed5cf5e6", size = 425303, upload-time = "2025-10-17T14:00:35.829Z" }, + { url = "https://files.pythonhosted.org/packages/0e/e3/4481f50dd6f27e9e58c19a60cff44029641640237e35d32b04aaee8cf95f/aiohttp-3.13.1-cp312-cp312-win_amd64.whl", hash = "sha256:3461919a9dca272c183055f2aab8e6af0adc810a1b386cce28da11eb00c859d9", size = 452071, upload-time = "2025-10-17T14:00:37.764Z" }, { url = "https://files.pythonhosted.org/packages/16/6d/d267b132342e1080f4c1bb7e1b4e96b168b3cbce931ec45780bff693ff95/aiohttp-3.13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:55785a7f8f13df0c9ca30b5243d9909bd59f48b274262a8fe78cee0828306e5d", size = 730727, upload-time = "2025-10-17T14:00:39.681Z" }, { url = "https://files.pythonhosted.org/packages/92/c8/1cf495bac85cf71b80fad5f6d7693e84894f11b9fe876b64b0a1e7cbf32f/aiohttp-3.13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4bef5b83296cebb8167707b4f8d06c1805db0af632f7a72d7c5288a84667e7c3", size = 488678, upload-time = "2025-10-17T14:00:41.541Z" }, { url = "https://files.pythonhosted.org/packages/a8/19/23c6b81cca587ec96943d977a58d11d05a82837022e65cd5502d665a7d11/aiohttp-3.13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:27af0619c33f9ca52f06069ec05de1a357033449ab101836f431768ecfa63ff5", size = 487637, upload-time = "2025-10-17T14:00:43.527Z" }, @@ -89,6 +107,7 @@ version = "1.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "frozenlist" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" } wheels = [ @@ -102,6 +121,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "idna" }, { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c6/78/7d432127c41b50bccba979505f272c16cbcadcc33645d5fa3a738110ae75/anyio-4.11.0.tar.gz", hash = "sha256:82a8d0b81e318cc5ce71a5f1f8b5c4e63619620b63141ef8c995fa0db95a57c4", size = 219094, upload-time = "2025-09-23T09:19:12.58Z" } wheels = [ @@ -390,6 +410,18 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, @@ -435,6 +467,12 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/65/dc/470ffebac2eb8c54151eb893055024fe81b1606e7c6ff8449a588e9cd17f/cftime-1.6.5.tar.gz", hash = "sha256:8225fed6b9b43fb87683ebab52130450fc1730011150d3092096a90e54d1e81e", size = 326605, upload-time = "2025-10-13T18:56:26.352Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/c1/e8cb7f78a3f87295450e7300ebaecf83076d96a99a76190593d4e1d2be40/cftime-1.6.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:eef25caed5ebd003a38719bd3ff8847cd52ef2ea56c3ebdb2c9345ba131fc7c5", size = 504175, upload-time = "2025-10-13T18:56:06.398Z" }, + { url = "https://files.pythonhosted.org/packages/50/1a/86e1072b09b2f9049bb7378869f64b6747f96a4f3008142afed8955b52a4/cftime-1.6.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c87d2f3b949e45463e559233c69e6a9cf691b2b378c1f7556166adfabbd1c6b0", size = 485980, upload-time = "2025-10-13T18:56:08.669Z" }, + { url = "https://files.pythonhosted.org/packages/35/28/d3177b60da3f308b60dee2aef2eb69997acfab1e863f0bf0d2a418396ce5/cftime-1.6.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:82cb413973cc51b55642b3a1ca5b28db5b93a294edbef7dc049c074b478b4647", size = 1591166, upload-time = "2025-10-13T19:39:14.109Z" }, + { url = "https://files.pythonhosted.org/packages/d1/fd/a7266970312df65e68b5641b86e0540a739182f5e9c62eec6dbd29f18055/cftime-1.6.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:85ba8e7356d239cfe56ef7707ac30feaf67964642ac760a82e507ee3c5db4ac4", size = 1642614, upload-time = "2025-10-13T18:56:09.815Z" }, + { url = "https://files.pythonhosted.org/packages/c4/73/f0035a4bc2df8885bb7bd5fe63659686ea1ec7d0cc74b4e3d50e447402e5/cftime-1.6.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:456039af7907a3146689bb80bfd8edabd074c7f3b4eca61f91b9c2670addd7ad", size = 1688090, upload-time = "2025-10-13T18:56:11.442Z" }, + { url = "https://files.pythonhosted.org/packages/88/15/8856a0ab76708553ff597dd2e617b088c734ba87dc3fd395e2b2f3efffe8/cftime-1.6.5-cp312-cp312-win_amd64.whl", hash = "sha256:da84534c43699960dc980a9a765c33433c5de1a719a4916748c2d0e97a071e44", size = 464840, upload-time = "2025-10-13T18:56:12.506Z" }, { url = "https://files.pythonhosted.org/packages/2e/60/74ea344b3b003fada346ed98a6899085d6fd4c777df608992d90c458fda6/cftime-1.6.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4aba66fd6497711a47c656f3a732c2d1755ad15f80e323c44a8716ebde39ddd5", size = 502453, upload-time = "2025-10-13T18:56:13.545Z" }, { url = "https://files.pythonhosted.org/packages/1e/14/adb293ac6127079b49ff11c05cf3d5ce5c1f17d097f326dc02d74ddfcb6e/cftime-1.6.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:89e7cba699242366e67d6fb5aee579440e791063f92a93853610c91647167c0d", size = 484541, upload-time = "2025-10-13T18:56:14.612Z" }, { url = "https://files.pythonhosted.org/packages/4f/74/bb8a4566af8d0ef3f045d56c462a9115da4f04b07c7fbbf2b4875223eebd/cftime-1.6.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2f1eb43d7a7b919ec99aee709fb62ef87ef1cf0679829ef93d37cc1c725781e9", size = 1591014, upload-time = "2025-10-13T19:39:15.346Z" }, @@ -455,6 +493,22 @@ version = "3.4.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, + { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, + { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, + { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, + { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, + { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, + { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, + { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, + { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, + { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, + { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, + { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, + { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, + { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, + { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" }, { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" }, { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" }, @@ -582,6 +636,17 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb", size = 293419, upload-time = "2025-07-26T12:01:21.16Z" }, + { url = "https://files.pythonhosted.org/packages/53/3e/405b59cfa13021a56bba395a6b3aca8cec012b45bf177b0eaf7a202cde2c/contourpy-1.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:556dba8fb6f5d8742f2923fe9457dbdd51e1049c4a43fd3986a0b14a1d815fc6", size = 273979, upload-time = "2025-07-26T12:01:22.448Z" }, + { url = "https://files.pythonhosted.org/packages/d4/1c/a12359b9b2ca3a845e8f7f9ac08bdf776114eb931392fcad91743e2ea17b/contourpy-1.3.3-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92d9abc807cf7d0e047b95ca5d957cf4792fcd04e920ca70d48add15c1a90ea7", size = 332653, upload-time = "2025-07-26T12:01:24.155Z" }, + { url = "https://files.pythonhosted.org/packages/63/12/897aeebfb475b7748ea67b61e045accdfcf0d971f8a588b67108ed7f5512/contourpy-1.3.3-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2e8faa0ed68cb29af51edd8e24798bb661eac3bd9f65420c1887b6ca89987c8", size = 379536, upload-time = "2025-07-26T12:01:25.91Z" }, + { url = "https://files.pythonhosted.org/packages/43/8a/a8c584b82deb248930ce069e71576fc09bd7174bbd35183b7943fb1064fd/contourpy-1.3.3-cp312-cp312-manylinux_2_26_s390x.manylinux_2_28_s390x.whl", hash = "sha256:626d60935cf668e70a5ce6ff184fd713e9683fb458898e4249b63be9e28286ea", size = 384397, upload-time = "2025-07-26T12:01:27.152Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1", size = 362601, upload-time = "2025-07-26T12:01:28.808Z" }, + { url = "https://files.pythonhosted.org/packages/05/0a/a3fe3be3ee2dceb3e615ebb4df97ae6f3828aa915d3e10549ce016302bd1/contourpy-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:451e71b5a7d597379ef572de31eeb909a87246974d960049a9848c3bc6c41bf7", size = 1331288, upload-time = "2025-07-26T12:01:31.198Z" }, + { url = "https://files.pythonhosted.org/packages/33/1d/acad9bd4e97f13f3e2b18a3977fe1b4a37ecf3d38d815333980c6c72e963/contourpy-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:459c1f020cd59fcfe6650180678a9993932d80d44ccde1fa1868977438f0b411", size = 1403386, upload-time = "2025-07-26T12:01:33.947Z" }, + { url = "https://files.pythonhosted.org/packages/cf/8f/5847f44a7fddf859704217a99a23a4f6417b10e5ab1256a179264561540e/contourpy-1.3.3-cp312-cp312-win32.whl", hash = "sha256:023b44101dfe49d7d53932be418477dba359649246075c996866106da069af69", size = 185018, upload-time = "2025-07-26T12:01:35.64Z" }, + { url = "https://files.pythonhosted.org/packages/19/e8/6026ed58a64563186a9ee3f29f41261fd1828f527dd93d33b60feca63352/contourpy-1.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:8153b8bfc11e1e4d75bcb0bff1db232f9e10b274e0929de9d608027e0d34ff8b", size = 226567, upload-time = "2025-07-26T12:01:36.804Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e2/f05240d2c39a1ed228d8328a78b6f44cd695f7ef47beb3e684cf93604f86/contourpy-1.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:07ce5ed73ecdc4a03ffe3e1b3e3c1166db35ae7584be76f65dbbe28a7791b0cc", size = 193655, upload-time = "2025-07-26T12:01:37.999Z" }, { url = "https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:177fb367556747a686509d6fef71d221a4b198a3905fe824430e5ea0fda54eb5", size = 293257, upload-time = "2025-07-26T12:01:39.367Z" }, { url = "https://files.pythonhosted.org/packages/96/e4/7adcd9c8362745b2210728f209bfbcf7d91ba868a2c5f40d8b58f54c509b/contourpy-1.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d002b6f00d73d69333dac9d0b8d5e84d9724ff9ef044fd63c5986e62b7c9e1b1", size = 274034, upload-time = "2025-07-26T12:01:40.645Z" }, { url = "https://files.pythonhosted.org/packages/73/23/90e31ceeed1de63058a02cb04b12f2de4b40e3bef5e082a7c18d9c8ae281/contourpy-1.3.3-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:348ac1f5d4f1d66d3322420f01d42e43122f43616e0f194fc1c9f5d830c5b286", size = 334672, upload-time = "2025-07-26T12:01:41.942Z" }, @@ -634,6 +699,19 @@ version = "7.11.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d2/59/9698d57a3b11704c7b89b21d69e9d23ecf80d538cabb536c8b63f4a12322/coverage-7.11.3.tar.gz", hash = "sha256:0f59387f5e6edbbffec2281affb71cdc85e0776c1745150a3ab9b6c1d016106b", size = 815210, upload-time = "2025-11-10T00:13:17.18Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/39/af056ec7a27c487e25c7f6b6e51d2ee9821dba1863173ddf4dc2eebef4f7/coverage-7.11.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5b771b59ac0dfb7f139f70c85b42717ef400a6790abb6475ebac1ecee8de782f", size = 216676, upload-time = "2025-11-10T00:11:11.566Z" }, + { url = "https://files.pythonhosted.org/packages/3c/f8/21126d34b174d037b5d01bea39077725cbb9a0da94a95c5f96929c695433/coverage-7.11.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:603c4414125fc9ae9000f17912dcfd3d3eb677d4e360b85206539240c96ea76e", size = 217034, upload-time = "2025-11-10T00:11:13.12Z" }, + { url = "https://files.pythonhosted.org/packages/d5/3f/0fd35f35658cdd11f7686303214bd5908225838f374db47f9e457c8d6df8/coverage-7.11.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:77ffb3b7704eb7b9b3298a01fe4509cef70117a52d50bcba29cffc5f53dd326a", size = 248531, upload-time = "2025-11-10T00:11:15.023Z" }, + { url = "https://files.pythonhosted.org/packages/8f/59/0bfc5900fc15ce4fd186e092451de776bef244565c840c9c026fd50857e1/coverage-7.11.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4d4ca49f5ba432b0755ebb0fc3a56be944a19a16bb33802264bbc7311622c0d1", size = 251290, upload-time = "2025-11-10T00:11:16.628Z" }, + { url = "https://files.pythonhosted.org/packages/71/88/d5c184001fa2ac82edf1b8f2cd91894d2230d7c309e937c54c796176e35b/coverage-7.11.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:05fd3fb6edff0c98874d752013588836f458261e5eba587afe4c547bba544afd", size = 252375, upload-time = "2025-11-10T00:11:18.249Z" }, + { url = "https://files.pythonhosted.org/packages/5c/29/f60af9f823bf62c7a00ce1ac88441b9a9a467e499493e5cc65028c8b8dd2/coverage-7.11.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0e920567f8c3a3ce68ae5a42cf7c2dc4bb6cc389f18bff2235dd8c03fa405de5", size = 248946, upload-time = "2025-11-10T00:11:20.202Z" }, + { url = "https://files.pythonhosted.org/packages/67/16/4662790f3b1e03fce5280cad93fd18711c35980beb3c6f28dca41b5230c6/coverage-7.11.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4bec8c7160688bd5a34e65c82984b25409563134d63285d8943d0599efbc448e", size = 250310, upload-time = "2025-11-10T00:11:21.689Z" }, + { url = "https://files.pythonhosted.org/packages/8f/75/dd6c2e28308a83e5fc1ee602f8204bd3aa5af685c104cb54499230cf56db/coverage-7.11.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:adb9b7b42c802bd8cb3927de8c1c26368ce50c8fdaa83a9d8551384d77537044", size = 248461, upload-time = "2025-11-10T00:11:23.384Z" }, + { url = "https://files.pythonhosted.org/packages/16/fe/b71af12be9f59dc9eb060688fa19a95bf3223f56c5af1e9861dfa2275d2c/coverage-7.11.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:c8f563b245b4ddb591e99f28e3cd140b85f114b38b7f95b2e42542f0603eb7d7", size = 248039, upload-time = "2025-11-10T00:11:25.07Z" }, + { url = "https://files.pythonhosted.org/packages/11/b8/023b2003a2cd96bdf607afe03d9b96c763cab6d76e024abe4473707c4eb8/coverage-7.11.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e2a96fdc7643c9517a317553aca13b5cae9bad9a5f32f4654ce247ae4d321405", size = 249903, upload-time = "2025-11-10T00:11:26.992Z" }, + { url = "https://files.pythonhosted.org/packages/d6/ee/5f1076311aa67b1fa4687a724cc044346380e90ce7d94fec09fd384aa5fd/coverage-7.11.3-cp312-cp312-win32.whl", hash = "sha256:e8feeb5e8705835f0622af0fe7ff8d5cb388948454647086494d6c41ec142c2e", size = 219201, upload-time = "2025-11-10T00:11:28.619Z" }, + { url = "https://files.pythonhosted.org/packages/4f/24/d21688f48fe9fcc778956680fd5aaf69f4e23b245b7c7a4755cbd421d25b/coverage-7.11.3-cp312-cp312-win_amd64.whl", hash = "sha256:abb903ffe46bd319d99979cdba350ae7016759bb69f47882242f7b93f3356055", size = 220012, upload-time = "2025-11-10T00:11:30.234Z" }, + { url = "https://files.pythonhosted.org/packages/4f/9e/d5eb508065f291456378aa9b16698b8417d87cb084c2b597f3beb00a8084/coverage-7.11.3-cp312-cp312-win_arm64.whl", hash = "sha256:1451464fd855d9bd000c19b71bb7dafea9ab815741fb0bd9e813d9b671462d6f", size = 218652, upload-time = "2025-11-10T00:11:32.165Z" }, { url = "https://files.pythonhosted.org/packages/6d/f6/d8572c058211c7d976f24dab71999a565501fb5b3cdcb59cf782f19c4acb/coverage-7.11.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84b892e968164b7a0498ddc5746cdf4e985700b902128421bb5cec1080a6ee36", size = 216694, upload-time = "2025-11-10T00:11:34.296Z" }, { url = "https://files.pythonhosted.org/packages/4a/f6/b6f9764d90c0ce1bce8d995649fa307fff21f4727b8d950fa2843b7b0de5/coverage-7.11.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f761dbcf45e9416ec4698e1a7649248005f0064ce3523a47402d1bff4af2779e", size = 217065, upload-time = "2025-11-10T00:11:36.281Z" }, { url = "https://files.pythonhosted.org/packages/a5/8d/a12cb424063019fd077b5be474258a0ed8369b92b6d0058e673f0a945982/coverage-7.11.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1410bac9e98afd9623f53876fae7d8a5db9f5a0ac1c9e7c5188463cb4b3212e2", size = 248062, upload-time = "2025-11-10T00:11:37.903Z" }, @@ -778,6 +856,10 @@ version = "1.8.17" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/15/ad/71e708ff4ca377c4230530d6a7aa7992592648c122a2cd2b321cf8b35a76/debugpy-1.8.17.tar.gz", hash = "sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e", size = 1644129, upload-time = "2025-09-17T16:33:20.633Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/08/2b/9d8e65beb2751876c82e1aceb32f328c43ec872711fa80257c7674f45650/debugpy-1.8.17-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:f14467edef672195c6f6b8e27ce5005313cb5d03c9239059bc7182b60c176e2d", size = 2549522, upload-time = "2025-09-17T16:33:38.466Z" }, + { url = "https://files.pythonhosted.org/packages/b4/78/eb0d77f02971c05fca0eb7465b18058ba84bd957062f5eec82f941ac792a/debugpy-1.8.17-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:24693179ef9dfa20dca8605905a42b392be56d410c333af82f1c5dff807a64cc", size = 4309417, upload-time = "2025-09-17T16:33:41.299Z" }, + { url = "https://files.pythonhosted.org/packages/37/42/c40f1d8cc1fed1e75ea54298a382395b8b937d923fcf41ab0797a554f555/debugpy-1.8.17-cp312-cp312-win32.whl", hash = "sha256:6a4e9dacf2cbb60d2514ff7b04b4534b0139facbf2abdffe0639ddb6088e59cf", size = 5277130, upload-time = "2025-09-17T16:33:43.554Z" }, + { url = "https://files.pythonhosted.org/packages/72/22/84263b205baad32b81b36eac076de0cdbe09fe2d0637f5b32243dc7c925b/debugpy-1.8.17-cp312-cp312-win_amd64.whl", hash = "sha256:e8f8f61c518952fb15f74a302e068b48d9c4691768ade433e4adeea961993464", size = 5319053, upload-time = "2025-09-17T16:33:53.033Z" }, { url = "https://files.pythonhosted.org/packages/50/76/597e5cb97d026274ba297af8d89138dfd9e695767ba0e0895edb20963f40/debugpy-1.8.17-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464", size = 2538386, upload-time = "2025-09-17T16:33:54.594Z" }, { url = "https://files.pythonhosted.org/packages/5f/60/ce5c34fcdfec493701f9d1532dba95b21b2f6394147234dce21160bd923f/debugpy-1.8.17-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088", size = 4292100, upload-time = "2025-09-17T16:33:56.353Z" }, { url = "https://files.pythonhosted.org/packages/e8/95/7873cf2146577ef71d2a20bf553f12df865922a6f87b9e8ee1df04f01785/debugpy-1.8.17-cp313-cp313-win32.whl", hash = "sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83", size = 5277002, upload-time = "2025-09-17T16:33:58.231Z" }, @@ -905,6 +987,14 @@ version = "4.60.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/4b/42/97a13e47a1e51a5a7142475bbcf5107fe3a68fc34aef331c897d5fb98ad0/fonttools-4.60.1.tar.gz", hash = "sha256:ef00af0439ebfee806b25f24c8f92109157ff3fac5731dc7867957812e87b8d9", size = 3559823, upload-time = "2025-09-29T21:13:27.129Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/f7/a10b101b7a6f8836a5adb47f2791f2075d044a6ca123f35985c42edc82d8/fonttools-4.60.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7b0c6d57ab00dae9529f3faf187f2254ea0aa1e04215cf2f1a8ec277c96661bc", size = 2832953, upload-time = "2025-09-29T21:11:39.616Z" }, + { url = "https://files.pythonhosted.org/packages/ed/fe/7bd094b59c926acf2304d2151354ddbeb74b94812f3dc943c231db09cb41/fonttools-4.60.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:839565cbf14645952d933853e8ade66a463684ed6ed6c9345d0faf1f0e868877", size = 2352706, upload-time = "2025-09-29T21:11:41.826Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ca/4bb48a26ed95a1e7eba175535fe5805887682140ee0a0d10a88e1de84208/fonttools-4.60.1-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:8177ec9676ea6e1793c8a084a90b65a9f778771998eb919d05db6d4b1c0b114c", size = 4923716, upload-time = "2025-09-29T21:11:43.893Z" }, + { url = "https://files.pythonhosted.org/packages/b8/9f/2cb82999f686c1d1ddf06f6ae1a9117a880adbec113611cc9d22b2fdd465/fonttools-4.60.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:996a4d1834524adbb423385d5a629b868ef9d774670856c63c9a0408a3063401", size = 4968175, upload-time = "2025-09-29T21:11:46.439Z" }, + { url = "https://files.pythonhosted.org/packages/18/79/be569699e37d166b78e6218f2cde8c550204f2505038cdd83b42edc469b9/fonttools-4.60.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a46b2f450bc79e06ef3b6394f0c68660529ed51692606ad7f953fc2e448bc903", size = 4911031, upload-time = "2025-09-29T21:11:48.977Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9f/89411cc116effaec5260ad519162f64f9c150e5522a27cbb05eb62d0c05b/fonttools-4.60.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6ec722ee589e89a89f5b7574f5c45604030aa6ae24cb2c751e2707193b466fed", size = 5062966, upload-time = "2025-09-29T21:11:54.344Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/f888221934b5731d46cb9991c7a71f30cb1f97c0ef5fcf37f8da8fce6c8e/fonttools-4.60.1-cp312-cp312-win32.whl", hash = "sha256:b2cf105cee600d2de04ca3cfa1f74f1127f8455b71dbad02b9da6ec266e116d6", size = 2218750, upload-time = "2025-09-29T21:11:56.601Z" }, + { url = "https://files.pythonhosted.org/packages/88/8f/a55b5550cd33cd1028601df41acd057d4be20efa5c958f417b0c0613924d/fonttools-4.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:992775c9fbe2cf794786fa0ffca7f09f564ba3499b8fe9f2f80bd7197db60383", size = 2267026, upload-time = "2025-09-29T21:11:58.852Z" }, { url = "https://files.pythonhosted.org/packages/7c/5b/cdd2c612277b7ac7ec8c0c9bc41812c43dc7b2d5f2b0897e15fdf5a1f915/fonttools-4.60.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6f68576bb4bbf6060c7ab047b1574a1ebe5c50a17de62830079967b211059ebb", size = 2825777, upload-time = "2025-09-29T21:12:01.22Z" }, { url = "https://files.pythonhosted.org/packages/d6/8a/de9cc0540f542963ba5e8f3a1f6ad48fa211badc3177783b9d5cadf79b5d/fonttools-4.60.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eedacb5c5d22b7097482fa834bda0dafa3d914a4e829ec83cdea2a01f8c813c4", size = 2348080, upload-time = "2025-09-29T21:12:03.785Z" }, { url = "https://files.pythonhosted.org/packages/2d/8b/371ab3cec97ee3fe1126b3406b7abd60c8fec8975fd79a3c75cdea0c3d83/fonttools-4.60.1-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b33a7884fabd72bdf5f910d0cf46be50dce86a0362a65cfc746a4168c67eb96c", size = 4903082, upload-time = "2025-09-29T21:12:06.382Z" }, @@ -947,6 +1037,22 @@ version = "1.8.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2d/f5/c831fac6cc817d26fd54c7eaccd04ef7e0288806943f7cc5bbf69f3ac1f0/frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad", size = 45875, upload-time = "2025-10-06T05:38:17.865Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/69/29/948b9aa87e75820a38650af445d2ef2b6b8a6fab1a23b6bb9e4ef0be2d59/frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1", size = 87782, upload-time = "2025-10-06T05:36:06.649Z" }, + { url = "https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b", size = 50594, upload-time = "2025-10-06T05:36:07.69Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/5c8a2b50a496b11dd519f4a24cb5496cf125681dd99e94c604ccdea9419a/frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4", size = 50448, upload-time = "2025-10-06T05:36:08.78Z" }, + { url = "https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383", size = 242411, upload-time = "2025-10-06T05:36:09.801Z" }, + { url = "https://files.pythonhosted.org/packages/8f/83/f61505a05109ef3293dfb1ff594d13d64a2324ac3482be2cedc2be818256/frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4", size = 243014, upload-time = "2025-10-06T05:36:11.394Z" }, + { url = "https://files.pythonhosted.org/packages/d8/cb/cb6c7b0f7d4023ddda30cf56b8b17494eb3a79e3fda666bf735f63118b35/frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8", size = 234909, upload-time = "2025-10-06T05:36:12.598Z" }, + { url = "https://files.pythonhosted.org/packages/31/c5/cd7a1f3b8b34af009fb17d4123c5a778b44ae2804e3ad6b86204255f9ec5/frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b", size = 250049, upload-time = "2025-10-06T05:36:14.065Z" }, + { url = "https://files.pythonhosted.org/packages/c0/01/2f95d3b416c584a1e7f0e1d6d31998c4a795f7544069ee2e0962a4b60740/frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52", size = 256485, upload-time = "2025-10-06T05:36:15.39Z" }, + { url = "https://files.pythonhosted.org/packages/ce/03/024bf7720b3abaebcff6d0793d73c154237b85bdf67b7ed55e5e9596dc9a/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29", size = 237619, upload-time = "2025-10-06T05:36:16.558Z" }, + { url = "https://files.pythonhosted.org/packages/69/fa/f8abdfe7d76b731f5d8bd217827cf6764d4f1d9763407e42717b4bed50a0/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3", size = 250320, upload-time = "2025-10-06T05:36:17.821Z" }, + { url = "https://files.pythonhosted.org/packages/f5/3c/b051329f718b463b22613e269ad72138cc256c540f78a6de89452803a47d/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143", size = 246820, upload-time = "2025-10-06T05:36:19.046Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ae/58282e8f98e444b3f4dd42448ff36fa38bef29e40d40f330b22e7108f565/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608", size = 250518, upload-time = "2025-10-06T05:36:20.763Z" }, + { url = "https://files.pythonhosted.org/packages/8f/96/007e5944694d66123183845a106547a15944fbbb7154788cbf7272789536/frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa", size = 239096, upload-time = "2025-10-06T05:36:22.129Z" }, + { url = "https://files.pythonhosted.org/packages/66/bb/852b9d6db2fa40be96f29c0d1205c306288f0684df8fd26ca1951d461a56/frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf", size = 39985, upload-time = "2025-10-06T05:36:23.661Z" }, + { url = "https://files.pythonhosted.org/packages/b8/af/38e51a553dd66eb064cdf193841f16f077585d4d28394c2fa6235cb41765/frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746", size = 44591, upload-time = "2025-10-06T05:36:24.958Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/1dc65480ab147339fecc70797e9c2f69d9cea9cf38934ce08df070fdb9cb/frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd", size = 40102, upload-time = "2025-10-06T05:36:26.333Z" }, { url = "https://files.pythonhosted.org/packages/2d/40/0832c31a37d60f60ed79e9dfb5a92e1e2af4f40a16a29abcc7992af9edff/frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a", size = 85717, upload-time = "2025-10-06T05:36:27.341Z" }, { url = "https://files.pythonhosted.org/packages/30/ba/b0b3de23f40bc55a7057bd38434e25c34fa48e17f20ee273bbde5e0650f3/frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7", size = 49651, upload-time = "2025-10-06T05:36:28.855Z" }, { url = "https://files.pythonhosted.org/packages/0c/ab/6e5080ee374f875296c4243c381bbdef97a9ac39c6e3ce1d5f7d42cb78d6/frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40", size = 49417, upload-time = "2025-10-06T05:36:29.877Z" }, @@ -1046,6 +1152,13 @@ name = "gilknocker" version = "0.4.2" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/f4/8f28772ba07dbeeeaa8625349ef7a41aa876dd41b57cf702df6f66b35ff1/gilknocker-0.4.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0b2425e1855378ace1465e1a2fe29360f3e6f8531c27c0d932eaab20645cf67c", size = 488196, upload-time = "2025-10-18T07:26:28.25Z" }, + { url = "https://files.pythonhosted.org/packages/8b/56/930539640dbc3d1eb262717c908062106708aaa10c1294f27dc9166c8d27/gilknocker-0.4.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d44fe19302b06a915f4cbb3e31c3780703ca06a44abed10f3224e5b7511f7052", size = 286881, upload-time = "2025-10-18T07:26:29.445Z" }, + { url = "https://files.pythonhosted.org/packages/95/c5/05d4a8a61195c30f4a57e915d6a4df8336f1aa5058dc1915e1a73ce754e5/gilknocker-0.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea5765e4285645e22fc4b5ca9d55445df2d2084b23b80d78706e79850df384f8", size = 297082, upload-time = "2025-10-18T07:26:30.44Z" }, + { url = "https://files.pythonhosted.org/packages/df/f5/bef415471e83322103e25c72af184130b41e314fd99bac589f3f5f3effc6/gilknocker-0.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa11f3e65f1da0db86089ba6fd5573193289d359bce355f7617704815f32a5e5", size = 308551, upload-time = "2025-10-18T07:26:31.591Z" }, + { url = "https://files.pythonhosted.org/packages/df/07/56b383cb3546a3a9e04012accedd015f0752f772a10eb2314de94cc1ba37/gilknocker-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d775472f9ad05e05c8b1af38de3095510214d82ff7d1590cd54d24111a7d240c", size = 269989, upload-time = "2025-10-18T07:26:32.474Z" }, + { url = "https://files.pythonhosted.org/packages/bd/8d/d641c7d6c5fba22869ce28e80b94b622d7a4650bf3d0bc75d418b614273a/gilknocker-0.4.2-cp312-cp312-win32.whl", hash = "sha256:9fdef14cd618370d8026cb72e344369ffae83650cc65c402940400842ac74853", size = 146396, upload-time = "2025-10-18T07:26:33.671Z" }, + { url = "https://files.pythonhosted.org/packages/bf/60/3bfd01b4aa03a5f30e19f8e79c6d2762cbc285d200981c69d17d75a04199/gilknocker-0.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:50f4c5c5c0087cd72fa874574e8df1ddc0dbbca2a166e95418efbd2aaa6ba470", size = 157039, upload-time = "2025-10-18T07:26:34.53Z" }, { url = "https://files.pythonhosted.org/packages/66/14/ae607709ddc328f9325da59105668def6e525a42e79ef6471b1e055d0946/gilknocker-0.4.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:a17d2e708b2ca3e40b0ceb91a8c04b01b3c252211d05e13e617c2b1c1655d30c", size = 488199, upload-time = "2025-10-18T07:26:35.332Z" }, { url = "https://files.pythonhosted.org/packages/da/0d/9d7c6249a6310e31abebe32d9939159ace679cb3be2a04563d4996427513/gilknocker-0.4.2-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e9c738ad978b17888df69d431f02b9cfb14f26acecbefa727ebe26adfd2481fd", size = 286884, upload-time = "2025-10-18T07:26:36.369Z" }, { url = "https://files.pythonhosted.org/packages/a9/bc/5e92674573cbc93f85ac972ef0c6fe54349429b2a7408824ab9f4460ae58/gilknocker-0.4.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b2f1540518b1cbdb8b45c4841a2345c903025305cee83a45d93c8f52ad19434b", size = 278075, upload-time = "2025-10-18T07:26:37.262Z" }, @@ -1076,6 +1189,28 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/77/93/ecf9f7caa99c71e969091e9a78789f11b2dea5c684917eab7c54a8d13560/google_api_core-2.27.0-py3-none-any.whl", hash = "sha256:779a380db4e21a4ee3d717cf8efbf324e53900bf37e1ffb273e5348a9916dd42", size = 167110, upload-time = "2025-10-22T23:54:12.805Z" }, ] +[package.optional-dependencies] +grpc = [ + { name = "grpcio" }, + { name = "grpcio-status" }, +] + +[[package]] +name = "google-api-python-client" +version = "2.187.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core" }, + { name = "google-auth" }, + { name = "google-auth-httplib2" }, + { name = "httplib2" }, + { name = "uritemplate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/83/60cdacf139d768dd7f0fcbe8d95b418299810068093fdf8228c6af89bb70/google_api_python_client-2.187.0.tar.gz", hash = "sha256:e98e8e8f49e1b5048c2f8276473d6485febc76c9c47892a8b4d1afa2c9ec8278", size = 14068154, upload-time = "2025-11-06T01:48:53.274Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/58/c1e716be1b055b504d80db2c8413f6c6a890a6ae218a65f178b63bc30356/google_api_python_client-2.187.0-py3-none-any.whl", hash = "sha256:d8d0f6d85d7d1d10bdab32e642312ed572bdc98919f72f831b44b9a9cebba32f", size = 14641434, upload-time = "2025-11-06T01:48:50.763Z" }, +] + [[package]] name = "google-auth" version = "2.41.1" @@ -1090,6 +1225,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/be/a4/7319a2a8add4cc352be9e3efeff5e2aacee917c85ca2fa1647e29089983c/google_auth-2.41.1-py2.py3-none-any.whl", hash = "sha256:754843be95575b9a19c604a848a41be03f7f2afd8c019f716dc1f51ee41c639d", size = 221302, upload-time = "2025-09-30T22:51:24.212Z" }, ] +[[package]] +name = "google-auth-httplib2" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "httplib2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d5/ad/c1f2b1175096a8d04cf202ad5ea6065f108d26be6fc7215876bde4a7981d/google_auth_httplib2-0.3.0.tar.gz", hash = "sha256:177898a0175252480d5ed916aeea183c2df87c1f9c26705d74ae6b951c268b0b", size = 11134, upload-time = "2025-12-15T22:13:51.825Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/d5/3c97526c8796d3caf5f4b3bed2b05e8a7102326f00a334e7a438237f3b22/google_auth_httplib2-0.3.0-py3-none-any.whl", hash = "sha256:426167e5df066e3f5a0fc7ea18768c08e7296046594ce4c8c409c2457dd1f776", size = 9529, upload-time = "2025-12-15T22:13:51.048Z" }, +] + [[package]] name = "google-auth-oauthlib" version = "1.2.2" @@ -1103,6 +1251,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ac/84/40ee070be95771acd2f4418981edb834979424565c3eec3cd88b6aa09d24/google_auth_oauthlib-1.2.2-py3-none-any.whl", hash = "sha256:fd619506f4b3908b5df17b65f39ca8d66ea56986e5472eb5978fd8f3786f00a2", size = 19072, upload-time = "2025-04-22T16:40:28.174Z" }, ] +[[package]] +name = "google-cloud" +version = "0.34.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/0e/8bf108fa9e3e036fe37a86598f1315e7b8de90b89012fd65704dc30ac6ad/google-cloud-0.34.0.tar.gz", hash = "sha256:01430187cf56df10a9ba775dd547393185d4b40741db0ea5889301f8e7a9d5d3", size = 2514, upload-time = "2018-07-30T19:08:17.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/b1/7c54d1950e7808df06642274e677dbcedba57f75307adf2e5ad8d39e5e0e/google_cloud-0.34.0-py2.py3-none-any.whl", hash = "sha256:fb1ab7b0548fe44b3d538041f0a374505b7f990d448a935ea36649c5ccab5acf", size = 1839, upload-time = "2018-07-30T19:08:16.739Z" }, +] + [[package]] name = "google-cloud-core" version = "2.4.3" @@ -1116,6 +1273,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/40/86/bda7241a8da2d28a754aad2ba0f6776e35b67e37c36ae0c45d49370f1014/google_cloud_core-2.4.3-py2.py3-none-any.whl", hash = "sha256:5130f9f4c14b4fafdff75c79448f9495cfade0d8775facf1b09c3bf67e027f6e", size = 29348, upload-time = "2025-03-10T21:05:37.785Z" }, ] +[[package]] +name = "google-cloud-pubsub" +version = "2.34.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-api-core", extra = ["grpc"] }, + { name = "google-auth" }, + { name = "grpc-google-iam-v1" }, + { name = "grpcio" }, + { name = "grpcio-status" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-sdk" }, + { name = "proto-plus" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/b0/7073a2d17074f0d4a53038c6141115db19f310a2f96bd3911690f15bd701/google_cloud_pubsub-2.34.0.tar.gz", hash = "sha256:25f98c3ba16a69871f9ebbad7aece3fe63c8afe7ba392aad2094be730d545976", size = 396526, upload-time = "2025-12-16T22:44:22.319Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/d3/9c06e5ccd3e5b0f4b3bc6d223cb21556e597571797851e9f8cc38b7e2c0b/google_cloud_pubsub-2.34.0-py3-none-any.whl", hash = "sha256:aa11b2471c6d509058b42a103ed1b3643f01048311a34fd38501a16663267206", size = 320110, upload-time = "2025-12-16T22:44:20.349Z" }, +] + [[package]] name = "google-cloud-storage" version = "3.4.1" @@ -1139,6 +1316,11 @@ version = "1.7.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/19/ae/87802e6d9f9d69adfaedfcfd599266bf386a54d0be058b532d04c794f76d/google_crc32c-1.7.1.tar.gz", hash = "sha256:2bff2305f98846f3e825dbeec9ee406f89da7962accdb29356e4eadc251bd472", size = 14495, upload-time = "2025-03-26T14:29:13.32Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/b7/787e2453cf8639c94b3d06c9d61f512234a82e1d12d13d18584bd3049904/google_crc32c-1.7.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2d73a68a653c57281401871dd4aeebbb6af3191dcac751a76ce430df4d403194", size = 30470, upload-time = "2025-03-26T14:34:31.655Z" }, + { url = "https://files.pythonhosted.org/packages/ed/b4/6042c2b0cbac3ec3a69bb4c49b28d2f517b7a0f4a0232603c42c58e22b44/google_crc32c-1.7.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:22beacf83baaf59f9d3ab2bbb4db0fb018da8e5aebdce07ef9f09fce8220285e", size = 30315, upload-time = "2025-03-26T15:01:54.634Z" }, + { url = "https://files.pythonhosted.org/packages/29/ad/01e7a61a5d059bc57b702d9ff6a18b2585ad97f720bd0a0dbe215df1ab0e/google_crc32c-1.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19eafa0e4af11b0a4eb3974483d55d2d77ad1911e6cf6f832e1574f6781fd337", size = 33180, upload-time = "2025-03-26T14:41:32.168Z" }, + { url = "https://files.pythonhosted.org/packages/3b/a5/7279055cf004561894ed3a7bfdf5bf90a53f28fadd01af7cd166e88ddf16/google_crc32c-1.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d86616faaea68101195c6bdc40c494e4d76f41e07a37ffdef270879c15fb65", size = 32794, upload-time = "2025-03-26T14:41:33.264Z" }, + { url = "https://files.pythonhosted.org/packages/0f/d6/77060dbd140c624e42ae3ece3df53b9d811000729a5c821b9fd671ceaac6/google_crc32c-1.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:b7491bdc0c7564fcf48c0179d2048ab2f7c7ba36b84ccd3a3e1c3f7a72d3bba6", size = 33477, upload-time = "2025-03-26T14:29:10.94Z" }, { url = "https://files.pythonhosted.org/packages/8b/72/b8d785e9184ba6297a8620c8a37cf6e39b81a8ca01bb0796d7cbb28b3386/google_crc32c-1.7.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:df8b38bdaf1629d62d51be8bdd04888f37c451564c2042d36e5812da9eff3c35", size = 30467, upload-time = "2025-03-26T14:36:06.909Z" }, { url = "https://files.pythonhosted.org/packages/34/25/5f18076968212067c4e8ea95bf3b69669f9fc698476e5f5eb97d5b37999f/google_crc32c-1.7.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:e42e20a83a29aa2709a0cf271c7f8aefaa23b7ab52e53b322585297bb94d4638", size = 30309, upload-time = "2025-03-26T15:06:15.318Z" }, { url = "https://files.pythonhosted.org/packages/92/83/9228fe65bf70e93e419f38bdf6c5ca5083fc6d32886ee79b450ceefd1dbd/google_crc32c-1.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:905a385140bf492ac300026717af339790921f411c0dfd9aa5a9e69a08ed32eb", size = 33133, upload-time = "2025-03-26T14:41:34.388Z" }, @@ -1172,6 +1354,80 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/25/e8/eba9fece11d57a71e3e22ea672742c8f3cf23b35730c9e96db768b295216/googleapis_common_protos-1.71.0-py3-none-any.whl", hash = "sha256:59034a1d849dc4d18971997a72ac56246570afdd17f9369a0ff68218d50ab78c", size = 294576, upload-time = "2025-10-20T14:56:21.295Z" }, ] +[package.optional-dependencies] +grpc = [ + { name = "grpcio" }, +] + +[[package]] +name = "grpc-google-iam-v1" +version = "0.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos", extra = ["grpc"] }, + { name = "grpcio" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/1e/1011451679a983f2f5c6771a1682542ecb027776762ad031fd0d7129164b/grpc_google_iam_v1-0.14.3.tar.gz", hash = "sha256:879ac4ef33136c5491a6300e27575a9ec760f6cdf9a2518798c1b8977a5dc389", size = 23745, upload-time = "2025-10-15T21:14:53.318Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/bd/330a1bbdb1afe0b96311249e699b6dc9cfc17916394fd4503ac5aca2514b/grpc_google_iam_v1-0.14.3-py3-none-any.whl", hash = "sha256:7a7f697e017a067206a3dfef44e4c634a34d3dee135fe7d7a4613fe3e59217e6", size = 32690, upload-time = "2025-10-15T21:14:51.72Z" }, +] + +[[package]] +name = "grpcio" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b6/e0/318c1ce3ae5a17894d5791e87aea147587c9e702f24122cc7a5c8bbaeeb1/grpcio-1.76.0.tar.gz", hash = "sha256:7be78388d6da1a25c0d5ec506523db58b18be22d9c37d8d3a32c08be4987bd73", size = 12785182, upload-time = "2025-10-21T16:23:12.106Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/05/8e29121994b8d959ffa0afd28996d452f291b48cfc0875619de0bde2c50c/grpcio-1.76.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:81fd9652b37b36f16138611c7e884eb82e0cec137c40d3ef7c3f9b3ed00f6ed8", size = 5799718, upload-time = "2025-10-21T16:21:17.939Z" }, + { url = "https://files.pythonhosted.org/packages/d9/75/11d0e66b3cdf998c996489581bdad8900db79ebd83513e45c19548f1cba4/grpcio-1.76.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:04bbe1bfe3a68bbfd4e52402ab7d4eb59d72d02647ae2042204326cf4bbad280", size = 11825627, upload-time = "2025-10-21T16:21:20.466Z" }, + { url = "https://files.pythonhosted.org/packages/28/50/2f0aa0498bc188048f5d9504dcc5c2c24f2eb1a9337cd0fa09a61a2e75f0/grpcio-1.76.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d388087771c837cdb6515539f43b9d4bf0b0f23593a24054ac16f7a960be16f4", size = 6359167, upload-time = "2025-10-21T16:21:23.122Z" }, + { url = "https://files.pythonhosted.org/packages/66/e5/bbf0bb97d29ede1d59d6588af40018cfc345b17ce979b7b45424628dc8bb/grpcio-1.76.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:9f8f757bebaaea112c00dba718fc0d3260052ce714e25804a03f93f5d1c6cc11", size = 7044267, upload-time = "2025-10-21T16:21:25.995Z" }, + { url = "https://files.pythonhosted.org/packages/f5/86/f6ec2164f743d9609691115ae8ece098c76b894ebe4f7c94a655c6b03e98/grpcio-1.76.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:980a846182ce88c4f2f7e2c22c56aefd515daeb36149d1c897f83cf57999e0b6", size = 6573963, upload-time = "2025-10-21T16:21:28.631Z" }, + { url = "https://files.pythonhosted.org/packages/60/bc/8d9d0d8505feccfdf38a766d262c71e73639c165b311c9457208b56d92ae/grpcio-1.76.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f92f88e6c033db65a5ae3d97905c8fea9c725b63e28d5a75cb73b49bda5024d8", size = 7164484, upload-time = "2025-10-21T16:21:30.837Z" }, + { url = "https://files.pythonhosted.org/packages/67/e6/5d6c2fc10b95edf6df9b8f19cf10a34263b7fd48493936fffd5085521292/grpcio-1.76.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4baf3cbe2f0be3289eb68ac8ae771156971848bb8aaff60bad42005539431980", size = 8127777, upload-time = "2025-10-21T16:21:33.577Z" }, + { url = "https://files.pythonhosted.org/packages/3f/c8/dce8ff21c86abe025efe304d9e31fdb0deaaa3b502b6a78141080f206da0/grpcio-1.76.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:615ba64c208aaceb5ec83bfdce7728b80bfeb8be97562944836a7a0a9647d882", size = 7594014, upload-time = "2025-10-21T16:21:41.882Z" }, + { url = "https://files.pythonhosted.org/packages/e0/42/ad28191ebf983a5d0ecef90bab66baa5a6b18f2bfdef9d0a63b1973d9f75/grpcio-1.76.0-cp312-cp312-win32.whl", hash = "sha256:45d59a649a82df5718fd9527ce775fd66d1af35e6d31abdcdc906a49c6822958", size = 3984750, upload-time = "2025-10-21T16:21:44.006Z" }, + { url = "https://files.pythonhosted.org/packages/9e/00/7bd478cbb851c04a48baccaa49b75abaa8e4122f7d86da797500cccdd771/grpcio-1.76.0-cp312-cp312-win_amd64.whl", hash = "sha256:c088e7a90b6017307f423efbb9d1ba97a22aa2170876223f9709e9d1de0b5347", size = 4704003, upload-time = "2025-10-21T16:21:46.244Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ed/71467ab770effc9e8cef5f2e7388beb2be26ed642d567697bb103a790c72/grpcio-1.76.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:26ef06c73eb53267c2b319f43e6634c7556ea37672029241a056629af27c10e2", size = 5807716, upload-time = "2025-10-21T16:21:48.475Z" }, + { url = "https://files.pythonhosted.org/packages/2c/85/c6ed56f9817fab03fa8a111ca91469941fb514e3e3ce6d793cb8f1e1347b/grpcio-1.76.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:45e0111e73f43f735d70786557dc38141185072d7ff8dc1829d6a77ac1471468", size = 11821522, upload-time = "2025-10-21T16:21:51.142Z" }, + { url = "https://files.pythonhosted.org/packages/ac/31/2b8a235ab40c39cbc141ef647f8a6eb7b0028f023015a4842933bc0d6831/grpcio-1.76.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:83d57312a58dcfe2a3a0f9d1389b299438909a02db60e2f2ea2ae2d8034909d3", size = 6362558, upload-time = "2025-10-21T16:21:54.213Z" }, + { url = "https://files.pythonhosted.org/packages/bd/64/9784eab483358e08847498ee56faf8ff6ea8e0a4592568d9f68edc97e9e9/grpcio-1.76.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3e2a27c89eb9ac3d81ec8835e12414d73536c6e620355d65102503064a4ed6eb", size = 7049990, upload-time = "2025-10-21T16:21:56.476Z" }, + { url = "https://files.pythonhosted.org/packages/2b/94/8c12319a6369434e7a184b987e8e9f3b49a114c489b8315f029e24de4837/grpcio-1.76.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61f69297cba3950a524f61c7c8ee12e55c486cb5f7db47ff9dcee33da6f0d3ae", size = 6575387, upload-time = "2025-10-21T16:21:59.051Z" }, + { url = "https://files.pythonhosted.org/packages/15/0f/f12c32b03f731f4a6242f771f63039df182c8b8e2cf8075b245b409259d4/grpcio-1.76.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6a15c17af8839b6801d554263c546c69c4d7718ad4321e3166175b37eaacca77", size = 7166668, upload-time = "2025-10-21T16:22:02.049Z" }, + { url = "https://files.pythonhosted.org/packages/ff/2d/3ec9ce0c2b1d92dd59d1c3264aaec9f0f7c817d6e8ac683b97198a36ed5a/grpcio-1.76.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:25a18e9810fbc7e7f03ec2516addc116a957f8cbb8cbc95ccc80faa072743d03", size = 8124928, upload-time = "2025-10-21T16:22:04.984Z" }, + { url = "https://files.pythonhosted.org/packages/1a/74/fd3317be5672f4856bcdd1a9e7b5e17554692d3db9a3b273879dc02d657d/grpcio-1.76.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:931091142fd8cc14edccc0845a79248bc155425eee9a98b2db2ea4f00a235a42", size = 7589983, upload-time = "2025-10-21T16:22:07.881Z" }, + { url = "https://files.pythonhosted.org/packages/45/bb/ca038cf420f405971f19821c8c15bcbc875505f6ffadafe9ffd77871dc4c/grpcio-1.76.0-cp313-cp313-win32.whl", hash = "sha256:5e8571632780e08526f118f74170ad8d50fb0a48c23a746bef2a6ebade3abd6f", size = 3984727, upload-time = "2025-10-21T16:22:10.032Z" }, + { url = "https://files.pythonhosted.org/packages/41/80/84087dc56437ced7cdd4b13d7875e7439a52a261e3ab4e06488ba6173b0a/grpcio-1.76.0-cp313-cp313-win_amd64.whl", hash = "sha256:f9f7bd5faab55f47231ad8dba7787866b69f5e93bc306e3915606779bbfb4ba8", size = 4702799, upload-time = "2025-10-21T16:22:12.709Z" }, + { url = "https://files.pythonhosted.org/packages/b4/46/39adac80de49d678e6e073b70204091e76631e03e94928b9ea4ecf0f6e0e/grpcio-1.76.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:ff8a59ea85a1f2191a0ffcc61298c571bc566332f82e5f5be1b83c9d8e668a62", size = 5808417, upload-time = "2025-10-21T16:22:15.02Z" }, + { url = "https://files.pythonhosted.org/packages/9c/f5/a4531f7fb8b4e2a60b94e39d5d924469b7a6988176b3422487be61fe2998/grpcio-1.76.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:06c3d6b076e7b593905d04fdba6a0525711b3466f43b3400266f04ff735de0cd", size = 11828219, upload-time = "2025-10-21T16:22:17.954Z" }, + { url = "https://files.pythonhosted.org/packages/4b/1c/de55d868ed7a8bd6acc6b1d6ddc4aa36d07a9f31d33c912c804adb1b971b/grpcio-1.76.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fd5ef5932f6475c436c4a55e4336ebbe47bd3272be04964a03d316bbf4afbcbc", size = 6367826, upload-time = "2025-10-21T16:22:20.721Z" }, + { url = "https://files.pythonhosted.org/packages/59/64/99e44c02b5adb0ad13ab3adc89cb33cb54bfa90c74770f2607eea629b86f/grpcio-1.76.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b331680e46239e090f5b3cead313cc772f6caa7d0fc8de349337563125361a4a", size = 7049550, upload-time = "2025-10-21T16:22:23.637Z" }, + { url = "https://files.pythonhosted.org/packages/43/28/40a5be3f9a86949b83e7d6a2ad6011d993cbe9b6bd27bea881f61c7788b6/grpcio-1.76.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2229ae655ec4e8999599469559e97630185fdd53ae1e8997d147b7c9b2b72cba", size = 6575564, upload-time = "2025-10-21T16:22:26.016Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a9/1be18e6055b64467440208a8559afac243c66a8b904213af6f392dc2212f/grpcio-1.76.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:490fa6d203992c47c7b9e4a9d39003a0c2bcc1c9aa3c058730884bbbb0ee9f09", size = 7176236, upload-time = "2025-10-21T16:22:28.362Z" }, + { url = "https://files.pythonhosted.org/packages/0f/55/dba05d3fcc151ce6e81327541d2cc8394f442f6b350fead67401661bf041/grpcio-1.76.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:479496325ce554792dba6548fae3df31a72cef7bad71ca2e12b0e58f9b336bfc", size = 8125795, upload-time = "2025-10-21T16:22:31.075Z" }, + { url = "https://files.pythonhosted.org/packages/4a/45/122df922d05655f63930cf42c9e3f72ba20aadb26c100ee105cad4ce4257/grpcio-1.76.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1c9b93f79f48b03ada57ea24725d83a30284a012ec27eab2cf7e50a550cbbbcc", size = 7592214, upload-time = "2025-10-21T16:22:33.831Z" }, + { url = "https://files.pythonhosted.org/packages/4a/6e/0b899b7f6b66e5af39e377055fb4a6675c9ee28431df5708139df2e93233/grpcio-1.76.0-cp314-cp314-win32.whl", hash = "sha256:747fa73efa9b8b1488a95d0ba1039c8e2dca0f741612d80415b1e1c560febf4e", size = 4062961, upload-time = "2025-10-21T16:22:36.468Z" }, + { url = "https://files.pythonhosted.org/packages/19/41/0b430b01a2eb38ee887f88c1f07644a1df8e289353b78e82b37ef988fb64/grpcio-1.76.0-cp314-cp314-win_amd64.whl", hash = "sha256:922fa70ba549fce362d2e2871ab542082d66e2aaf0c19480ea453905b01f384e", size = 4834462, upload-time = "2025-10-21T16:22:39.772Z" }, +] + +[[package]] +name = "grpcio-status" +version = "1.76.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "googleapis-common-protos" }, + { name = "grpcio" }, + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3f/46/e9f19d5be65e8423f886813a2a9d0056ba94757b0c5007aa59aed1a961fa/grpcio_status-1.76.0.tar.gz", hash = "sha256:25fcbfec74c15d1a1cb5da3fab8ee9672852dc16a5a9eeb5baf7d7a9952943cd", size = 13679, upload-time = "2025-10-21T16:28:52.545Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/cc/27ba60ad5a5f2067963e6a858743500df408eb5855e98be778eaef8c9b02/grpcio_status-1.76.0-py3-none-any.whl", hash = "sha256:380568794055a8efbbd8871162df92012e0228a5f6dffaf57f2a00c534103b18", size = 14425, upload-time = "2025-10-21T16:28:40.853Z" }, +] + [[package]] name = "h11" version = "0.16.0" @@ -1216,6 +1472,14 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/4d/6a/0d79de0b025aa85dc8864de8e97659c94cf3d23148394a954dc5ca52f8c8/h5py-3.15.1.tar.gz", hash = "sha256:c86e3ed45c4473564de55aa83b6fc9e5ead86578773dfbd93047380042e26b69", size = 426236, upload-time = "2025-10-16T10:35:27.404Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/62/b8/c0d9aa013ecfa8b7057946c080c0c07f6fa41e231d2e9bd306a2f8110bdc/h5py-3.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:316dd0f119734f324ca7ed10b5627a2de4ea42cc4dfbcedbee026aaa361c238c", size = 3399089, upload-time = "2025-10-16T10:34:12.135Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5e/3c6f6e0430813c7aefe784d00c6711166f46225f5d229546eb53032c3707/h5py-3.15.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b51469890e58e85d5242e43aab29f5e9c7e526b951caab354f3ded4ac88e7b76", size = 2847803, upload-time = "2025-10-16T10:34:14.564Z" }, + { url = "https://files.pythonhosted.org/packages/00/69/ba36273b888a4a48d78f9268d2aee05787e4438557450a8442946ab8f3ec/h5py-3.15.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a33bfd5dfcea037196f7778534b1ff7e36a7f40a89e648c8f2967292eb6898e", size = 4914884, upload-time = "2025-10-16T10:34:18.452Z" }, + { url = "https://files.pythonhosted.org/packages/3a/30/d1c94066343a98bb2cea40120873193a4fed68c4ad7f8935c11caf74c681/h5py-3.15.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:25c8843fec43b2cc368aa15afa1cdf83fc5e17b1c4e10cd3771ef6c39b72e5ce", size = 5109965, upload-time = "2025-10-16T10:34:21.853Z" }, + { url = "https://files.pythonhosted.org/packages/81/3d/d28172116eafc3bc9f5991b3cb3fd2c8a95f5984f50880adfdf991de9087/h5py-3.15.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a308fd8681a864c04423c0324527237a0484e2611e3441f8089fd00ed56a8171", size = 4561870, upload-time = "2025-10-16T10:34:26.69Z" }, + { url = "https://files.pythonhosted.org/packages/a5/83/393a7226024238b0f51965a7156004eaae1fcf84aa4bfecf7e582676271b/h5py-3.15.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f4a016df3f4a8a14d573b496e4d1964deb380e26031fc85fb40e417e9131888a", size = 5037161, upload-time = "2025-10-16T10:34:30.383Z" }, + { url = "https://files.pythonhosted.org/packages/cf/51/329e7436bf87ca6b0fe06dd0a3795c34bebe4ed8d6c44450a20565d57832/h5py-3.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:59b25cf02411bf12e14f803fef0b80886444c7fe21a5ad17c6a28d3f08098a1e", size = 2874165, upload-time = "2025-10-16T10:34:33.461Z" }, + { url = "https://files.pythonhosted.org/packages/09/a8/2d02b10a66747c54446e932171dd89b8b4126c0111b440e6bc05a7c852ec/h5py-3.15.1-cp312-cp312-win_arm64.whl", hash = "sha256:61d5a58a9851e01ee61c932bbbb1c98fe20aba0a5674776600fb9a361c0aa652", size = 2458214, upload-time = "2025-10-16T10:34:35.733Z" }, { url = "https://files.pythonhosted.org/packages/88/b3/40207e0192415cbff7ea1d37b9f24b33f6d38a5a2f5d18a678de78f967ae/h5py-3.15.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c8440fd8bee9500c235ecb7aa1917a0389a2adb80c209fa1cc485bd70e0d94a5", size = 3376511, upload-time = "2025-10-16T10:34:38.596Z" }, { url = "https://files.pythonhosted.org/packages/31/96/ba99a003c763998035b0de4c299598125df5fc6c9ccf834f152ddd60e0fb/h5py-3.15.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ab2219dbc6fcdb6932f76b548e2b16f34a1f52b7666e998157a4dfc02e2c4123", size = 2826143, upload-time = "2025-10-16T10:34:41.342Z" }, { url = "https://files.pythonhosted.org/packages/6a/c2/fc6375d07ea3962df7afad7d863fe4bde18bb88530678c20d4c90c18de1d/h5py-3.15.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8cb02c3a96255149ed3ac811eeea25b655d959c6dd5ce702c9a95ff11859eb5", size = 4908316, upload-time = "2025-10-16T10:34:44.619Z" }, @@ -1275,6 +1539,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, ] +[[package]] +name = "httplib2" +version = "0.31.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/77/6653db69c1f7ecfe5e3f9726fdadc981794656fcd7d98c4209fecfea9993/httplib2-0.31.0.tar.gz", hash = "sha256:ac7ab497c50975147d4f7b1ade44becc7df2f8954d42b38b3d69c515f531135c", size = 250759, upload-time = "2025-09-11T12:16:03.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/a2/0d269db0f6163be503775dc8b6a6fa15820cc9fdc866f6ba608d86b721f2/httplib2-0.31.0-py3-none-any.whl", hash = "sha256:b9cd78abea9b4e43a7714c6e0f8b6b8561a6fc1e95d5dbd367f5bf0ef35f5d24", size = 91148, upload-time = "2025-09-11T12:16:01.803Z" }, +] + [[package]] name = "httpx" version = "0.28.1" @@ -1332,6 +1608,16 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/54/ed/762aa0ff7b8b398a469cd138444c68d0154178995f9923cbfb3d02fad6ce/icechunk-1.1.13.tar.gz", hash = "sha256:d83726fff9bab9fca112e957e361aba63f56db029f8eee9e691c7c5d5c6fd7be", size = 430918, upload-time = "2025-11-28T22:07:16.446Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/93/cb2c0fe4011112347432534e0671714f971bc207e91d9104371001262cb7/icechunk-1.1.13-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:5dfdd816fd4140dd73a061ab376f6d0be566b5ed3ba8c1edf92741ed0d09cf07", size = 17355856, upload-time = "2025-11-28T22:06:02.797Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ee/fe2e811d5b92bcbb19cb73dc1bd635b8f88ad3288711ea3471a91eb53acb/icechunk-1.1.13-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1a563df2a9a6493d14aa1a4c13274313031d6c540edfdffb482ad6e774175b80", size = 16780769, upload-time = "2025-11-28T22:05:54.486Z" }, + { url = "https://files.pythonhosted.org/packages/bd/a5/6af9b591e0f055b48c864e8ab8cbf15592c0aca1cde95ea56204efe5008e/icechunk-1.1.13-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64e464421607d3e86438980ccb3689757107e98d32831415d1f74861ce41492d", size = 18241859, upload-time = "2025-11-28T22:05:43.086Z" }, + { url = "https://files.pythonhosted.org/packages/89/27/248a9d85966507ef842673c78387ec39e1b57e7170c970e2a358ebf76360/icechunk-1.1.13-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8ced22b0d95257832b1b7b69fba40a645fe97d1938057ee53458ce7083471e27", size = 18907195, upload-time = "2025-11-28T22:05:10.089Z" }, + { url = "https://files.pythonhosted.org/packages/73/66/c1dcb3b3a7180b6fb6741eca4f05ee91afe57d2b129b949c1ccf26aa040e/icechunk-1.1.13-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:b2403ade52e59bcf176dac1ba8108fa6e971cce8aa54b943a47914193f3e75bd", size = 18024770, upload-time = "2025-11-28T22:05:27.022Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ac/c4cc34a590f367378f14b3e3046a00a6cbd61b5fd80c855a41d8b0579aef/icechunk-1.1.13-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:86e75b3547bc87c1527453ecb5108338e143b425ce678ebd7770c12d0fcf1fcc", size = 19148853, upload-time = "2025-11-28T22:06:11.895Z" }, + { url = "https://files.pythonhosted.org/packages/81/e7/3856dce905a771abb076755a9278d5e4ddf13e3f13c97e3dc337906d190a/icechunk-1.1.13-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:060446dee345358517495713e742822747c1e08096a50d10e40c4065dc554eba", size = 18236229, upload-time = "2025-11-28T22:06:28.065Z" }, + { url = "https://files.pythonhosted.org/packages/a0/14/071a16169ee1ccf21aad28bdda1aff09a9f9aaa6cd4a65586d50520d44a4/icechunk-1.1.13-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4108fa6f50f550a51d674f5d899a74e06d36b25f54c80c086e9e80f20a65cd68", size = 18984857, upload-time = "2025-11-28T22:06:44.025Z" }, + { url = "https://files.pythonhosted.org/packages/64/3d/0857091368a1a94f87dd0a4496a95844c0f2356ddcb0b111b5d740d5cbfb/icechunk-1.1.13-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a05eaed0f85a5d8255986ffe864cfd5bf4b818072ac04285a39ca0e0801a8a86", size = 19004838, upload-time = "2025-11-28T22:07:01.081Z" }, + { url = "https://files.pythonhosted.org/packages/f5/a0/19d614d547b692268fa29e63db83d946dc764e88dea5f415521a7a0c5bfe/icechunk-1.1.13-cp312-cp312-win_amd64.whl", hash = "sha256:34433287c20192481768599244bceae05c5127d4d4b97a3d6922aab57315acd3", size = 15503504, upload-time = "2025-11-28T22:07:20.695Z" }, { url = "https://files.pythonhosted.org/packages/65/81/b4a40d638b801fca214a3d619129301473e046a131edbb28feea42279c0a/icechunk-1.1.13-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6dbc822e2fbf29df312c9f8c22ef839f55ccf4f0bc67cfbf956b113f41bf7aee", size = 17355194, upload-time = "2025-11-28T22:06:05.181Z" }, { url = "https://files.pythonhosted.org/packages/c9/fb/c5f3a05888781aa8e6fa660e5873f515e7cf6ecd2e4559c73dfb04db89cd/icechunk-1.1.13-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a602c058d00067835233cbe90f329307265ba62e27ce068a1e56cdcf6fadf7de", size = 16781424, upload-time = "2025-11-28T22:05:56.564Z" }, { url = "https://files.pythonhosted.org/packages/2b/74/c335456c500cda9e67ab88064b89b1e92a5a11b6203dbb309e00ddc58d50/icechunk-1.1.13-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763b1d1ec69d3f365dd82832fad70673e812dfd231c067073ad5729792340fa7", size = 18244222, upload-time = "2025-11-28T22:05:45.425Z" }, @@ -1375,6 +1661,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, ] +[[package]] +name = "importlib-metadata" +version = "8.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, +] + [[package]] name = "iniconfig" version = "2.3.0" @@ -1476,6 +1774,7 @@ dependencies = [ { name = "dask" }, { name = "fsspec" }, { name = "gcsfs" }, + { name = "google-cloud" }, { name = "h5netcdf" }, { name = "holoviews" }, { name = "hvplot" }, @@ -1484,7 +1783,7 @@ dependencies = [ { name = "jupyter" }, { name = "jupyter-bokeh" }, { name = "kerchunk" }, - { name = "lithops" }, + { name = "lithops", extra = ["gcp"] }, { name = "matplotlib" }, { name = "netcdf4" }, { name = "numpy" }, @@ -1513,6 +1812,7 @@ requires-dist = [ { name = "dask", specifier = ">=2025.11.0" }, { name = "fsspec", specifier = ">=2025.9.0" }, { name = "gcsfs", specifier = ">=2025.9.0" }, + { name = "google-cloud", specifier = ">=0.34.0" }, { name = "h5netcdf", specifier = ">=1.7.3" }, { name = "holoviews", specifier = ">=1.19.0" }, { name = "hvplot", specifier = ">=0.10.0" }, @@ -1521,7 +1821,7 @@ requires-dist = [ { name = "jupyter", specifier = ">=1.1.0" }, { name = "jupyter-bokeh", specifier = ">=4.0.5" }, { name = "kerchunk", specifier = ">=0.2.9" }, - { name = "lithops", specifier = ">=3.6.2" }, + { name = "lithops", extras = ["gcp"], specifier = ">=3.6.2" }, { name = "matplotlib", specifier = ">=3.10.7" }, { name = "netcdf4", specifier = ">=1.7.0" }, { name = "numpy", specifier = ">=2.3.4" }, @@ -1888,6 +2188,19 @@ version = "1.4.9" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5c/3c/85844f1b0feb11ee581ac23fe5fce65cd049a200c1446708cc1b7f922875/kiwisolver-1.4.9.tar.gz", hash = "sha256:c3b22c26c6fd6811b0ae8363b95ca8ce4ea3c202d3d0975b2914310ceb1bcc4d", size = 97564, upload-time = "2025-08-10T21:27:49.279Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/86/c9/13573a747838aeb1c76e3267620daa054f4152444d1f3d1a2324b78255b5/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ac5a486ac389dddcc5bef4f365b6ae3ffff2c433324fb38dd35e3fab7c957999", size = 123686, upload-time = "2025-08-10T21:26:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/51/ea/2ecf727927f103ffd1739271ca19c424d0e65ea473fbaeea1c014aea93f6/kiwisolver-1.4.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2ba92255faa7309d06fe44c3a4a97efe1c8d640c2a79a5ef728b685762a6fd2", size = 66460, upload-time = "2025-08-10T21:26:11.083Z" }, + { url = "https://files.pythonhosted.org/packages/5b/5a/51f5464373ce2aeb5194508298a508b6f21d3867f499556263c64c621914/kiwisolver-1.4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a2899935e724dd1074cb568ce7ac0dce28b2cd6ab539c8e001a8578eb106d14", size = 64952, upload-time = "2025-08-10T21:26:12.058Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/6d240beb0f24b74371762873e9b7f499f1e02166a2d9c5801f4dbf8fa12e/kiwisolver-1.4.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f6008a4919fdbc0b0097089f67a1eb55d950ed7e90ce2cc3e640abadd2757a04", size = 1474756, upload-time = "2025-08-10T21:26:13.096Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/f36816eaf465220f683fb711efdd1bbf7a7005a2473d0e4ed421389bd26c/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:67bb8b474b4181770f926f7b7d2f8c0248cbcb78b660fdd41a47054b28d2a752", size = 1276404, upload-time = "2025-08-10T21:26:14.457Z" }, + { url = "https://files.pythonhosted.org/packages/2e/64/bc2de94800adc830c476dce44e9b40fd0809cddeef1fde9fcf0f73da301f/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2327a4a30d3ee07d2fbe2e7933e8a37c591663b96ce42a00bc67461a87d7df77", size = 1294410, upload-time = "2025-08-10T21:26:15.73Z" }, + { url = "https://files.pythonhosted.org/packages/5f/42/2dc82330a70aa8e55b6d395b11018045e58d0bb00834502bf11509f79091/kiwisolver-1.4.9-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7a08b491ec91b1d5053ac177afe5290adacf1f0f6307d771ccac5de30592d198", size = 1343631, upload-time = "2025-08-10T21:26:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/22/fd/f4c67a6ed1aab149ec5a8a401c323cee7a1cbe364381bb6c9c0d564e0e20/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d8fc5c867c22b828001b6a38d2eaeb88160bf5783c6cb4a5e440efc981ce286d", size = 2224963, upload-time = "2025-08-10T21:26:18.737Z" }, + { url = "https://files.pythonhosted.org/packages/45/aa/76720bd4cb3713314677d9ec94dcc21ced3f1baf4830adde5bb9b2430a5f/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:3b3115b2581ea35bb6d1f24a4c90af37e5d9b49dcff267eeed14c3893c5b86ab", size = 2321295, upload-time = "2025-08-10T21:26:20.11Z" }, + { url = "https://files.pythonhosted.org/packages/80/19/d3ec0d9ab711242f56ae0dc2fc5d70e298bb4a1f9dfab44c027668c673a1/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858e4c22fb075920b96a291928cb7dea5644e94c0ee4fcd5af7e865655e4ccf2", size = 2487987, upload-time = "2025-08-10T21:26:21.49Z" }, + { url = "https://files.pythonhosted.org/packages/39/e9/61e4813b2c97e86b6fdbd4dd824bf72d28bcd8d4849b8084a357bc0dd64d/kiwisolver-1.4.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed0fecd28cc62c54b262e3736f8bb2512d8dcfdc2bcf08be5f47f96bf405b145", size = 2291817, upload-time = "2025-08-10T21:26:22.812Z" }, + { url = "https://files.pythonhosted.org/packages/a0/41/85d82b0291db7504da3c2defe35c9a8a5c9803a730f297bd823d11d5fb77/kiwisolver-1.4.9-cp312-cp312-win_amd64.whl", hash = "sha256:f68208a520c3d86ea51acf688a3e3002615a7f0238002cccc17affecc86a8a54", size = 73895, upload-time = "2025-08-10T21:26:24.37Z" }, + { url = "https://files.pythonhosted.org/packages/e2/92/5f3068cf15ee5cb624a0c7596e67e2a0bb2adee33f71c379054a491d07da/kiwisolver-1.4.9-cp312-cp312-win_arm64.whl", hash = "sha256:2c1a4f57df73965f3f14df20b80ee29e6a7930a57d2d9e8491a25f676e197c60", size = 64992, upload-time = "2025-08-10T21:26:25.732Z" }, { url = "https://files.pythonhosted.org/packages/31/c1/c2686cda909742ab66c7388e9a1a8521a59eb89f8bcfbee28fc980d07e24/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5d0432ccf1c7ab14f9949eec60c5d1f924f17c037e9f8b33352fa05799359b8", size = 123681, upload-time = "2025-08-10T21:26:26.725Z" }, { url = "https://files.pythonhosted.org/packages/ca/f0/f44f50c9f5b1a1860261092e3bc91ecdc9acda848a8b8c6abfda4a24dd5c/kiwisolver-1.4.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efb3a45b35622bb6c16dbfab491a8f5a391fe0e9d45ef32f4df85658232ca0e2", size = 66464, upload-time = "2025-08-10T21:26:27.733Z" }, { url = "https://files.pythonhosted.org/packages/2d/7a/9d90a151f558e29c3936b8a47ac770235f436f2120aca41a6d5f3d62ae8d/kiwisolver-1.4.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1a12cf6398e8a0a001a059747a1cbf24705e18fe413bc22de7b3d15c67cffe3f", size = 64961, upload-time = "2025-08-10T21:26:28.729Z" }, @@ -1985,6 +2298,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c7/a3/f06f296ad1a8eb0519996bda0e748905664526897f465ef48bf9800b12fc/lithops-3.6.2-py3-none-any.whl", hash = "sha256:b04401164c9c45278422d28e1a667a934c62b8d55d1ca9f2884e27cebf3a0584", size = 391820, upload-time = "2025-09-13T13:55:11.077Z" }, ] +[package.optional-dependencies] +gcp = [ + { name = "google-api-python-client" }, + { name = "google-auth" }, + { name = "google-cloud-pubsub" }, + { name = "google-cloud-storage" }, + { name = "httplib2" }, +] + [[package]] name = "locket" version = "1.0.0" @@ -2021,6 +2343,17 @@ version = "3.0.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e", size = 11615, upload-time = "2025-09-27T18:36:30.854Z" }, + { url = "https://files.pythonhosted.org/packages/9a/81/7e4e08678a1f98521201c3079f77db69fb552acd56067661f8c2f534a718/markupsafe-3.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1872df69a4de6aead3491198eaf13810b565bdbeec3ae2dc8780f14458ec73ce", size = 12020, upload-time = "2025-09-27T18:36:31.971Z" }, + { url = "https://files.pythonhosted.org/packages/1e/2c/799f4742efc39633a1b54a92eec4082e4f815314869865d876824c257c1e/markupsafe-3.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a7e8ae81ae39e62a41ec302f972ba6ae23a5c5396c8e60113e9066ef893da0d", size = 24332, upload-time = "2025-09-27T18:36:32.813Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d", size = 22947, upload-time = "2025-09-27T18:36:33.86Z" }, + { url = "https://files.pythonhosted.org/packages/2c/54/887f3092a85238093a0b2154bd629c89444f395618842e8b0c41783898ea/markupsafe-3.0.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:94c6f0bb423f739146aec64595853541634bde58b2135f27f61c1ffd1cd4d16a", size = 21962, upload-time = "2025-09-27T18:36:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2f/336b8c7b6f4a4d95e91119dc8521402461b74a485558d8f238a68312f11c/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:be8813b57049a7dc738189df53d69395eba14fb99345e0a5994914a3864c8a4b", size = 23760, upload-time = "2025-09-27T18:36:36.001Z" }, + { url = "https://files.pythonhosted.org/packages/32/43/67935f2b7e4982ffb50a4d169b724d74b62a3964bc1a9a527f5ac4f1ee2b/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:83891d0e9fb81a825d9a6d61e3f07550ca70a076484292a70fde82c4b807286f", size = 21529, upload-time = "2025-09-27T18:36:36.906Z" }, + { url = "https://files.pythonhosted.org/packages/89/e0/4486f11e51bbba8b0c041098859e869e304d1c261e59244baa3d295d47b7/markupsafe-3.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:77f0643abe7495da77fb436f50f8dab76dbc6e5fd25d39589a0f1fe6548bfa2b", size = 23015, upload-time = "2025-09-27T18:36:37.868Z" }, + { url = "https://files.pythonhosted.org/packages/2f/e1/78ee7a023dac597a5825441ebd17170785a9dab23de95d2c7508ade94e0e/markupsafe-3.0.3-cp312-cp312-win32.whl", hash = "sha256:d88b440e37a16e651bda4c7c2b930eb586fd15ca7406cb39e211fcff3bf3017d", size = 14540, upload-time = "2025-09-27T18:36:38.761Z" }, + { url = "https://files.pythonhosted.org/packages/aa/5b/bec5aa9bbbb2c946ca2733ef9c4ca91c91b6a24580193e891b5f7dbe8e1e/markupsafe-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:26a5784ded40c9e318cfc2bdb30fe164bdb8665ded9cd64d500a34fb42067b1c", size = 15105, upload-time = "2025-09-27T18:36:39.701Z" }, + { url = "https://files.pythonhosted.org/packages/e5/f1/216fc1bbfd74011693a4fd837e7026152e89c4bcf3e77b6692fba9923123/markupsafe-3.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:35add3b638a5d900e807944a078b51922212fb3dedb01633a8defc4b01a3c85f", size = 13906, upload-time = "2025-09-27T18:36:40.689Z" }, { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" }, { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" }, { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" }, @@ -2084,6 +2417,13 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/ae/e2/d2d5295be2f44c678ebaf3544ba32d20c1f9ef08c49fe47f496180e1db15/matplotlib-3.10.7.tar.gz", hash = "sha256:a06ba7e2a2ef9131c79c49e63dad355d2d878413a0376c1727c8b9335ff731c7", size = 34804865, upload-time = "2025-10-09T00:28:00.669Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/be/b3/09eb0f7796932826ec20c25b517d568627754f6c6462fca19e12c02f2e12/matplotlib-3.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a0edb7209e21840e8361e91ea84ea676658aa93edd5f8762793dec77a4a6748", size = 8272389, upload-time = "2025-10-09T00:26:42.474Z" }, + { url = "https://files.pythonhosted.org/packages/11/0b/1ae80ddafb8652fd8046cb5c8460ecc8d4afccb89e2c6d6bec61e04e1eaf/matplotlib-3.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c380371d3c23e0eadf8ebff114445b9f970aff2010198d498d4ab4c3b41eea4f", size = 8128247, upload-time = "2025-10-09T00:26:44.77Z" }, + { url = "https://files.pythonhosted.org/packages/7d/18/95ae2e242d4a5c98bd6e90e36e128d71cf1c7e39b0874feaed3ef782e789/matplotlib-3.10.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d5f256d49fea31f40f166a5e3131235a5d2f4b7f44520b1cf0baf1ce568ccff0", size = 8696996, upload-time = "2025-10-09T00:26:46.792Z" }, + { url = "https://files.pythonhosted.org/packages/7e/3d/5b559efc800bd05cb2033aa85f7e13af51958136a48327f7c261801ff90a/matplotlib-3.10.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:11ae579ac83cdf3fb72573bb89f70e0534de05266728740d478f0f818983c695", size = 9530153, upload-time = "2025-10-09T00:26:49.07Z" }, + { url = "https://files.pythonhosted.org/packages/88/57/eab4a719fd110312d3c220595d63a3c85ec2a39723f0f4e7fa7e6e3f74ba/matplotlib-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4c14b6acd16cddc3569a2d515cfdd81c7a68ac5639b76548cfc1a9e48b20eb65", size = 9593093, upload-time = "2025-10-09T00:26:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/31/3c/80816f027b3a4a28cd2a0a6ef7f89a2db22310e945cd886ec25bfb399221/matplotlib-3.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:0d8c32b7ea6fb80b1aeff5a2ceb3fb9778e2759e899d9beff75584714afcc5ee", size = 8122771, upload-time = "2025-10-09T00:26:53.296Z" }, + { url = "https://files.pythonhosted.org/packages/de/77/ef1fc78bfe99999b2675435cc52120887191c566b25017d78beaabef7f2d/matplotlib-3.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:5f3f6d315dcc176ba7ca6e74c7768fb7e4cf566c49cb143f6bc257b62e634ed8", size = 7992812, upload-time = "2025-10-09T00:26:54.882Z" }, { url = "https://files.pythonhosted.org/packages/02/9c/207547916a02c78f6bdd83448d9b21afbc42f6379ed887ecf610984f3b4e/matplotlib-3.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1d9d3713a237970569156cfb4de7533b7c4eacdd61789726f444f96a0d28f57f", size = 8273212, upload-time = "2025-10-09T00:26:56.752Z" }, { url = "https://files.pythonhosted.org/packages/bc/d0/b3d3338d467d3fc937f0bb7f256711395cae6f78e22cef0656159950adf0/matplotlib-3.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:37a1fea41153dd6ee061d21ab69c9cf2cf543160b1b85d89cd3d2e2a7902ca4c", size = 8128713, upload-time = "2025-10-09T00:26:59.001Z" }, { url = "https://files.pythonhosted.org/packages/22/ff/6425bf5c20d79aa5b959d1ce9e65f599632345391381c9a104133fe0b171/matplotlib-3.10.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3c4ea4948d93c9c29dc01c0c23eef66f2101bf75158c291b88de6525c55c3d1", size = 8698527, upload-time = "2025-10-09T00:27:00.69Z" }, @@ -2162,6 +2502,15 @@ version = "1.1.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/4d/f2/bfb55a6236ed8725a96b0aa3acbd0ec17588e6a2c3b62a93eb513ed8783f/msgpack-1.1.2.tar.gz", hash = "sha256:3b60763c1373dd60f398488069bcdc703cd08a711477b5d480eecc9f9626f47e", size = 173581, upload-time = "2025-10-08T09:15:56.596Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/bd/8b0d01c756203fbab65d265859749860682ccd2a59594609aeec3a144efa/msgpack-1.1.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:70a0dff9d1f8da25179ffcf880e10cf1aad55fdb63cd59c9a49a1b82290062aa", size = 81939, upload-time = "2025-10-08T09:15:01.472Z" }, + { url = "https://files.pythonhosted.org/packages/34/68/ba4f155f793a74c1483d4bdef136e1023f7bcba557f0db4ef3db3c665cf1/msgpack-1.1.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:446abdd8b94b55c800ac34b102dffd2f6aa0ce643c55dfc017ad89347db3dbdb", size = 85064, upload-time = "2025-10-08T09:15:03.764Z" }, + { url = "https://files.pythonhosted.org/packages/f2/60/a064b0345fc36c4c3d2c743c82d9100c40388d77f0b48b2f04d6041dbec1/msgpack-1.1.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c63eea553c69ab05b6747901b97d620bb2a690633c77f23feb0c6a947a8a7b8f", size = 417131, upload-time = "2025-10-08T09:15:05.136Z" }, + { url = "https://files.pythonhosted.org/packages/65/92/a5100f7185a800a5d29f8d14041f61475b9de465ffcc0f3b9fba606e4505/msgpack-1.1.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:372839311ccf6bdaf39b00b61288e0557916c3729529b301c52c2d88842add42", size = 427556, upload-time = "2025-10-08T09:15:06.837Z" }, + { url = "https://files.pythonhosted.org/packages/f5/87/ffe21d1bf7d9991354ad93949286f643b2bb6ddbeab66373922b44c3b8cc/msgpack-1.1.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2929af52106ca73fcb28576218476ffbb531a036c2adbcf54a3664de124303e9", size = 404920, upload-time = "2025-10-08T09:15:08.179Z" }, + { url = "https://files.pythonhosted.org/packages/ff/41/8543ed2b8604f7c0d89ce066f42007faac1eaa7d79a81555f206a5cdb889/msgpack-1.1.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be52a8fc79e45b0364210eef5234a7cf8d330836d0a64dfbb878efa903d84620", size = 415013, upload-time = "2025-10-08T09:15:09.83Z" }, + { url = "https://files.pythonhosted.org/packages/41/0d/2ddfaa8b7e1cee6c490d46cb0a39742b19e2481600a7a0e96537e9c22f43/msgpack-1.1.2-cp312-cp312-win32.whl", hash = "sha256:1fff3d825d7859ac888b0fbda39a42d59193543920eda9d9bea44d958a878029", size = 65096, upload-time = "2025-10-08T09:15:11.11Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ec/d431eb7941fb55a31dd6ca3404d41fbb52d99172df2e7707754488390910/msgpack-1.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:1de460f0403172cff81169a30b9a92b260cb809c4cb7e2fc79ae8d0510c78b6b", size = 72708, upload-time = "2025-10-08T09:15:12.554Z" }, + { url = "https://files.pythonhosted.org/packages/c5/31/5b1a1f70eb0e87d1678e9624908f86317787b536060641d6798e3cf70ace/msgpack-1.1.2-cp312-cp312-win_arm64.whl", hash = "sha256:be5980f3ee0e6bd44f3a9e9dea01054f175b50c3e6cdb692bc9424c0bbb8bf69", size = 64119, upload-time = "2025-10-08T09:15:13.589Z" }, { url = "https://files.pythonhosted.org/packages/6b/31/b46518ecc604d7edf3a4f94cb3bf021fc62aa301f0cb849936968164ef23/msgpack-1.1.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4efd7b5979ccb539c221a4c4e16aac1a533efc97f3b759bb5a5ac9f6d10383bf", size = 81212, upload-time = "2025-10-08T09:15:14.552Z" }, { url = "https://files.pythonhosted.org/packages/92/dc/c385f38f2c2433333345a82926c6bfa5ecfff3ef787201614317b58dd8be/msgpack-1.1.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:42eefe2c3e2af97ed470eec850facbe1b5ad1d6eacdbadc42ec98e7dcf68b4b7", size = 84315, upload-time = "2025-10-08T09:15:15.543Z" }, { url = "https://files.pythonhosted.org/packages/d3/68/93180dce57f684a61a88a45ed13047558ded2be46f03acb8dec6d7c513af/msgpack-1.1.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1fdf7d83102bf09e7ce3357de96c59b627395352a4024f6e2458501f158bf999", size = 412721, upload-time = "2025-10-08T09:15:16.567Z" }, @@ -2197,6 +2546,24 @@ version = "6.7.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/80/1e/5492c365f222f907de1039b91f922b93fa4f764c713ee858d235495d8f50/multidict-6.7.0.tar.gz", hash = "sha256:c6e99d9a65ca282e578dfea819cfa9c0a62b2499d8677392e09feaf305e9e6f5", size = 101834, upload-time = "2025-10-06T14:52:30.657Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/9e/9f61ac18d9c8b475889f32ccfa91c9f59363480613fc807b6e3023d6f60b/multidict-6.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8a3862568a36d26e650a19bb5cbbba14b71789032aebc0423f8cc5f150730184", size = 76877, upload-time = "2025-10-06T14:49:20.884Z" }, + { url = "https://files.pythonhosted.org/packages/38/6f/614f09a04e6184f8824268fce4bc925e9849edfa654ddd59f0b64508c595/multidict-6.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:960c60b5849b9b4f9dcc9bea6e3626143c252c74113df2c1540aebce70209b45", size = 45467, upload-time = "2025-10-06T14:49:22.054Z" }, + { url = "https://files.pythonhosted.org/packages/b3/93/c4f67a436dd026f2e780c433277fff72be79152894d9fc36f44569cab1a6/multidict-6.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2049be98fb57a31b4ccf870bf377af2504d4ae35646a19037ec271e4c07998aa", size = 43834, upload-time = "2025-10-06T14:49:23.566Z" }, + { url = "https://files.pythonhosted.org/packages/7f/f5/013798161ca665e4a422afbc5e2d9e4070142a9ff8905e482139cd09e4d0/multidict-6.7.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0934f3843a1860dd465d38895c17fce1f1cb37295149ab05cd1b9a03afacb2a7", size = 250545, upload-time = "2025-10-06T14:49:24.882Z" }, + { url = "https://files.pythonhosted.org/packages/71/2f/91dbac13e0ba94669ea5119ba267c9a832f0cb65419aca75549fcf09a3dc/multidict-6.7.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b3e34f3a1b8131ba06f1a73adab24f30934d148afcd5f5de9a73565a4404384e", size = 258305, upload-time = "2025-10-06T14:49:26.778Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b0/754038b26f6e04488b48ac621f779c341338d78503fb45403755af2df477/multidict-6.7.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:efbb54e98446892590dc2458c19c10344ee9a883a79b5cec4bc34d6656e8d546", size = 242363, upload-time = "2025-10-06T14:49:28.562Z" }, + { url = "https://files.pythonhosted.org/packages/87/15/9da40b9336a7c9fa606c4cf2ed80a649dffeb42b905d4f63a1d7eb17d746/multidict-6.7.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a35c5fc61d4f51eb045061e7967cfe3123d622cd500e8868e7c0c592a09fedc4", size = 268375, upload-time = "2025-10-06T14:49:29.96Z" }, + { url = "https://files.pythonhosted.org/packages/82/72/c53fcade0cc94dfaad583105fd92b3a783af2091eddcb41a6d5a52474000/multidict-6.7.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29fe6740ebccba4175af1b9b87bf553e9c15cd5868ee967e010efcf94e4fd0f1", size = 269346, upload-time = "2025-10-06T14:49:31.404Z" }, + { url = "https://files.pythonhosted.org/packages/0d/e2/9baffdae21a76f77ef8447f1a05a96ec4bc0a24dae08767abc0a2fe680b8/multidict-6.7.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:123e2a72e20537add2f33a79e605f6191fba2afda4cbb876e35c1a7074298a7d", size = 256107, upload-time = "2025-10-06T14:49:32.974Z" }, + { url = "https://files.pythonhosted.org/packages/3c/06/3f06f611087dc60d65ef775f1fb5aca7c6d61c6db4990e7cda0cef9b1651/multidict-6.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b284e319754366c1aee2267a2036248b24eeb17ecd5dc16022095e747f2f4304", size = 253592, upload-time = "2025-10-06T14:49:34.52Z" }, + { url = "https://files.pythonhosted.org/packages/20/24/54e804ec7945b6023b340c412ce9c3f81e91b3bf5fa5ce65558740141bee/multidict-6.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:803d685de7be4303b5a657b76e2f6d1240e7e0a8aa2968ad5811fa2285553a12", size = 251024, upload-time = "2025-10-06T14:49:35.956Z" }, + { url = "https://files.pythonhosted.org/packages/14/48/011cba467ea0b17ceb938315d219391d3e421dfd35928e5dbdc3f4ae76ef/multidict-6.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c04a328260dfd5db8c39538f999f02779012268f54614902d0afc775d44e0a62", size = 251484, upload-time = "2025-10-06T14:49:37.631Z" }, + { url = "https://files.pythonhosted.org/packages/0d/2f/919258b43bb35b99fa127435cfb2d91798eb3a943396631ef43e3720dcf4/multidict-6.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8a19cdb57cd3df4cd865849d93ee14920fb97224300c88501f16ecfa2604b4e0", size = 263579, upload-time = "2025-10-06T14:49:39.502Z" }, + { url = "https://files.pythonhosted.org/packages/31/22/a0e884d86b5242b5a74cf08e876bdf299e413016b66e55511f7a804a366e/multidict-6.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b2fd74c52accced7e75de26023b7dccee62511a600e62311b918ec5c168fc2a", size = 259654, upload-time = "2025-10-06T14:49:41.32Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e5/17e10e1b5c5f5a40f2fcbb45953c9b215f8a4098003915e46a93f5fcaa8f/multidict-6.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3e8bfdd0e487acf992407a140d2589fe598238eaeffa3da8448d63a63cd363f8", size = 251511, upload-time = "2025-10-06T14:49:46.021Z" }, + { url = "https://files.pythonhosted.org/packages/e3/9a/201bb1e17e7af53139597069c375e7b0dcbd47594604f65c2d5359508566/multidict-6.7.0-cp312-cp312-win32.whl", hash = "sha256:dd32a49400a2c3d52088e120ee00c1e3576cbff7e10b98467962c74fdb762ed4", size = 41895, upload-time = "2025-10-06T14:49:48.718Z" }, + { url = "https://files.pythonhosted.org/packages/46/e2/348cd32faad84eaf1d20cce80e2bb0ef8d312c55bca1f7fa9865e7770aaf/multidict-6.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:92abb658ef2d7ef22ac9f8bb88e8b6c3e571671534e029359b6d9e845923eb1b", size = 46073, upload-time = "2025-10-06T14:49:50.28Z" }, + { url = "https://files.pythonhosted.org/packages/25/ec/aad2613c1910dce907480e0c3aa306905830f25df2e54ccc9dea450cb5aa/multidict-6.7.0-cp312-cp312-win_arm64.whl", hash = "sha256:490dab541a6a642ce1a9d61a4781656b346a55c13038f0b1244653828e3a83ec", size = 43226, upload-time = "2025-10-06T14:49:52.304Z" }, { url = "https://files.pythonhosted.org/packages/d2/86/33272a544eeb36d66e4d9a920602d1a2f57d4ebea4ef3cdfe5a912574c95/multidict-6.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:bee7c0588aa0076ce77c0ea5d19a68d76ad81fcd9fe8501003b9a24f9d4000f6", size = 76135, upload-time = "2025-10-06T14:49:54.26Z" }, { url = "https://files.pythonhosted.org/packages/91/1c/eb97db117a1ebe46d457a3d235a7b9d2e6dcab174f42d1b67663dd9e5371/multidict-6.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7ef6b61cad77091056ce0e7ce69814ef72afacb150b7ac6a3e9470def2198159", size = 45117, upload-time = "2025-10-06T14:49:55.82Z" }, { url = "https://files.pythonhosted.org/packages/f1/d8/6c3442322e41fb1dd4de8bd67bfd11cd72352ac131f6368315617de752f1/multidict-6.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9c0359b1ec12b1d6849c59f9d319610b7f20ef990a6d454ab151aa0e3b9f78ca", size = 43472, upload-time = "2025-10-06T14:49:57.048Z" }, @@ -2401,6 +2768,11 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/44/bd/8a391e7c356366224734efd24da929cc4796fff468bfb179fe1af6548535/numcodecs-0.16.5.tar.gz", hash = "sha256:0d0fb60852f84c0bd9543cc4d2ab9eefd37fc8efcc410acd4777e62a1d300318", size = 6276387, upload-time = "2025-11-21T02:49:48.986Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/75/cc/55420f3641a67f78392dc0bc5d02cb9eb0a9dcebf2848d1ac77253ca61fa/numcodecs-0.16.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:24e675dc8d1550cd976a99479b87d872cb142632c75cc402fea04c08c4898523", size = 1656287, upload-time = "2025-11-21T02:49:25.755Z" }, + { url = "https://files.pythonhosted.org/packages/f5/6c/86644987505dcb90ba6d627d6989c27bafb0699f9fd00187e06d05ea8594/numcodecs-0.16.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:94ddfa4341d1a3ab99989d13b01b5134abb687d3dab2ead54b450aefe4ad5bd6", size = 1148899, upload-time = "2025-11-21T02:49:26.87Z" }, + { url = "https://files.pythonhosted.org/packages/97/1e/98aaddf272552d9fef1f0296a9939d1487914a239e98678f6b20f8b0a5c8/numcodecs-0.16.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b554ab9ecf69de7ca2b6b5e8bc696bd9747559cb4dd5127bd08d7a28bec59c3a", size = 8534814, upload-time = "2025-11-21T02:49:28.547Z" }, + { url = "https://files.pythonhosted.org/packages/fb/53/78c98ef5c8b2b784453487f3e4d6c017b20747c58b470393e230c78d18e8/numcodecs-0.16.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad1a379a45bd3491deab8ae6548313946744f868c21d5340116977ea3be5b1d6", size = 9173471, upload-time = "2025-11-21T02:49:30.444Z" }, + { url = "https://files.pythonhosted.org/packages/1c/20/2fdec87fc7f8cec950d2b0bea603c12dc9f05b4966dc5924ba5a36a61bf6/numcodecs-0.16.5-cp312-cp312-win_amd64.whl", hash = "sha256:845a9857886ffe4a3172ba1c537ae5bcc01e65068c31cf1fce1a844bd1da050f", size = 801412, upload-time = "2025-11-21T02:49:32.123Z" }, { url = "https://files.pythonhosted.org/packages/38/38/071ced5a5fd1c85ba0e14ba721b66b053823e5176298c2f707e50bed11d9/numcodecs-0.16.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25be3a516ab677dad890760d357cfe081a371d9c0a2e9a204562318ac5969de3", size = 1654359, upload-time = "2025-11-21T02:49:33.673Z" }, { url = "https://files.pythonhosted.org/packages/d1/c0/5f84ba7525577c1b9909fc2d06ef11314825fc4ad4378f61d0e4c9883b4a/numcodecs-0.16.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0107e839ef75b854e969cb577e140b1aadb9847893937636582d23a2a4c6ce50", size = 1144237, upload-time = "2025-11-21T02:49:35.294Z" }, { url = "https://files.pythonhosted.org/packages/0b/00/787ea5f237b8ea7bc67140c99155f9c00b5baf11c49afc5f3bfefa298f95/numcodecs-0.16.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:015a7c859ecc2a06e2a548f64008c0ec3aaecabc26456c2c62f4278d8fc20597", size = 8483064, upload-time = "2025-11-21T02:49:36.454Z" }, @@ -2419,6 +2791,17 @@ version = "2.3.4" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/b5/f4/098d2270d52b41f1bd7db9fc288aaa0400cb48c2a3e2af6fa365d9720947/numpy-2.3.4.tar.gz", hash = "sha256:a7d018bfedb375a8d979ac758b120ba846a7fe764911a64465fd87b8729f4a6a", size = 20582187, upload-time = "2025-10-15T16:18:11.77Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/96/7a/02420400b736f84317e759291b8edaeee9dc921f72b045475a9cbdb26b17/numpy-2.3.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ef1b5a3e808bc40827b5fa2c8196151a4c5abe110e1726949d7abddfe5c7ae11", size = 20957727, upload-time = "2025-10-15T16:15:44.9Z" }, + { url = "https://files.pythonhosted.org/packages/18/90/a014805d627aa5750f6f0e878172afb6454552da929144b3c07fcae1bb13/numpy-2.3.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c2f91f496a87235c6aaf6d3f3d89b17dba64996abadccb289f48456cff931ca9", size = 14187262, upload-time = "2025-10-15T16:15:47.761Z" }, + { url = "https://files.pythonhosted.org/packages/c7/e4/0a94b09abe89e500dc748e7515f21a13e30c5c3fe3396e6d4ac108c25fca/numpy-2.3.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:f77e5b3d3da652b474cc80a14084927a5e86a5eccf54ca8ca5cbd697bf7f2667", size = 5115992, upload-time = "2025-10-15T16:15:50.144Z" }, + { url = "https://files.pythonhosted.org/packages/88/dd/db77c75b055c6157cbd4f9c92c4458daef0dd9cbe6d8d2fe7f803cb64c37/numpy-2.3.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8ab1c5f5ee40d6e01cbe96de5863e39b215a4d24e7d007cad56c7184fdf4aeef", size = 6648672, upload-time = "2025-10-15T16:15:52.442Z" }, + { url = "https://files.pythonhosted.org/packages/e1/e6/e31b0d713719610e406c0ea3ae0d90760465b086da8783e2fd835ad59027/numpy-2.3.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:77b84453f3adcb994ddbd0d1c5d11db2d6bda1a2b7fd5ac5bd4649d6f5dc682e", size = 14284156, upload-time = "2025-10-15T16:15:54.351Z" }, + { url = "https://files.pythonhosted.org/packages/f9/58/30a85127bfee6f108282107caf8e06a1f0cc997cb6b52cdee699276fcce4/numpy-2.3.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4121c5beb58a7f9e6dfdee612cb24f4df5cd4db6e8261d7f4d7450a997a65d6a", size = 16641271, upload-time = "2025-10-15T16:15:56.67Z" }, + { url = "https://files.pythonhosted.org/packages/06/f2/2e06a0f2adf23e3ae29283ad96959267938d0efd20a2e25353b70065bfec/numpy-2.3.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:65611ecbb00ac9846efe04db15cbe6186f562f6bb7e5e05f077e53a599225d16", size = 16059531, upload-time = "2025-10-15T16:15:59.412Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e7/b106253c7c0d5dc352b9c8fab91afd76a93950998167fa3e5afe4ef3a18f/numpy-2.3.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dabc42f9c6577bcc13001b8810d300fe814b4cfbe8a92c873f269484594f9786", size = 18578983, upload-time = "2025-10-15T16:16:01.804Z" }, + { url = "https://files.pythonhosted.org/packages/73/e3/04ecc41e71462276ee867ccbef26a4448638eadecf1bc56772c9ed6d0255/numpy-2.3.4-cp312-cp312-win32.whl", hash = "sha256:a49d797192a8d950ca59ee2d0337a4d804f713bb5c3c50e8db26d49666e351dc", size = 6291380, upload-time = "2025-10-15T16:16:03.938Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a8/566578b10d8d0e9955b1b6cd5db4e9d4592dd0026a941ff7994cedda030a/numpy-2.3.4-cp312-cp312-win_amd64.whl", hash = "sha256:985f1e46358f06c2a09921e8921e2c98168ed4ae12ccd6e5e87a4f1857923f32", size = 12787999, upload-time = "2025-10-15T16:16:05.801Z" }, + { url = "https://files.pythonhosted.org/packages/58/22/9c903a957d0a8071b607f5b1bff0761d6e608b9a965945411f867d515db1/numpy-2.3.4-cp312-cp312-win_arm64.whl", hash = "sha256:4635239814149e06e2cb9db3dd584b2fa64316c96f10656983b8026a82e6e4db", size = 10197412, upload-time = "2025-10-15T16:16:07.854Z" }, { url = "https://files.pythonhosted.org/packages/57/7e/b72610cc91edf138bc588df5150957a4937221ca6058b825b4725c27be62/numpy-2.3.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c090d4860032b857d94144d1a9976b8e36709e40386db289aaf6672de2a81966", size = 20950335, upload-time = "2025-10-15T16:16:10.304Z" }, { url = "https://files.pythonhosted.org/packages/3e/46/bdd3370dcea2f95ef14af79dbf81e6927102ddf1cc54adc0024d61252fd9/numpy-2.3.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a13fc473b6db0be619e45f11f9e81260f7302f8d180c49a22b6e6120022596b3", size = 14179878, upload-time = "2025-10-15T16:16:12.595Z" }, { url = "https://files.pythonhosted.org/packages/ac/01/5a67cb785bda60f45415d09c2bc245433f1c68dd82eef9c9002c508b5a65/numpy-2.3.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:3634093d0b428e6c32c3a69b78e554f0cd20ee420dcad5a9f3b2a63762ce4197", size = 5108673, upload-time = "2025-10-15T16:16:14.877Z" }, @@ -2478,8 +2861,24 @@ wheels = [ name = "obstore" version = "0.8.2" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] sdist = { url = "https://files.pythonhosted.org/packages/a3/8c/9ec984edd0f3b72226adfaa19b1c61b15823b35b52f311ca4af36d009d15/obstore-0.8.2.tar.gz", hash = "sha256:a467bc4e97169e2ba749981b4fd0936015428d9b8f3fb83a5528536b1b6f377f", size = 168852, upload-time = "2025-09-16T15:34:55.786Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/dc/60fefbb5736e69eab56657bca04ca64dc07fdeccb3814164a31b62ad066b/obstore-0.8.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:bb70ce297a47392b1d9a3e310f18d59cd5ebbb9453428210fef02ed60e4d75d1", size = 3612955, upload-time = "2025-09-16T15:33:29.527Z" }, + { url = "https://files.pythonhosted.org/packages/d2/8b/844e8f382e5a12b8a3796a05d76a03e12c7aedc13d6900419e39207d7868/obstore-0.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1619bf618428abf1f607e0b219b2e230a966dcf697b717deccfa0983dd91f646", size = 3346564, upload-time = "2025-09-16T15:33:30.698Z" }, + { url = "https://files.pythonhosted.org/packages/89/73/8537f99e09a38a54a6a15ede907aa25d4da089f767a808f0b2edd9c03cec/obstore-0.8.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a4605c3ed7c9515aeb4c619b5f7f2c9986ed4a79fe6045e536b5e59b804b1476", size = 3460809, upload-time = "2025-09-16T15:33:31.837Z" }, + { url = "https://files.pythonhosted.org/packages/b4/99/7714dec721e43f521d6325a82303a002cddad089437640f92542b84e9cc8/obstore-0.8.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce42670417876dd8668cbb8659e860e9725e5f26bbc86449fd259970e2dd9d18", size = 3692081, upload-time = "2025-09-16T15:33:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/ec/bd/4ac4175fe95a24c220a96021c25c432bcc0c0212f618be0737184eebbaad/obstore-0.8.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4a3e893b2a06585f651c541c1972fe1e3bf999ae2a5fda052ee55eb7e6516f5", size = 3957466, upload-time = "2025-09-16T15:33:34.528Z" }, + { url = "https://files.pythonhosted.org/packages/4e/04/caa288fb735484fc5cb019bdf3d896eaccfae0ac4622e520d05692c46790/obstore-0.8.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08462b32f95a9948ed56ed63e88406e2e5a4cae1fde198f9682e0fb8487100ed", size = 3951293, upload-time = "2025-09-16T15:33:35.733Z" }, + { url = "https://files.pythonhosted.org/packages/44/2f/d380239da2d6a1fda82e17df5dae600a404e8a93a065784518ff8325d5f6/obstore-0.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a0bf7763292a8fc47d01cd66e6f19002c5c6ad4b3ed4e6b2729f5e190fa8a0d", size = 3766199, upload-time = "2025-09-16T15:33:36.904Z" }, + { url = "https://files.pythonhosted.org/packages/28/41/d391be069d3da82969b54266948b2582aeca5dd735abeda4d63dba36e07b/obstore-0.8.2-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:bcd47f8126cb192cbe86942b8f73b1c45a651ce7e14c9a82c5641dfbf8be7603", size = 3529678, upload-time = "2025-09-16T15:33:38.221Z" }, + { url = "https://files.pythonhosted.org/packages/b9/4c/4862fdd1a3abde459ee8eea699b1797df638a460af235b18ca82c8fffb72/obstore-0.8.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:57eda9fd8c757c3b4fe36cf3918d7e589cc1286591295cc10b34122fa36dd3fd", size = 3698079, upload-time = "2025-09-16T15:33:39.696Z" }, + { url = "https://files.pythonhosted.org/packages/68/ca/014e747bc53b570059c27e3565b2316fbe5c107d4134551f4cd3e24aa667/obstore-0.8.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ea44442aad8992166baa69f5069750979e4c5d9ffce772e61565945eea5774b9", size = 3687154, upload-time = "2025-09-16T15:33:40.92Z" }, + { url = "https://files.pythonhosted.org/packages/6f/89/6db5f8edd93028e5b8bfbeee15e6bd3e56f72106107d31cb208b57659de4/obstore-0.8.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:41496a3ab8527402db4142aaaf0d42df9d7d354b13ba10d9c33e0e48dd49dd96", size = 3773444, upload-time = "2025-09-16T15:33:42.123Z" }, + { url = "https://files.pythonhosted.org/packages/26/e5/c9e2cc540689c873beb61246e1615d6e38301e6a34dec424f5a5c63c1afd/obstore-0.8.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:43da209803f052df96c7c3cbec512d310982efd2407e4a435632841a51143170", size = 3939315, upload-time = "2025-09-16T15:33:43.252Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c9/bb53280ca50103c1ffda373cdc9b0f835431060039c2897cbc87ddd92e42/obstore-0.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:1836f5dcd49f9f2950c75889ab5c51fb290d3ea93cdc39a514541e0be3af016e", size = 3978234, upload-time = "2025-09-16T15:33:44.393Z" }, { url = "https://files.pythonhosted.org/packages/f0/5d/8c3316cc958d386d5e6ab03e9db9ddc27f8e2141cee4a6777ae5b92f3aac/obstore-0.8.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:212f033e53fe6e53d64957923c5c88949a400e9027f7038c705ec2e9038be563", size = 3612027, upload-time = "2025-09-16T15:33:45.6Z" }, { url = "https://files.pythonhosted.org/packages/ea/4d/699359774ce6330130536d008bfc32827fab0c25a00238d015a5974a3d1d/obstore-0.8.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bee21fa4ba148d08fa90e47a96df11161661ed31e09c056a373cb2154b0f2852", size = 3344686, upload-time = "2025-09-16T15:33:47.185Z" }, { url = "https://files.pythonhosted.org/packages/82/37/55437341f10512906e02fd9fa69a8a95ad3f2f6a916d3233fda01763d110/obstore-0.8.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4c66594b59832ff1ced4c72575d9beb8b5f9b4e404ac1150a42bfb226617fd50", size = 3459860, upload-time = "2025-09-16T15:33:48.382Z" }, @@ -2507,6 +2906,46 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/14/dd/7c4f958fa0b9fc4778fb3d232e38b37db8c6b260f641022fbba48b049d7e/obstore-0.8.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:9e1c65c65e20cc990414a8a9af88209b1bbc0dd9521b5f6b0293c60e19439bb7", size = 3947445, upload-time = "2025-09-16T15:34:17.423Z" }, ] +[[package]] +name = "opentelemetry-api" +version = "1.39.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/97/b9/3161be15bb8e3ad01be8be5a968a9237c3027c5be504362ff800fca3e442/opentelemetry_api-1.39.1.tar.gz", hash = "sha256:fbde8c80e1b937a2c61f20347e91c0c18a1940cecf012d62e65a7caf08967c9c", size = 65767, upload-time = "2025-12-11T13:32:39.182Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl", hash = "sha256:2edd8463432a7f8443edce90972169b195e7d6a05500cd29e6d13898187c9950", size = 66356, upload-time = "2025-12-11T13:32:17.304Z" }, +] + +[[package]] +name = "opentelemetry-sdk" +version = "1.39.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/fb/c76080c9ba07e1e8235d24cdcc4d125ef7aa3edf23eb4e497c2e50889adc/opentelemetry_sdk-1.39.1.tar.gz", hash = "sha256:cf4d4563caf7bff906c9f7967e2be22d0d6b349b908be0d90fb21c8e9c995cc6", size = 171460, upload-time = "2025-12-11T13:32:49.369Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/98/e91cf858f203d86f4eccdf763dcf01cf03f1dae80c3750f7e635bfa206b6/opentelemetry_sdk-1.39.1-py3-none-any.whl", hash = "sha256:4d5482c478513ecb0a5d938dcc61394e647066e0cc2676bee9f3af3f3f45f01c", size = 132565, upload-time = "2025-12-11T13:32:35.069Z" }, +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.60b1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/df/553f93ed38bf22f4b999d9be9c185adb558982214f33eae539d3b5cd0858/opentelemetry_semantic_conventions-0.60b1.tar.gz", hash = "sha256:87c228b5a0669b748c76d76df6c364c369c28f1c465e50f661e39737e84bc953", size = 137935, upload-time = "2025-12-11T13:32:50.487Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl", hash = "sha256:9fa8c8b0c110da289809292b0591220d3a7b53c1526a23021e977d68597893fb", size = 219982, upload-time = "2025-12-11T13:32:36.955Z" }, +] + [[package]] name = "packaging" version = "25.0" @@ -2528,6 +2967,13 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", hash = "sha256:e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b", size = 4495223, upload-time = "2025-09-29T23:34:51.853Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/fb/231d89e8637c808b997d172b18e9d4a4bc7bf31296196c260526055d1ea0/pandas-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d21f6d74eb1725c2efaa71a2bfc661a0689579b58e9c0ca58a739ff0b002b53", size = 11597846, upload-time = "2025-09-29T23:19:48.856Z" }, + { url = "https://files.pythonhosted.org/packages/5c/bd/bf8064d9cfa214294356c2d6702b716d3cf3bb24be59287a6a21e24cae6b/pandas-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3fd2f887589c7aa868e02632612ba39acb0b8948faf5cc58f0850e165bd46f35", size = 10729618, upload-time = "2025-09-29T23:39:08.659Z" }, + { url = "https://files.pythonhosted.org/packages/57/56/cf2dbe1a3f5271370669475ead12ce77c61726ffd19a35546e31aa8edf4e/pandas-2.3.3-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecaf1e12bdc03c86ad4a7ea848d66c685cb6851d807a26aa245ca3d2017a1908", size = 11737212, upload-time = "2025-09-29T23:19:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/e5/63/cd7d615331b328e287d8233ba9fdf191a9c2d11b6af0c7a59cfcec23de68/pandas-2.3.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b3d11d2fda7eb164ef27ffc14b4fcab16a80e1ce67e9f57e19ec0afaf715ba89", size = 12362693, upload-time = "2025-09-29T23:20:14.098Z" }, + { url = "https://files.pythonhosted.org/packages/a6/de/8b1895b107277d52f2b42d3a6806e69cfef0d5cf1d0ba343470b9d8e0a04/pandas-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a68e15f780eddf2b07d242e17a04aa187a7ee12b40b930bfdd78070556550e98", size = 12771002, upload-time = "2025-09-29T23:20:26.76Z" }, + { url = "https://files.pythonhosted.org/packages/87/21/84072af3187a677c5893b170ba2c8fbe450a6ff911234916da889b698220/pandas-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:371a4ab48e950033bcf52b6527eccb564f52dc826c02afd9a1bc0ab731bba084", size = 13450971, upload-time = "2025-09-29T23:20:41.344Z" }, + { url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b", size = 10992722, upload-time = "2025-09-29T23:20:54.139Z" }, { url = "https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713", size = 11544671, upload-time = "2025-09-29T23:21:05.024Z" }, { url = "https://files.pythonhosted.org/packages/31/94/72fac03573102779920099bcac1c3b05975c2cb5f01eac609faf34bed1ca/pandas-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdcd9d1167f4885211e401b3036c0c8d9e274eee67ea8d0758a256d60704cfe8", size = 10680807, upload-time = "2025-09-29T23:21:15.979Z" }, { url = "https://files.pythonhosted.org/packages/16/87/9472cf4a487d848476865321de18cc8c920b8cab98453ab79dbbc98db63a/pandas-2.3.3-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e32e7cc9af0f1cc15548288a51a3b681cc2a219faa838e995f7dc53dbab1062d", size = 11709872, upload-time = "2025-09-29T23:21:27.165Z" }, @@ -2671,6 +3117,17 @@ version = "12.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/cace85a1b0c9775a9f8f5d5423c8261c858760e2466c79b2dd184638b056/pillow-12.0.0.tar.gz", hash = "sha256:87d4f8125c9988bfbed67af47dd7a953e2fc7b0cc1e7800ec6d2080d490bb353", size = 47008828, upload-time = "2025-10-15T18:24:14.008Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/90/4fcce2c22caf044e660a198d740e7fbc14395619e3cb1abad12192c0826c/pillow-12.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53561a4ddc36facb432fae7a9d8afbfaf94795414f5cdc5fc52f28c1dca90371", size = 5249377, upload-time = "2025-10-15T18:22:05.993Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e0/ed960067543d080691d47d6938ebccbf3976a931c9567ab2fbfab983a5dd/pillow-12.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71db6b4c1653045dacc1585c1b0d184004f0d7e694c7b34ac165ca70c0838082", size = 4650343, upload-time = "2025-10-15T18:22:07.718Z" }, + { url = "https://files.pythonhosted.org/packages/e7/a1/f81fdeddcb99c044bf7d6faa47e12850f13cee0849537a7d27eeab5534d4/pillow-12.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2fa5f0b6716fc88f11380b88b31fe591a06c6315e955c096c35715788b339e3f", size = 6232981, upload-time = "2025-10-15T18:22:09.287Z" }, + { url = "https://files.pythonhosted.org/packages/88/e1/9098d3ce341a8750b55b0e00c03f1630d6178f38ac191c81c97a3b047b44/pillow-12.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:82240051c6ca513c616f7f9da06e871f61bfd7805f566275841af15015b8f98d", size = 8041399, upload-time = "2025-10-15T18:22:10.872Z" }, + { url = "https://files.pythonhosted.org/packages/a7/62/a22e8d3b602ae8cc01446d0c57a54e982737f44b6f2e1e019a925143771d/pillow-12.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55f818bd74fe2f11d4d7cbc65880a843c4075e0ac7226bc1a23261dbea531953", size = 6347740, upload-time = "2025-10-15T18:22:12.769Z" }, + { url = "https://files.pythonhosted.org/packages/4f/87/424511bdcd02c8d7acf9f65caa09f291a519b16bd83c3fb3374b3d4ae951/pillow-12.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b87843e225e74576437fd5b6a4c2205d422754f84a06942cfaf1dc32243e45a8", size = 7040201, upload-time = "2025-10-15T18:22:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4d/435c8ac688c54d11755aedfdd9f29c9eeddf68d150fe42d1d3dbd2365149/pillow-12.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c607c90ba67533e1b2355b821fef6764d1dd2cbe26b8c1005ae84f7aea25ff79", size = 6462334, upload-time = "2025-10-15T18:22:16.375Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f2/ad34167a8059a59b8ad10bc5c72d4d9b35acc6b7c0877af8ac885b5f2044/pillow-12.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21f241bdd5080a15bc86d3466a9f6074a9c2c2b314100dd896ac81ee6db2f1ba", size = 7134162, upload-time = "2025-10-15T18:22:17.996Z" }, + { url = "https://files.pythonhosted.org/packages/0c/b1/a7391df6adacf0a5c2cf6ac1cf1fcc1369e7d439d28f637a847f8803beb3/pillow-12.0.0-cp312-cp312-win32.whl", hash = "sha256:dd333073e0cacdc3089525c7df7d39b211bcdf31fc2824e49d01c6b6187b07d0", size = 6298769, upload-time = "2025-10-15T18:22:19.923Z" }, + { url = "https://files.pythonhosted.org/packages/a2/0b/d87733741526541c909bbf159e338dcace4f982daac6e5a8d6be225ca32d/pillow-12.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9fe611163f6303d1619bbcb653540a4d60f9e55e622d60a3108be0d5b441017a", size = 7001107, upload-time = "2025-10-15T18:22:21.644Z" }, + { url = "https://files.pythonhosted.org/packages/bc/96/aaa61ce33cc98421fb6088af2a03be4157b1e7e0e87087c888e2370a7f45/pillow-12.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:7dfb439562f234f7d57b1ac6bc8fe7f838a4bd49c79230e0f6a1da93e82f1fad", size = 2436012, upload-time = "2025-10-15T18:22:23.621Z" }, { url = "https://files.pythonhosted.org/packages/62/f2/de993bb2d21b33a98d031ecf6a978e4b61da207bef02f7b43093774c480d/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:0869154a2d0546545cde61d1789a6524319fc1897d9ee31218eae7a60ccc5643", size = 4045493, upload-time = "2025-10-15T18:22:25.758Z" }, { url = "https://files.pythonhosted.org/packages/0e/b6/bc8d0c4c9f6f111a783d045310945deb769b806d7574764234ffd50bc5ea/pillow-12.0.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:a7921c5a6d31b3d756ec980f2f47c0cfdbce0fc48c22a39347a895f41f4a6ea4", size = 4120461, upload-time = "2025-10-15T18:22:27.286Z" }, { url = "https://files.pythonhosted.org/packages/5d/57/d60d343709366a353dc56adb4ee1e7d8a2cc34e3fbc22905f4167cfec119/pillow-12.0.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:1ee80a59f6ce048ae13cda1abf7fbd2a34ab9ee7d401c46be3ca685d1999a399", size = 3576912, upload-time = "2025-10-15T18:22:28.751Z" }, @@ -2790,6 +3247,21 @@ version = "0.4.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/9e/da/e9fc233cf63743258bff22b3dfa7ea5baef7b5bc324af47a0ad89b8ffc6f/propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d", size = 46442, upload-time = "2025-10-08T19:49:02.291Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/0f/f17b1b2b221d5ca28b4b876e8bb046ac40466513960646bda8e1853cdfa2/propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2", size = 80061, upload-time = "2025-10-08T19:46:46.075Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/8ccf75935f51448ba9a16a71b783eb7ef6b9ee60f5d14c7f8a8a79fbeed7/propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403", size = 46037, upload-time = "2025-10-08T19:46:47.23Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b6/5c9a0e42df4d00bfb4a3cbbe5cf9f54260300c88a0e9af1f47ca5ce17ac0/propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207", size = 47324, upload-time = "2025-10-08T19:46:48.384Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d3/6c7ee328b39a81ee877c962469f1e795f9db87f925251efeb0545e0020d0/propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72", size = 225505, upload-time = "2025-10-08T19:46:50.055Z" }, + { url = "https://files.pythonhosted.org/packages/01/5d/1c53f4563490b1d06a684742cc6076ef944bc6457df6051b7d1a877c057b/propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367", size = 230242, upload-time = "2025-10-08T19:46:51.815Z" }, + { url = "https://files.pythonhosted.org/packages/20/e1/ce4620633b0e2422207c3cb774a0ee61cac13abc6217763a7b9e2e3f4a12/propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4", size = 238474, upload-time = "2025-10-08T19:46:53.208Z" }, + { url = "https://files.pythonhosted.org/packages/46/4b/3aae6835b8e5f44ea6a68348ad90f78134047b503765087be2f9912140ea/propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf", size = 221575, upload-time = "2025-10-08T19:46:54.511Z" }, + { url = "https://files.pythonhosted.org/packages/6e/a5/8a5e8678bcc9d3a1a15b9a29165640d64762d424a16af543f00629c87338/propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3", size = 216736, upload-time = "2025-10-08T19:46:56.212Z" }, + { url = "https://files.pythonhosted.org/packages/f1/63/b7b215eddeac83ca1c6b934f89d09a625aa9ee4ba158338854c87210cc36/propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778", size = 213019, upload-time = "2025-10-08T19:46:57.595Z" }, + { url = "https://files.pythonhosted.org/packages/57/74/f580099a58c8af587cac7ba19ee7cb418506342fbbe2d4a4401661cca886/propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6", size = 220376, upload-time = "2025-10-08T19:46:59.067Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ee/542f1313aff7eaf19c2bb758c5d0560d2683dac001a1c96d0774af799843/propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9", size = 226988, upload-time = "2025-10-08T19:47:00.544Z" }, + { url = "https://files.pythonhosted.org/packages/8f/18/9c6b015dd9c6930f6ce2229e1f02fb35298b847f2087ea2b436a5bfa7287/propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75", size = 215615, upload-time = "2025-10-08T19:47:01.968Z" }, + { url = "https://files.pythonhosted.org/packages/80/9e/e7b85720b98c45a45e1fca6a177024934dc9bc5f4d5dd04207f216fc33ed/propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8", size = 38066, upload-time = "2025-10-08T19:47:03.503Z" }, + { url = "https://files.pythonhosted.org/packages/54/09/d19cff2a5aaac632ec8fc03737b223597b1e347416934c1b3a7df079784c/propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db", size = 41655, upload-time = "2025-10-08T19:47:04.973Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/6b5c191bb5de08036a8c697b265d4ca76148efb10fa162f14af14fb5f076/propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1", size = 37789, upload-time = "2025-10-08T19:47:06.077Z" }, { url = "https://files.pythonhosted.org/packages/bf/df/6d9c1b6ac12b003837dde8a10231a7344512186e87b36e855bef32241942/propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf", size = 77750, upload-time = "2025-10-08T19:47:07.648Z" }, { url = "https://files.pythonhosted.org/packages/8b/e8/677a0025e8a2acf07d3418a2e7ba529c9c33caf09d3c1f25513023c1db56/propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311", size = 44780, upload-time = "2025-10-08T19:47:08.851Z" }, { url = "https://files.pythonhosted.org/packages/89/a4/92380f7ca60f99ebae761936bc48a72a639e8a47b29050615eef757cb2a7/propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74", size = 46308, upload-time = "2025-10-08T19:47:09.982Z" }, @@ -2939,6 +3411,13 @@ version = "22.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/30/53/04a7fdc63e6056116c9ddc8b43bc28c12cdd181b85cbeadb79278475f3ae/pyarrow-22.0.0.tar.gz", hash = "sha256:3d600dc583260d845c7d8a6db540339dd883081925da2bd1c5cb808f720b3cd9", size = 1151151, upload-time = "2025-10-24T12:30:00.762Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/af/63/ba23862d69652f85b615ca14ad14f3bcfc5bf1b99ef3f0cd04ff93fdad5a/pyarrow-22.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:bea79263d55c24a32b0d79c00a1c58bb2ee5f0757ed95656b01c0fb310c5af3d", size = 34211578, upload-time = "2025-10-24T10:05:21.583Z" }, + { url = "https://files.pythonhosted.org/packages/b1/d0/f9ad86fe809efd2bcc8be32032fa72e8b0d112b01ae56a053006376c5930/pyarrow-22.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:12fe549c9b10ac98c91cf791d2945e878875d95508e1a5d14091a7aaa66d9cf8", size = 35989906, upload-time = "2025-10-24T10:05:29.485Z" }, + { url = "https://files.pythonhosted.org/packages/b4/a8/f910afcb14630e64d673f15904ec27dd31f1e009b77033c365c84e8c1e1d/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:334f900ff08ce0423407af97e6c26ad5d4e3b0763645559ece6fbf3747d6a8f5", size = 45021677, upload-time = "2025-10-24T10:05:38.274Z" }, + { url = "https://files.pythonhosted.org/packages/13/95/aec81f781c75cd10554dc17a25849c720d54feafb6f7847690478dcf5ef8/pyarrow-22.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c6c791b09c57ed76a18b03f2631753a4960eefbbca80f846da8baefc6491fcfe", size = 47726315, upload-time = "2025-10-24T10:05:47.314Z" }, + { url = "https://files.pythonhosted.org/packages/bb/d4/74ac9f7a54cfde12ee42734ea25d5a3c9a45db78f9def949307a92720d37/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c3200cb41cdbc65156e5f8c908d739b0dfed57e890329413da2748d1a2cd1a4e", size = 47990906, upload-time = "2025-10-24T10:05:58.254Z" }, + { url = "https://files.pythonhosted.org/packages/2e/71/fedf2499bf7a95062eafc989ace56572f3343432570e1c54e6599d5b88da/pyarrow-22.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac93252226cf288753d8b46280f4edf3433bf9508b6977f8dd8526b521a1bbb9", size = 50306783, upload-time = "2025-10-24T10:06:08.08Z" }, + { url = "https://files.pythonhosted.org/packages/68/ed/b202abd5a5b78f519722f3d29063dda03c114711093c1995a33b8e2e0f4b/pyarrow-22.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:44729980b6c50a5f2bfcc2668d36c569ce17f8b17bccaf470c4313dcbbf13c9d", size = 27972883, upload-time = "2025-10-24T10:06:14.204Z" }, { url = "https://files.pythonhosted.org/packages/a6/d6/d0fac16a2963002fc22c8fa75180a838737203d558f0ed3b564c4a54eef5/pyarrow-22.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e6e95176209257803a8b3d0394f21604e796dadb643d2f7ca21b66c9c0b30c9a", size = 34204629, upload-time = "2025-10-24T10:06:20.274Z" }, { url = "https://files.pythonhosted.org/packages/c6/9c/1d6357347fbae062ad3f17082f9ebc29cc733321e892c0d2085f42a2212b/pyarrow-22.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:001ea83a58024818826a9e3f89bf9310a114f7e26dfe404a4c32686f97bd7901", size = 35985783, upload-time = "2025-10-24T10:06:27.301Z" }, { url = "https://files.pythonhosted.org/packages/ff/c0/782344c2ce58afbea010150df07e3a2f5fdad299cd631697ae7bd3bac6e3/pyarrow-22.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ce20fe000754f477c8a9125543f1936ea5b8867c5406757c224d745ed033e691", size = 45020999, upload-time = "2025-10-24T10:06:35.387Z" }, @@ -3063,6 +3542,15 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/04/90/67bd7260b4ea9b8b20b4f58afef6c223ecb3abf368eb4ec5bc2cdef81b49/pyproj-3.7.2.tar.gz", hash = "sha256:39a0cf1ecc7e282d1d30f36594ebd55c9fae1fda8a2622cee5d100430628f88c", size = 226279, upload-time = "2025-08-14T12:05:42.18Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/ab/9893ea9fb066be70ed9074ae543914a618c131ed8dff2da1e08b3a4df4db/pyproj-3.7.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:0a9bb26a6356fb5b033433a6d1b4542158fb71e3c51de49b4c318a1dff3aeaab", size = 6219832, upload-time = "2025-08-14T12:04:10.264Z" }, + { url = "https://files.pythonhosted.org/packages/53/78/4c64199146eed7184eb0e85bedec60a4aa8853b6ffe1ab1f3a8b962e70a0/pyproj-3.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:567caa03021178861fad27fabde87500ec6d2ee173dd32f3e2d9871e40eebd68", size = 4620650, upload-time = "2025-08-14T12:04:11.978Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ac/14a78d17943898a93ef4f8c6a9d4169911c994e3161e54a7cedeba9d8dde/pyproj-3.7.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:c203101d1dc3c038a56cff0447acc515dd29d6e14811406ac539c21eed422b2a", size = 9667087, upload-time = "2025-08-14T12:04:13.964Z" }, + { url = "https://files.pythonhosted.org/packages/b8/be/212882c450bba74fc8d7d35cbd57e4af84792f0a56194819d98106b075af/pyproj-3.7.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1edc34266c0c23ced85f95a1ee8b47c9035eae6aca5b6b340327250e8e281630", size = 9552797, upload-time = "2025-08-14T12:04:16.624Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c0/c0f25c87b5d2a8686341c53c1792a222a480d6c9caf60311fec12c99ec26/pyproj-3.7.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aa9f26c21bc0e2dc3d224cb1eb4020cf23e76af179a7c66fea49b828611e4260", size = 10837036, upload-time = "2025-08-14T12:04:18.733Z" }, + { url = "https://files.pythonhosted.org/packages/5d/37/5cbd6772addde2090c91113332623a86e8c7d583eccb2ad02ea634c4a89f/pyproj-3.7.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9428b318530625cb389b9ddc9c51251e172808a4af79b82809376daaeabe5e9", size = 10775952, upload-time = "2025-08-14T12:04:20.709Z" }, + { url = "https://files.pythonhosted.org/packages/69/a1/dc250e3cf83eb4b3b9a2cf86fdb5e25288bd40037ae449695550f9e96b2f/pyproj-3.7.2-cp312-cp312-win32.whl", hash = "sha256:b3d99ed57d319da042f175f4554fc7038aa4bcecc4ac89e217e350346b742c9d", size = 5898872, upload-time = "2025-08-14T12:04:22.485Z" }, + { url = "https://files.pythonhosted.org/packages/4a/a6/6fe724b72b70f2b00152d77282e14964d60ab092ec225e67c196c9b463e5/pyproj-3.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:11614a054cd86a2ed968a657d00987a86eeb91fdcbd9ad3310478685dc14a128", size = 6312176, upload-time = "2025-08-14T12:04:24.736Z" }, + { url = "https://files.pythonhosted.org/packages/5d/68/915cc32c02a91e76d02c8f55d5a138d6ef9e47a0d96d259df98f4842e558/pyproj-3.7.2-cp312-cp312-win_arm64.whl", hash = "sha256:509a146d1398bafe4f53273398c3bb0b4732535065fa995270e52a9d3676bca3", size = 6233452, upload-time = "2025-08-14T12:04:27.287Z" }, { url = "https://files.pythonhosted.org/packages/be/14/faf1b90d267cea68d7e70662e7f88cefdb1bc890bd596c74b959e0517a72/pyproj-3.7.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19466e529b1b15eeefdf8ff26b06fa745856c044f2f77bf0edbae94078c1dfa1", size = 6214580, upload-time = "2025-08-14T12:04:28.804Z" }, { url = "https://files.pythonhosted.org/packages/35/48/da9a45b184d375f62667f62eba0ca68569b0bd980a0bb7ffcc1d50440520/pyproj-3.7.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:c79b9b84c4a626c5dc324c0d666be0bfcebd99f7538d66e8898c2444221b3da7", size = 4615388, upload-time = "2025-08-14T12:04:30.553Z" }, { url = "https://files.pythonhosted.org/packages/5e/e7/d2b459a4a64bca328b712c1b544e109df88e5c800f7c143cfbc404d39bfb/pyproj-3.7.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:ceecf374cacca317bc09e165db38ac548ee3cad07c3609442bd70311c59c21aa", size = 9628455, upload-time = "2025-08-14T12:04:32.435Z" }, @@ -3179,6 +3667,7 @@ version = "3.0.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f3/bb/a7cc2967c5c4eceb6cc49cfe39447d4bfc56e6c865e7c2249b6eb978935f/pywinpty-3.0.2.tar.gz", hash = "sha256:1505cc4cb248af42cb6285a65c9c2086ee9e7e574078ee60933d5d7fa86fb004", size = 30669, upload-time = "2025-10-03T21:16:29.205Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/02/4e/1098484e042c9485f56f16eb2b69b43b874bd526044ee401512234cf9e04/pywinpty-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:99fdd9b455f0ad6419aba6731a7a0d2f88ced83c3c94a80ff9533d95fa8d8a9e", size = 2050391, upload-time = "2025-10-03T21:19:01.642Z" }, { url = "https://files.pythonhosted.org/packages/fc/19/b757fe28008236a4a713e813283721b8a40aa60cd7d3f83549f2e25a3155/pywinpty-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:18f78b81e4cfee6aabe7ea8688441d30247b73e52cd9657138015c5f4ee13a51", size = 2050057, upload-time = "2025-10-03T21:19:26.732Z" }, { url = "https://files.pythonhosted.org/packages/cb/44/cbae12ecf6f4fa4129c36871fd09c6bef4f98d5f625ecefb5e2449765508/pywinpty-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:663383ecfab7fc382cc97ea5c4f7f0bb32c2f889259855df6ea34e5df42d305b", size = 2049874, upload-time = "2025-10-03T21:18:53.923Z" }, { url = "https://files.pythonhosted.org/packages/ca/15/f12c6055e2d7a617d4d5820e8ac4ceaff849da4cb124640ef5116a230771/pywinpty-3.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:28297cecc37bee9f24d8889e47231972d6e9e84f7b668909de54f36ca785029a", size = 2050386, upload-time = "2025-10-03T21:18:50.477Z" }, @@ -3191,6 +3680,16 @@ version = "6.0.3" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, @@ -3271,6 +3770,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } wheels = [ @@ -3357,6 +3857,21 @@ version = "0.28.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/48/dc/95f074d43452b3ef5d06276696ece4b3b5d696e7c9ad7173c54b1390cd70/rpds_py-0.28.0.tar.gz", hash = "sha256:abd4df20485a0983e2ca334a216249b6186d6e3c1627e106651943dbdb791aea", size = 27419, upload-time = "2025-10-22T22:24:29.327Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/5c/6c3936495003875fe7b14f90ea812841a08fca50ab26bd840e924097d9c8/rpds_py-0.28.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6b4f28583a4f247ff60cd7bdda83db8c3f5b05a7a82ff20dd4b078571747708f", size = 366439, upload-time = "2025-10-22T22:22:04.525Z" }, + { url = "https://files.pythonhosted.org/packages/56/f9/a0f1ca194c50aa29895b442771f036a25b6c41a35e4f35b1a0ea713bedae/rpds_py-0.28.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d678e91b610c29c4b3d52a2c148b641df2b4676ffe47c59f6388d58b99cdc424", size = 348170, upload-time = "2025-10-22T22:22:06.397Z" }, + { url = "https://files.pythonhosted.org/packages/18/ea/42d243d3a586beb72c77fa5def0487daf827210069a95f36328e869599ea/rpds_py-0.28.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e819e0e37a44a78e1383bf1970076e2ccc4dc8c2bbaa2f9bd1dc987e9afff628", size = 378838, upload-time = "2025-10-22T22:22:07.932Z" }, + { url = "https://files.pythonhosted.org/packages/e7/78/3de32e18a94791af8f33601402d9d4f39613136398658412a4e0b3047327/rpds_py-0.28.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5ee514e0f0523db5d3fb171f397c54875dbbd69760a414dccf9d4d7ad628b5bd", size = 393299, upload-time = "2025-10-22T22:22:09.435Z" }, + { url = "https://files.pythonhosted.org/packages/13/7e/4bdb435afb18acea2eb8a25ad56b956f28de7c59f8a1d32827effa0d4514/rpds_py-0.28.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f3fa06d27fdcee47f07a39e02862da0100cb4982508f5ead53ec533cd5fe55e", size = 518000, upload-time = "2025-10-22T22:22:11.326Z" }, + { url = "https://files.pythonhosted.org/packages/31/d0/5f52a656875cdc60498ab035a7a0ac8f399890cc1ee73ebd567bac4e39ae/rpds_py-0.28.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:46959ef2e64f9e4a41fc89aa20dbca2b85531f9a72c21099a3360f35d10b0d5a", size = 408746, upload-time = "2025-10-22T22:22:13.143Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/49ce51767b879cde77e7ad9fae164ea15dce3616fe591d9ea1df51152706/rpds_py-0.28.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8455933b4bcd6e83fde3fefc987a023389c4b13f9a58c8d23e4b3f6d13f78c84", size = 386379, upload-time = "2025-10-22T22:22:14.602Z" }, + { url = "https://files.pythonhosted.org/packages/6a/99/e4e1e1ee93a98f72fc450e36c0e4d99c35370220e815288e3ecd2ec36a2a/rpds_py-0.28.0-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:ad50614a02c8c2962feebe6012b52f9802deec4263946cddea37aaf28dd25a66", size = 401280, upload-time = "2025-10-22T22:22:16.063Z" }, + { url = "https://files.pythonhosted.org/packages/61/35/e0c6a57488392a8b319d2200d03dad2b29c0db9996f5662c3b02d0b86c02/rpds_py-0.28.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5deca01b271492553fdb6c7fd974659dce736a15bae5dad7ab8b93555bceb28", size = 412365, upload-time = "2025-10-22T22:22:17.504Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6a/841337980ea253ec797eb084665436007a1aad0faac1ba097fb906c5f69c/rpds_py-0.28.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:735f8495a13159ce6a0d533f01e8674cec0c57038c920495f87dcb20b3ddb48a", size = 559573, upload-time = "2025-10-22T22:22:19.108Z" }, + { url = "https://files.pythonhosted.org/packages/e7/5e/64826ec58afd4c489731f8b00729c5f6afdb86f1df1df60bfede55d650bb/rpds_py-0.28.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:961ca621ff10d198bbe6ba4957decca61aa2a0c56695384c1d6b79bf61436df5", size = 583973, upload-time = "2025-10-22T22:22:20.768Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ee/44d024b4843f8386a4eeaa4c171b3d31d55f7177c415545fd1a24c249b5d/rpds_py-0.28.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2374e16cc9131022e7d9a8f8d65d261d9ba55048c78f3b6e017971a4f5e6353c", size = 553800, upload-time = "2025-10-22T22:22:22.25Z" }, + { url = "https://files.pythonhosted.org/packages/7d/89/33e675dccff11a06d4d85dbb4d1865f878d5020cbb69b2c1e7b2d3f82562/rpds_py-0.28.0-cp312-cp312-win32.whl", hash = "sha256:d15431e334fba488b081d47f30f091e5d03c18527c325386091f31718952fe08", size = 216954, upload-time = "2025-10-22T22:22:24.105Z" }, + { url = "https://files.pythonhosted.org/packages/af/36/45f6ebb3210887e8ee6dbf1bc710ae8400bb417ce165aaf3024b8360d999/rpds_py-0.28.0-cp312-cp312-win_amd64.whl", hash = "sha256:a410542d61fc54710f750d3764380b53bf09e8c4edbf2f9141a82aa774a04f7c", size = 227844, upload-time = "2025-10-22T22:22:25.551Z" }, + { url = "https://files.pythonhosted.org/packages/57/91/f3fb250d7e73de71080f9a221d19bd6a1c1eb0d12a1ea26513f6c1052ad6/rpds_py-0.28.0-cp312-cp312-win_arm64.whl", hash = "sha256:1f0cfd1c69e2d14f8c892b893997fa9a60d890a0c8a603e88dca4955f26d1edd", size = 217624, upload-time = "2025-10-22T22:22:26.914Z" }, { url = "https://files.pythonhosted.org/packages/d3/03/ce566d92611dfac0085c2f4b048cd53ed7c274a5c05974b882a908d540a2/rpds_py-0.28.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e9e184408a0297086f880556b6168fa927d677716f83d3472ea333b42171ee3b", size = 366235, upload-time = "2025-10-22T22:22:28.397Z" }, { url = "https://files.pythonhosted.org/packages/00/34/1c61da1b25592b86fd285bd7bd8422f4c9d748a7373b46126f9ae792a004/rpds_py-0.28.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:edd267266a9b0448f33dc465a97cfc5d467594b600fe28e7fa2f36450e03053a", size = 348241, upload-time = "2025-10-22T22:22:30.171Z" }, { url = "https://files.pythonhosted.org/packages/fc/00/ed1e28616848c61c493a067779633ebf4b569eccaacf9ccbdc0e7cba2b9d/rpds_py-0.28.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85beb8b3f45e4e32f6802fb6cd6b17f615ef6c6a52f265371fb916fae02814aa", size = 378079, upload-time = "2025-10-22T22:22:31.644Z" }, @@ -3476,6 +3991,16 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/4c/3b/546a6f0bfe791bbb7f8d591613454d15097e53f906308ec6f7c1ce588e8e/scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b", size = 30580599, upload-time = "2025-09-11T17:48:08.271Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/8d/6396e00db1282279a4ddd507c5f5e11f606812b608ee58517ce8abbf883f/scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d", size = 36646259, upload-time = "2025-09-11T17:40:39.329Z" }, + { url = "https://files.pythonhosted.org/packages/3b/93/ea9edd7e193fceb8eef149804491890bde73fb169c896b61aa3e2d1e4e77/scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371", size = 28888976, upload-time = "2025-09-11T17:40:46.82Z" }, + { url = "https://files.pythonhosted.org/packages/91/4d/281fddc3d80fd738ba86fd3aed9202331180b01e2c78eaae0642f22f7e83/scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0", size = 20879905, upload-time = "2025-09-11T17:40:52.545Z" }, + { url = "https://files.pythonhosted.org/packages/69/40/b33b74c84606fd301b2915f0062e45733c6ff5708d121dd0deaa8871e2d0/scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232", size = 23553066, upload-time = "2025-09-11T17:40:59.014Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/22c739e2f21a42cc8f16bc76b47cff4ed54fbe0962832c589591c2abec34/scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1", size = 33336407, upload-time = "2025-09-11T17:41:06.796Z" }, + { url = "https://files.pythonhosted.org/packages/53/11/a0160990b82999b45874dc60c0c183d3a3a969a563fffc476d5a9995c407/scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f", size = 35673281, upload-time = "2025-09-11T17:41:15.055Z" }, + { url = "https://files.pythonhosted.org/packages/96/53/7ef48a4cfcf243c3d0f1643f5887c81f29fdf76911c4e49331828e19fc0a/scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef", size = 36004222, upload-time = "2025-09-11T17:41:23.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7f/71a69e0afd460049d41c65c630c919c537815277dfea214031005f474d78/scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1", size = 38664586, upload-time = "2025-09-11T17:41:31.021Z" }, + { url = "https://files.pythonhosted.org/packages/34/95/20e02ca66fb495a95fba0642fd48e0c390d0ece9b9b14c6e931a60a12dea/scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e", size = 38550641, upload-time = "2025-09-11T17:41:36.61Z" }, + { url = "https://files.pythonhosted.org/packages/92/ad/13646b9beb0a95528ca46d52b7babafbe115017814a611f2065ee4e61d20/scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851", size = 25456070, upload-time = "2025-09-11T17:41:41.3Z" }, { url = "https://files.pythonhosted.org/packages/c1/27/c5b52f1ee81727a9fc457f5ac1e9bf3d6eab311805ea615c83c27ba06400/scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70", size = 36604856, upload-time = "2025-09-11T17:41:47.695Z" }, { url = "https://files.pythonhosted.org/packages/32/a9/15c20d08e950b540184caa8ced675ba1128accb0e09c653780ba023a4110/scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9", size = 28864626, upload-time = "2025-09-11T17:41:52.642Z" }, { url = "https://files.pythonhosted.org/packages/4c/fc/ea36098df653cca26062a627c1a94b0de659e97127c8491e18713ca0e3b9/scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5", size = 20855689, upload-time = "2025-09-11T17:41:57.886Z" }, @@ -3721,6 +4246,17 @@ version = "5.11.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/43/d9/3f17e3c5773fb4941c68d9a37a47b1a79c9649d6c56aefbed87cc409d18a/ujson-5.11.0.tar.gz", hash = "sha256:e204ae6f909f099ba6b6b942131cee359ddda2b6e4ea39c12eb8b991fe2010e0", size = 7156583, upload-time = "2025-08-20T11:57:02.452Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/ef/a9cb1fce38f699123ff012161599fb9f2ff3f8d482b4b18c43a2dc35073f/ujson-5.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7895f0d2d53bd6aea11743bd56e3cb82d729980636cd0ed9b89418bf66591702", size = 55434, upload-time = "2025-08-20T11:55:34.987Z" }, + { url = "https://files.pythonhosted.org/packages/b1/05/dba51a00eb30bd947791b173766cbed3492269c150a7771d2750000c965f/ujson-5.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:12b5e7e22a1fe01058000d1b317d3b65cc3daf61bd2ea7a2b76721fe160fa74d", size = 53190, upload-time = "2025-08-20T11:55:36.384Z" }, + { url = "https://files.pythonhosted.org/packages/03/3c/fd11a224f73fbffa299fb9644e425f38b38b30231f7923a088dd513aabb4/ujson-5.11.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0180a480a7d099082501cad1fe85252e4d4bf926b40960fb3d9e87a3a6fbbc80", size = 57600, upload-time = "2025-08-20T11:55:37.692Z" }, + { url = "https://files.pythonhosted.org/packages/55/b9/405103cae24899df688a3431c776e00528bd4799e7d68820e7ebcf824f92/ujson-5.11.0-cp312-cp312-manylinux_2_24_i686.manylinux_2_28_i686.whl", hash = "sha256:fa79fdb47701942c2132a9dd2297a1a85941d966d8c87bfd9e29b0cf423f26cc", size = 59791, upload-time = "2025-08-20T11:55:38.877Z" }, + { url = "https://files.pythonhosted.org/packages/17/7b/2dcbc2bbfdbf68f2368fb21ab0f6735e872290bb604c75f6e06b81edcb3f/ujson-5.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8254e858437c00f17cb72e7a644fc42dad0ebb21ea981b71df6e84b1072aaa7c", size = 57356, upload-time = "2025-08-20T11:55:40.036Z" }, + { url = "https://files.pythonhosted.org/packages/d1/71/fea2ca18986a366c750767b694430d5ded6b20b6985fddca72f74af38a4c/ujson-5.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1aa8a2ab482f09f6c10fba37112af5f957689a79ea598399c85009f2f29898b5", size = 1036313, upload-time = "2025-08-20T11:55:41.408Z" }, + { url = "https://files.pythonhosted.org/packages/a3/bb/d4220bd7532eac6288d8115db51710fa2d7d271250797b0bfba9f1e755af/ujson-5.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a638425d3c6eed0318df663df44480f4a40dc87cc7c6da44d221418312f6413b", size = 1195782, upload-time = "2025-08-20T11:55:43.357Z" }, + { url = "https://files.pythonhosted.org/packages/80/47/226e540aa38878ce1194454385701d82df538ccb5ff8db2cf1641dde849a/ujson-5.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7e3cff632c1d78023b15f7e3a81c3745cd3f94c044d1e8fa8efbd6b161997bbc", size = 1088817, upload-time = "2025-08-20T11:55:45.262Z" }, + { url = "https://files.pythonhosted.org/packages/7e/81/546042f0b23c9040d61d46ea5ca76f0cc5e0d399180ddfb2ae976ebff5b5/ujson-5.11.0-cp312-cp312-win32.whl", hash = "sha256:be6b0eaf92cae8cdee4d4c9e074bde43ef1c590ed5ba037ea26c9632fb479c88", size = 39757, upload-time = "2025-08-20T11:55:46.522Z" }, + { url = "https://files.pythonhosted.org/packages/44/1b/27c05dc8c9728f44875d74b5bfa948ce91f6c33349232619279f35c6e817/ujson-5.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:b7b136cc6abc7619124fd897ef75f8e63105298b5ca9bdf43ebd0e1fa0ee105f", size = 43859, upload-time = "2025-08-20T11:55:47.987Z" }, + { url = "https://files.pythonhosted.org/packages/22/2d/37b6557c97c3409c202c838aa9c960ca3896843b4295c4b7bb2bbd260664/ujson-5.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:6cd2df62f24c506a0ba322d5e4fe4466d47a9467b57e881ee15a31f7ecf68ff6", size = 38361, upload-time = "2025-08-20T11:55:49.122Z" }, { url = "https://files.pythonhosted.org/packages/1c/ec/2de9dd371d52c377abc05d2b725645326c4562fc87296a8907c7bcdf2db7/ujson-5.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:109f59885041b14ee9569bf0bb3f98579c3fa0652317b355669939e5fc5ede53", size = 55435, upload-time = "2025-08-20T11:55:50.243Z" }, { url = "https://files.pythonhosted.org/packages/5b/a4/f611f816eac3a581d8a4372f6967c3ed41eddbae4008d1d77f223f1a4e0a/ujson-5.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a31c6b8004438e8c20fc55ac1c0e07dad42941db24176fe9acf2815971f8e752", size = 53193, upload-time = "2025-08-20T11:55:51.373Z" }, { url = "https://files.pythonhosted.org/packages/e9/c5/c161940967184de96f5cbbbcce45b562a4bf851d60f4c677704b1770136d/ujson-5.11.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:78c684fb21255b9b90320ba7e199780f653e03f6c2528663768965f4126a5b50", size = 57603, upload-time = "2025-08-20T11:55:52.583Z" }, @@ -3778,6 +4314,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, ] +[[package]] +name = "uritemplate" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/60/f174043244c5306c9988380d2cb10009f91563fc4b31293d27e17201af56/uritemplate-4.2.0.tar.gz", hash = "sha256:480c2ed180878955863323eea31b0ede668795de182617fef9c6ca09e6ec9d0e", size = 33267, upload-time = "2025-06-02T15:12:06.318Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/99/3ae339466c9183ea5b8ae87b34c0b897eda475d2aec2307cae60e5cd4f29/uritemplate-4.2.0-py3-none-any.whl", hash = "sha256:962201ba1c4edcab02e60f9a0d3821e82dfc5d2d6662a21abd533879bdb8a686", size = 11488, upload-time = "2025-06-02T15:12:03.405Z" }, +] + [[package]] name = "urllib3" version = "2.5.0" @@ -3866,6 +4411,18 @@ version = "2.0.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/49/2a/6de8a50cb435b7f42c46126cf1a54b2aab81784e74c8595c8e025e8f36d3/wrapt-2.0.1.tar.gz", hash = "sha256:9c9c635e78497cacb81e84f8b11b23e0aacac7a136e73b8e5b2109a1d9fc468f", size = 82040, upload-time = "2025-11-07T00:45:33.312Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/73/8cb252858dc8254baa0ce58ce382858e3a1cf616acebc497cb13374c95c6/wrapt-2.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1fdbb34da15450f2b1d735a0e969c24bdb8d8924892380126e2a293d9902078c", size = 78129, upload-time = "2025-11-07T00:43:48.852Z" }, + { url = "https://files.pythonhosted.org/packages/19/42/44a0db2108526ee6e17a5ab72478061158f34b08b793df251d9fbb9a7eb4/wrapt-2.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3d32794fe940b7000f0519904e247f902f0149edbe6316c710a8562fb6738841", size = 61205, upload-time = "2025-11-07T00:43:50.402Z" }, + { url = "https://files.pythonhosted.org/packages/4d/8a/5b4b1e44b791c22046e90d9b175f9a7581a8cc7a0debbb930f81e6ae8e25/wrapt-2.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:386fb54d9cd903ee0012c09291336469eb7b244f7183d40dc3e86a16a4bace62", size = 61692, upload-time = "2025-11-07T00:43:51.678Z" }, + { url = "https://files.pythonhosted.org/packages/11/53/3e794346c39f462bcf1f58ac0487ff9bdad02f9b6d5ee2dc84c72e0243b2/wrapt-2.0.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7b219cb2182f230676308cdcacd428fa837987b89e4b7c5c9025088b8a6c9faf", size = 121492, upload-time = "2025-11-07T00:43:55.017Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7e/10b7b0e8841e684c8ca76b462a9091c45d62e8f2de9c4b1390b690eadf16/wrapt-2.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:641e94e789b5f6b4822bb8d8ebbdfc10f4e4eae7756d648b717d980f657a9eb9", size = 123064, upload-time = "2025-11-07T00:43:56.323Z" }, + { url = "https://files.pythonhosted.org/packages/0e/d1/3c1e4321fc2f5ee7fd866b2d822aa89b84495f28676fd976c47327c5b6aa/wrapt-2.0.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe21b118b9f58859b5ebaa4b130dee18669df4bd111daad082b7beb8799ad16b", size = 117403, upload-time = "2025-11-07T00:43:53.258Z" }, + { url = "https://files.pythonhosted.org/packages/a4/b0/d2f0a413cf201c8c2466de08414a15420a25aa83f53e647b7255cc2fab5d/wrapt-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:17fb85fa4abc26a5184d93b3efd2dcc14deb4b09edcdb3535a536ad34f0b4dba", size = 121500, upload-time = "2025-11-07T00:43:57.468Z" }, + { url = "https://files.pythonhosted.org/packages/bd/45/bddb11d28ca39970a41ed48a26d210505120f925918592283369219f83cc/wrapt-2.0.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:b89ef9223d665ab255ae42cc282d27d69704d94be0deffc8b9d919179a609684", size = 116299, upload-time = "2025-11-07T00:43:58.877Z" }, + { url = "https://files.pythonhosted.org/packages/81/af/34ba6dd570ef7a534e7eec0c25e2615c355602c52aba59413411c025a0cb/wrapt-2.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a453257f19c31b31ba593c30d997d6e5be39e3b5ad9148c2af5a7314061c63eb", size = 120622, upload-time = "2025-11-07T00:43:59.962Z" }, + { url = "https://files.pythonhosted.org/packages/e2/3e/693a13b4146646fb03254636f8bafd20c621955d27d65b15de07ab886187/wrapt-2.0.1-cp312-cp312-win32.whl", hash = "sha256:3e271346f01e9c8b1130a6a3b0e11908049fe5be2d365a5f402778049147e7e9", size = 58246, upload-time = "2025-11-07T00:44:03.169Z" }, + { url = "https://files.pythonhosted.org/packages/a7/36/715ec5076f925a6be95f37917b66ebbeaa1372d1862c2ccd7a751574b068/wrapt-2.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:2da620b31a90cdefa9cd0c2b661882329e2e19d1d7b9b920189956b76c564d75", size = 60492, upload-time = "2025-11-07T00:44:01.027Z" }, + { url = "https://files.pythonhosted.org/packages/ef/3e/62451cd7d80f65cc125f2b426b25fbb6c514bf6f7011a0c3904fc8c8df90/wrapt-2.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:aea9c7224c302bc8bfc892b908537f56c430802560e827b75ecbde81b604598b", size = 58987, upload-time = "2025-11-07T00:44:02.095Z" }, { url = "https://files.pythonhosted.org/packages/ad/fe/41af4c46b5e498c90fc87981ab2972fbd9f0bccda597adb99d3d3441b94b/wrapt-2.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:47b0f8bafe90f7736151f61482c583c86b0693d80f075a58701dd1549b0010a9", size = 78132, upload-time = "2025-11-07T00:44:04.628Z" }, { url = "https://files.pythonhosted.org/packages/1c/92/d68895a984a5ebbbfb175512b0c0aad872354a4a2484fbd5552e9f275316/wrapt-2.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:cbeb0971e13b4bd81d34169ed57a6dda017328d1a22b62fda45e1d21dd06148f", size = 61211, upload-time = "2025-11-07T00:44:05.626Z" }, { url = "https://files.pythonhosted.org/packages/e8/26/ba83dc5ae7cf5aa2b02364a3d9cf74374b86169906a1f3ade9a2d03cf21c/wrapt-2.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb7cffe572ad0a141a7886a1d2efa5bef0bf7fe021deeea76b3ab334d2c38218", size = 61689, upload-time = "2025-11-07T00:44:06.719Z" }, @@ -3951,6 +4508,22 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/57/63/0c6ebca57330cd313f6102b16dd57ffaf3ec4c83403dcb45dbd15c6f3ea1/yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", size = 187169, upload-time = "2025-10-06T14:12:55.963Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/75/ff/46736024fee3429b80a165a732e38e5d5a238721e634ab41b040d49f8738/yarl-1.22.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f", size = 142000, upload-time = "2025-10-06T14:09:44.631Z" }, + { url = "https://files.pythonhosted.org/packages/5a/9a/b312ed670df903145598914770eb12de1bac44599549b3360acc96878df8/yarl-1.22.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2", size = 94338, upload-time = "2025-10-06T14:09:46.372Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f5/0601483296f09c3c65e303d60c070a5c19fcdbc72daa061e96170785bc7d/yarl-1.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74", size = 94909, upload-time = "2025-10-06T14:09:48.648Z" }, + { url = "https://files.pythonhosted.org/packages/60/41/9a1fe0b73dbcefce72e46cf149b0e0a67612d60bfc90fb59c2b2efdfbd86/yarl-1.22.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df", size = 372940, upload-time = "2025-10-06T14:09:50.089Z" }, + { url = "https://files.pythonhosted.org/packages/17/7a/795cb6dfee561961c30b800f0ed616b923a2ec6258b5def2a00bf8231334/yarl-1.22.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb", size = 345825, upload-time = "2025-10-06T14:09:52.142Z" }, + { url = "https://files.pythonhosted.org/packages/d7/93/a58f4d596d2be2ae7bab1a5846c4d270b894958845753b2c606d666744d3/yarl-1.22.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2", size = 386705, upload-time = "2025-10-06T14:09:54.128Z" }, + { url = "https://files.pythonhosted.org/packages/61/92/682279d0e099d0e14d7fd2e176bd04f48de1484f56546a3e1313cd6c8e7c/yarl-1.22.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82", size = 396518, upload-time = "2025-10-06T14:09:55.762Z" }, + { url = "https://files.pythonhosted.org/packages/db/0f/0d52c98b8a885aeda831224b78f3be7ec2e1aa4a62091f9f9188c3c65b56/yarl-1.22.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a", size = 377267, upload-time = "2025-10-06T14:09:57.958Z" }, + { url = "https://files.pythonhosted.org/packages/22/42/d2685e35908cbeaa6532c1fc73e89e7f2efb5d8a7df3959ea8e37177c5a3/yarl-1.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124", size = 365797, upload-time = "2025-10-06T14:09:59.527Z" }, + { url = "https://files.pythonhosted.org/packages/a2/83/cf8c7bcc6355631762f7d8bdab920ad09b82efa6b722999dfb05afa6cfac/yarl-1.22.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa", size = 365535, upload-time = "2025-10-06T14:10:01.139Z" }, + { url = "https://files.pythonhosted.org/packages/25/e1/5302ff9b28f0c59cac913b91fe3f16c59a033887e57ce9ca5d41a3a94737/yarl-1.22.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7", size = 382324, upload-time = "2025-10-06T14:10:02.756Z" }, + { url = "https://files.pythonhosted.org/packages/bf/cd/4617eb60f032f19ae3a688dc990d8f0d89ee0ea378b61cac81ede3e52fae/yarl-1.22.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d", size = 383803, upload-time = "2025-10-06T14:10:04.552Z" }, + { url = "https://files.pythonhosted.org/packages/59/65/afc6e62bb506a319ea67b694551dab4a7e6fb7bf604e9bd9f3e11d575fec/yarl-1.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520", size = 374220, upload-time = "2025-10-06T14:10:06.489Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3d/68bf18d50dc674b942daec86a9ba922d3113d8399b0e52b9897530442da2/yarl-1.22.0-cp312-cp312-win32.whl", hash = "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8", size = 81589, upload-time = "2025-10-06T14:10:09.254Z" }, + { url = "https://files.pythonhosted.org/packages/c8/9a/6ad1a9b37c2f72874f93e691b2e7ecb6137fb2b899983125db4204e47575/yarl-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c", size = 87213, upload-time = "2025-10-06T14:10:11.369Z" }, + { url = "https://files.pythonhosted.org/packages/44/c5/c21b562d1680a77634d748e30c653c3ca918beb35555cff24986fff54598/yarl-1.22.0-cp312-cp312-win_arm64.whl", hash = "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74", size = 81330, upload-time = "2025-10-06T14:10:13.112Z" }, { url = "https://files.pythonhosted.org/packages/ea/f3/d67de7260456ee105dc1d162d43a019ecad6b91e2f51809d6cddaa56690e/yarl-1.22.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53", size = 139980, upload-time = "2025-10-06T14:10:14.601Z" }, { url = "https://files.pythonhosted.org/packages/01/88/04d98af0b47e0ef42597b9b28863b9060bb515524da0a65d5f4db160b2d5/yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a", size = 93424, upload-time = "2025-10-06T14:10:16.115Z" }, { url = "https://files.pythonhosted.org/packages/18/91/3274b215fd8442a03975ce6bee5fe6aa57a8326b29b9d3d56234a1dca244/yarl-1.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c", size = 93821, upload-time = "2025-10-06T14:10:17.993Z" }, @@ -4043,3 +4616,12 @@ sdist = { url = "https://files.pythonhosted.org/packages/d1/ac/3c494dd7ec5122cff wheels = [ { url = "https://files.pythonhosted.org/packages/80/ab/11a76c1e2126084fde2639514f24e6111b789b0bfa4fc6264a8975c7e1f1/zict-3.0.0-py2.py3-none-any.whl", hash = "sha256:5796e36bd0e0cc8cf0fbc1ace6a68912611c1dbd74750a3f3026b9b9d6a327ae", size = 43332, upload-time = "2023-04-17T21:41:13.444Z" }, ] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +] diff --git a/virtualize_with_lithops_combine_variables.py b/virtualize_with_lithops_combine_variables.py index 1a3b8ab..ff4073e 100644 --- a/virtualize_with_lithops_combine_variables.py +++ b/virtualize_with_lithops_combine_variables.py @@ -3,42 +3,98 @@ import ismip6_helper import obstore import xarray as xr -import json -from datetime import datetime, timezone +# import json +# import time +# import random +# from datetime import datetime, timezone +# from functools import wraps from virtualizarr import open_virtual_dataset from virtualizarr.parsers import HDFParser, NetCDF3Parser from virtualizarr.registry import ObjectStoreRegistry -from virtualizarr.writers.icechunk import virtual_dataset_to_icechunk import zarr from typing import Dict, Tuple, Any, List, Union +import zarr +# TODO: Some of the attempts to overcome the write limits (seems to only work locally so far) +zarr.config.set({ + 'async.concurrency': 5, + 'threading.max_workers': 5 +}) +# print(f"{zarr.config.get("async.concurrency")=}") + +# print(f"{icechunk.__version__=}") +# import virtualizarr +# print(f"{virtualizarr.__version__=}") + def _parse_variable_from_url(url:str) -> str: return url.split('/')[-1].split('_')[0] -def write_vds_to_icechunk(vds: xr.Dataset, path:str): - try: - repo = open_or_create_repo() - session = repo.writable_session("main") - vds.vz.to_icechunk(session.store, group=path) - commit_msg = f"Added {path}" - # retries rebase until successful (https://icechunk.io/en/stable/howto/#commit-with-automatic-rebasing) - commit_id = session.commit(commit_msg, rebase_with=icechunk.ConflictDetector()) +# # TODO: Some of the attempts to overcome the write limits (seems to only work locally so far) +# def retry_with_backoff(base_delay=2.0, backoff_factor=2.0, max_delay=30.0, timeout_budget=450.0): +# """ +# Decorator that retries a function with exponential backoff on GCS-related errors. +# Tracks elapsed time and stops retrying before exceeding the timeout budget. + +# Args: +# base_delay: Initial delay in seconds +# backoff_factor: Multiplier for exponential backoff +# max_delay: Maximum delay between retries in seconds +# timeout_budget: Maximum time budget in seconds (default: 450s = 83% of 540s GCF timeout) +# Leaves buffer for function execution time before first attempt +# """ +# def decorator(func): +# @wraps(func) +# def wrapper(*args, **kwargs): +# start_time = time.time() +# last_exception = None +# attempt = 0 + +# while True: +# try: +# result = func(*args, **kwargs) +# # Add retry info to result if this succeeded after retries +# if attempt > 0 and isinstance(result, dict): +# result['retries'] = attempt +# result['elapsed_time'] = time.time() - start_time +# return result + +# except Exception as e: +# last_exception = e +# error_str = str(e).lower() + +# # Check for retryable errors +# retryable = any(keyword in error_str for keyword in [ +# 'exceeded the rate limit', 'too many requests', 'reduce your request rate', +# 'slowdown', '429', '503', 'timeout', 'deadline', +# 'transaction not found', "not found", "object store error", "error performing get" # also retry on icechunk rebase issues +# ]) + +# if not retryable: +# # Don't retry on non-retryable errors +# raise + +# # Calculate delay with exponential backoff and jitter +# delay = min( +# base_delay * (backoff_factor ** attempt) + random.uniform(0, 1), +# max_delay +# ) + +# # Check if we have time budget for another retry +# elapsed = time.time() - start_time +# if elapsed + delay >= timeout_budget: +# print(f" [Timeout Budget] No time for retry (elapsed: {elapsed:.1f}s, need: {delay:.1f}s, budget: {timeout_budget}s)") +# raise last_exception + +# attempt += 1 +# print(f" [Retry {attempt}] Error: {str(e)[:100]}... Retrying in {delay:.1f}s (elapsed: {elapsed:.1f}s)") +# time.sleep(delay) + +# return wrapper +# return decorator + - return { - "success": True, - "commit_id": commit_id, - "path": path, - "repo": repo, - } - except Exception as e: - return { - "success": False, - "error": str(e), - "path": path, - "repo": repo - } def virtualize_and_combine_batch(urls: List[str], parser: Union[HDFParser, NetCDF3Parser], registry: ObjectStoreRegistry) -> Dict[str, Any]: # Take a batch of datasets that belong to a single simulation (same model + experiment) and merge them into @@ -46,61 +102,31 @@ def virtualize_and_combine_batch(urls: List[str], parser: Union[HDFParser, NetCD # create virtual datasets (can we speed this up in parallel if we group them? Not a prio right now) loadable_variables = ['time', 'x', 'y', 'lat', 'lon', 'latitude', 'longitude', 'nv4', 'lon_bnds', 'lat_bnds'] - - try: - # virtualize and append all needed metadata (for now just the variable) - vdatasets = [] - for url in urls: - vds_var = open_virtual_dataset( - url=url, - parser=parser, - registry=registry, - loadable_variables=loadable_variables, - decode_times=False - ) - # appy ismip specific fixer functions - vds_var_fixed_time = ismip6_helper.fix_time_encoding(vds_var) - vds_var_fixed_grid = ismip6_helper.correct_grid_coordinates(vds_var_fixed_time, _parse_variable_from_url(url)) - - # # move all coordinates out of data variables - # # TODO: We could set all coords except the one defined in the dataframe variable - # # Revise that if this does not solve the issue - # vds_preprocessed = vds_var_fixed_grid.set_coords( - # [co for co in loadable_variables if co in vds_var_fixed_grid.data_vars] - # ) - vds_preprocessed = vds_var_fixed_grid - # append the url to the dataset for easier debugging - vds_preprocessed.attrs['url'] = url - vdatasets.append(vds_preprocessed) + # virtualize and append all needed metadata (for now just the variable) + vdatasets = [] + for url in urls: + vds_var = open_virtual_dataset( + url=url, + parser=parser, + registry=registry, + loadable_variables=loadable_variables, + decode_times=False + ) + # appy ismip specific fixer functions + vds_var_fixed_time = ismip6_helper.fix_time_encoding(vds_var) + vds_var_fixed_grid = ismip6_helper.correct_grid_coordinates(vds_var_fixed_time, _parse_variable_from_url(url)) + vds_preprocessed = vds_var_fixed_grid + vdatasets.append(vds_preprocessed) - vds = xr.merge(vdatasets, join='override', compat='override') + vds = xr.merge(vdatasets, join='override', compat='override') - return { - "success": True, - "dataset": vds, - "count": len(urls) - } - except Exception as e: - return { - 'success': False, - "error": str(e), - 'single_datasets': vdatasets, - 'urls': urls - } + return vds -def batch_func(batch: Tuple[Tuple[str], List[Dict[str, Union[str, int]]]]) -> Dict[str, Any]: - """Wrapper around virtualization and writing for batch of files to icechunk""" +def batch_virt_func(batch: Tuple[Tuple[str], List[Dict[str, Union[str, int]]]]) -> Dict[str, Any]: + """Wrap batch virtualization in error handling""" try: - # Virtualizing is costly, check if group exists before - repo = open_or_create_repo() - session = repo.readonly_session(branch="main") - if len(list(session.store.list_dir(batch['path']))) != 0: - raise ValueError('Group already exists') - - # virtualize and write in one go - # There are some NetCDF3 files in the mix. # TODO: The better way to choese the parser would be to dynamically pick it based on a head request # But for now this should do. @@ -109,32 +135,53 @@ def batch_func(batch: Tuple[Tuple[str], List[Dict[str, Union[str, int]]]]) -> Di bucket = "gs://ismip6" store = obstore.store.from_url(bucket, skip_signature=True) registry = ObjectStoreRegistry({bucket: store}) + vds = virtualize_and_combine_batch(batch['urls'], parser, registry) + return { + 'success': True, + 'batch': batch, + 'virtual_dataset': vds + } + + except Exception as e: + return { + "success": False, + "batch": batch, + "error": str(e), + } - virt_results = virtualize_and_combine_batch(batch['urls'], parser, registry) - if not virt_results['success']: - raise ValueError(f"Virtualizing failed with {virt_results['error']}") +# @retry_with_backoff(base_delay=0.5, backoff_factor=2.0, max_delay=30.0, timeout_budget=300.0) +def batch_write_func(batch: Tuple[Tuple[str], List[Dict[str, Union[str, int]]]], vds:xr.Dataset, repo:icechunk.Repository, local_storage:bool=False) -> Dict[str, Any]: + """Wrap writing to icechunk in error handling""" + try: + session = repo.writable_session("main") + path = batch['path'] - write_results = write_vds_to_icechunk(virt_results['dataset'], batch['path']) - if not write_results['success']: - raise ValueError(f"Writing failed with {virt_results['error']}") + vds.vz.to_icechunk(session.store, group=path) + commit_msg = f"Added {path}" + # TODO: Remanent from when I was writing icechunk in parallel too. Might be helpful for debugging later. + # retries rebase until successful (https://icechunk.io/en/stable/howto/#commit-with-automatic-rebasing) + # commit_id = session.commit(commit_msg, rebase_with=icechunk.ConflictDetector(), rebase_tries=10) # try less often here so the backoff retry kicks in + commit_id = session.commit(commit_msg) return { 'success': True, 'batch': batch, - 'results': { - 'virtualization_results':virt_results, - 'writing_results':write_results, - }, + 'virtual_dataset':vds, + 'commit_id': commit_id, + 'commit_msg': commit_msg, } + except Exception as e: return { "success": False, + "batch": batch, "error": str(e), - "batch": batch } - -def open_or_create_repo() -> icechunk.Repository: - # Setup Icechunk config +def get_repo_kwargs(local_storage:bool=False) -> icechunk.Storage: + if local_storage: + storage = icechunk.local_filesystem_storage("/Users/juliusbusecke/Code/ismip-indexing/test-output/test_icechunk") + else: + storage = icechunk.gcs_storage(bucket="ismip6-icechunk", prefix="combined-variables-2025-12-19-v2", from_env=True) config = icechunk.RepositoryConfig.default() config.set_virtual_chunk_container( icechunk.VirtualChunkContainer( @@ -142,42 +189,21 @@ def open_or_create_repo() -> icechunk.Repository: store=icechunk.gcs_store() ) ) + config.max_concurrent_requests=3 - # Use None for anonymous/public access to source data credentials = icechunk.containers_credentials({ "gs://ismip6/": None }) - # FOR LOCAL TESTING - # icechunk_storage = icechunk.gcs_storage(bucket="ismip6-icechunk", prefix="combined-variables-2025-12-12", from_env=True) - icechunk_storage = icechunk.local_filesystem_storage("/Users/juliusbusecke/Code/ismip-indexing/test-output/test_icechunk") - return icechunk.Repository.open_or_create(icechunk_storage, config=config, authorize_virtual_chunk_access=credentials) - - -# def write_failures_to_bucket(failed_results: list): -# """Write failed results to the bucket immediately. - -# Args: -# failed_results: List of dicts with failure information -# """ -# if not failed_results: -# return - -# failure_log_bucket = "gs://ismip6-icechunk" -# failure_log_path = f"failures/virtualization_failures_{datetime.now(timezone.utc).strftime('%Y%m%d_%H%M%S')}.json" - -# try: -# failure_store = obstore.store.from_url(failure_log_bucket) -# failure_data = json.dumps(failed_results, indent=2).encode('utf-8') -# failure_store.put(failure_log_path, failure_data) -# print(f" ✓ Logged {len(failed_results)} failures to {failure_log_bucket}/{failure_log_path}") -# except Exception as e: -# print(f" ✗ Failed to log failures to bucket: {e}") -# print(" Failed results:") -# print(json.dumps(failed_results, indent=2)) - + return { + 'storage':storage, + 'config':config, + 'authorize_virtual_chunk_access':credentials + } +def get_id_from_batch(batch): + return f"{batch['institution_id']}_{batch['source_id']}/{batch['experiment_id']}" -def process_all_files(): +def process_all_files(local_storage:bool=False, local_execution:bool=False): """Process all files using Lithops serverless executor. Strategy: @@ -191,28 +217,48 @@ def process_all_files(): # Silence the specific Zarr warning warnings.filterwarnings('ignore', module='zarr') + if not local_execution and local_storage: + # not tested, but I am pretty sure this does not work + # local execution and cloud storage does work for me. + raise ValueError("Local storage requires `local_execution=True`") + # Step 1: Build file index print("Step 1/3: Building file index...") files_df = ismip6_helper.build_file_index() print(f"Step 1/3 Complete: Built file index with {len(files_df)} files!") - # # For TESTING: filter a single model and experiment - # files_df = files_df[files_df['model_name'] == "MALI"] - # files_df = files_df[files_df['experiment'] == "ctrl_proj_std"] + # For TESTING: filter a single model and/or experiment + files_df = files_df[files_df['model_name'] == "fETISh_32km"] + files_df = files_df[files_df['experiment'] == "ctrl_proj_std"] # Step 2: Group by model and experiment and create print("\nStep 2/3: Grouping files by model and experiment...") grouped = files_df.groupby(['institution', 'model_name', 'experiment']) # skip groups already in the zarr store - repo = open_or_create_repo() + repo_kwargs = get_repo_kwargs(local_storage=local_storage) + print(f"Opening icechunk repo at {repo_kwargs['storage']}") + repo = icechunk.Repository.open_or_create(**repo_kwargs) session = repo.readonly_session(branch="main") - root = zarr.open(session.store, mode='r') - batches_raw = [ - (name, group.to_dict('records')) - for name, group in grouped - if f"{name[0]}_{name[1]}/{name[2]}" not in root - ] + try: + root = zarr.open(session.store, mode='r') + print('Found groups in the store. Skipping all existing groups.') + print(root.tree(level=1)) + batches_raw = [] + for name, group in grouped: + path = f"{name[0]}_{name[1]}/{name[2]}" + if path not in root: + print(f'{path} does not exist') + batches_raw.append((name, group.to_dict('records'))) + else: + print(f'{path} exists. Skipping') + except zarr.errors.GroupNotFoundError: + # Store is empty, process all groups + print(" Icechunk store is empty, processing all groups...") + batches_raw = [ + (name, group.to_dict('records')) + for name, group in grouped + ] batches = [] for batch_raw in batches_raw: # parse batch input @@ -231,37 +277,67 @@ def process_all_files(): print(f"Step 2/3 Complete: Created {len(batches)} batches") # Initialize Lithops executor - # FOR LOCAL TESTING - config_file = '../lithops_local.yaml' - # config_file = 'lithops.yaml' + if local_execution: + config_file = 'lithops_local.yaml' + else: + config_file = 'lithops.yaml' fexec = lithops.FunctionExecutor(config_file=config_file) - # Step 3: Process each batch sequentially - print("\nStep 3/3: Processing batches...") - total_successful = 0 - total_failed = 0 - - # Parallelize virtualization for this batch - print(f" Virtualizing {len(batches)} files in parallel...") - futures = fexec.map(batch_func, [{'batch':b} for b in batches]) + # Step 3: Virtualize files with maximum concurrency (this takes the longest IIRC) + futures = fexec.map(batch_virt_func, [{'batch':b} for b in batches]) virtualization_results = fexec.get_result(futures) - # Separate successful and failed virtualizations - successful_results = [r for r in virtualization_results if r.get("success")] - failed_results = [r for r in virtualization_results if not r.get("success")] - # Clean up Lithops executor fexec.clean() + # Separate successful and failed virtualizations + successful_results = [r for r in virtualization_results if r.get("success")] + failed_results = [r for r in virtualization_results if not r.get("success")] + print(f"Virtualization: ||{len(successful_results)} successful ✅|| and ||{len(failed_results)} failed ❌||") + print([(get_id_from_batch(r['batch']), r['error']) for r in failed_results]) + + # Step 4: Write virtual datasets to icechunk (for now in serial) + print('Write out to icechunk in serial') + writing_results = [] + for r in successful_results: + batch = r['batch'] + vds = r['virtual_dataset'] + print(f"Writing: {batch["path"]}") + res = batch_write_func(batch, vds, repo, local_storage=local_storage) + writing_results.append(res) + print(f"Done {'✅' if res.get('success') else '❌'} {batch["path"]} ") + if not res.get('success'): + if r.get('error'): + print(f"Error: {r.get('error')[0:200]}") + + successful_results = [r for r in writing_results if r.get("success")] + failed_results = [r for r in writing_results if not r.get("success")] + print(f"Writing: ||{len(successful_results)} successful ✅|| and ||{len(failed_results)} failed ❌||") + + #TODO: Better result reporting and returning. Its very basic and not nicely formatted for now return { 'successful': successful_results, 'failed': failed_results } if __name__ == "__main__": - result = process_all_files() - - + # NOTES: + # - I was able to write a large part of the data with both local storage and compute! So the logic works in principal. + # + # - Now testing with local execution + cloud storage (at least that way the user does not know the difference). Yeah also does not work. + #. Its the write to GCS that is fundmentally not working. I do not understand why + # My previous attempts did write from the lithops functions directly and showed the same issues, which leads me to believe that there is something + # broken with icechunk writing to GCS. + + # Full error trace: [0m session error: object store error Generic GCS error: Error performing PUT https://storage.googleapis.com/ismip6%2Dicechunk/\n \x1b[31m│\x1b[0m combined%2Dvariables%2D2025%2D12%2D19%2Dv2%2Frefs%2Fbranch%2Emain%2Fref%2Ejson in 3.898954958s, after 9 retries, max_retries: 9, retry_timeout: 300s - Server returned non-2xx status code: 429\n \x1b[31m│\x1b[0m Too Many Requests: SlowDownThe object exceeded the rate limit for object mutation operations (create, update, and delete).\n \x1b[31m│\x1b[0m Please reduce your request rate. See https://cloud.google.com/storage/docs/gcs429.
The object ismip6-icechunk/combined-variables-2025-12-19-v2/refs/branch.main/ref.json\n \x1b[31m│\x1b[0m exceeded the rate limit for object mutation operations (create, update, and delete). Please reduce your request rate. See https://cloud.google.com/storage/docs/gcs429.
\n \x1b[31m│\x1b[0m \n \x1b[31m│\x1b[0m context:\n \x1b[31m│\x1b[0m 0: icechunk::storage::object_store::write_ref\n \x1b[31m│\x1b[0m with ref_key="branch.main/ref.json" previous_version=VersionInfo { etag: Some(ETag("\\"bca5b65bdadff9b7a58b11f9586fe1c9\\"")), generation: Some(Generation("1766201379785026")) }\n \x1b[31m│\x1b[0m at icechunk/src/storage/object_store.rs:528\n \x1b[31m│\x1b[0m 1: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 2: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 3: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 4: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 5: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 6: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 7: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 8: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 9: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 10: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 11: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 12: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 13: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 14: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 15: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 16: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 17: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 18: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 19: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 20: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 21: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 22: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 23: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 24: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 25: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 26: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 27: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 28: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 29: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 30: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 31: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 32: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 33: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 34: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 35: icechunk::refs::update_branch\n \x1b[31m│\x1b[0m with name="main" new_snapshot=B26JW2A14PX1D4Q5YS5G current_snapshot=Some(0T8K5249691YH9KF2WMG)\n \x1b[31m│\x1b[0m at icechunk/src/refs.rs:173\n \x1b[31m│\x1b[0m 36: icechunk::session::_commit\n \x1b[31m│\x1b[0m with Added ULB_fETISh_32km/ctrl_proj_std rewrite_manifests=false\n \x1b[31m│\x1b[0m at icechunk/src/session.rs:1042\n \x1b[31m│\x1b[0m 37: icechunk::session::commit\n \x1b[31m│\x1b[0m with Added ULB_fETISh_32km/ctrl_proj_std\n \x1b[31m│\x1b[0m at icechunk/src/session.rs:970\n \x1b[31m│\x1b[0m \n' + result = process_all_files(local_storage=False, local_execution=True) + + successes = [] + for r in result['successful']: + successes.append(get_id_from_batch(r['batch'])) + print(f"Successful {successes}") + + print(f"Parsing errors") # sort results by error type fails_by_error = {} for r in result['failed']: @@ -274,10 +350,6 @@ def process_all_files(): id_by_error = {} for err, results in fails_by_error.items(): - def get_id_from_batch(result): - b = result['batch'] - return f"{b['institution_id']}_{b['source_id']}/{b['experiment_id']}" - id_by_error[err] = [get_id_from_batch(r) for r in results] + id_by_error[err] = [get_id_from_batch(r['batch']) for r in results] - id_by_error - print(f"Processing complete: {result}") + print(f"{id_by_error}") \ No newline at end of file