elapi 2.4.6__tar.gz → 2.4.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {elapi-2.4.6 → elapi-2.4.8}/PKG-INFO +69 -32
- {elapi-2.4.6 → elapi-2.4.8}/README.md +68 -31
- {elapi-2.4.6 → elapi-2.4.8}/pyproject.toml +1 -1
- elapi-2.4.8/src/elapi/VERSION +1 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_names.py +2 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_names.py +27 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.3.6.json +56 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.3.7.json +56 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.3.8.json +56 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.3.9.json +56 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.4.0.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.4.1.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.4.2.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.4.3.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.4.4.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.4.5.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.4.6.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.5.0.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.5.1.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.5.2.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.5.3.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.5.4.json +58 -0
- elapi-2.4.8/src/elapi/api/_supported_versions/5.5.5.json +59 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/api.py +44 -11
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/elapi.py +14 -8
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/config.py +1 -1
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/specification.py +20 -3
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/validators.py +25 -2
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/get_whoami.py +8 -2
- elapi-2.4.6/src/elapi/VERSION +0 -1
- {elapi-2.4.6 → elapi-2.4.8}/LICENSE +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/.DS_Store +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_cache.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/base.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/handlers/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/handlers/base.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/handlers/callback.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/handlers/stderr.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_utils.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/haggis/LICENSE +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/haggis/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/haggis/logs.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/haggis/version.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_handle_unexp_response.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_openapi_parser.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.1.15.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.0.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.1.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.2.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.3.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.4.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.5.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.6.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.7.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.8.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.3.0.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.3.1.json +0 -0
- /elapi-2.4.6/src/elapi/api/_supported_versions/5.3.3.json → /elapi-2.4.8/src/elapi/api/_supported_versions/5.3.10.json +0 -0
- /elapi-2.4.6/src/elapi/api/_supported_versions/5.3.4.json → /elapi-2.4.8/src/elapi/api/_supported_versions/5.3.11.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.3.2.json +0 -0
- /elapi-2.4.6/src/elapi/api/_supported_versions/5.3.5.json → /elapi-2.4.8/src/elapi/api/_supported_versions/5.3.3.json +0 -0
- /elapi-2.4.6/src/elapi/api/_supported_versions/5.3.6.json → /elapi-2.4.8/src/elapi/api/_supported_versions/5.3.4.json +0 -0
- /elapi-2.4.6/src/elapi/api/_supported_versions/5.3.7.json → /elapi-2.4.8/src/elapi/api/_supported_versions/5.3.5.json +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/endpoint.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/validators.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/__main__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/_plugin_handler.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/_venv_state_manager.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/doc.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/_config_history.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/_overload_history.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/overridable_vars.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/validators.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/core_validators/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/core_validators/base.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/core_validators/path.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/base.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/handlers/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/handlers/file.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/log_file.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/path.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/.DS_Store +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/_doc.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/bill_teams.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/cli.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/configuration.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/formats.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/generate_table.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/logger.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/names.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/registry.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/utils.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/cli.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/cli_helpers.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/export.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/get_data_from_input_or_path.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/get_information.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/get_location_from_headers.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/_doc.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/cli.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/experiments.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/formats.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/_yagmail_patch.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/cli.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/configuration.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/mail.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/names.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/yagmail_configuration.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/show_config.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/_markdown_doc.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/_missing.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/base.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/colors.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/formats.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/highlight.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/rich_utils.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/utils/__init__.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/utils/messages.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/utils/typer_patches.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/utils/utils.py +0 -0
- {elapi-2.4.6 → elapi-2.4.8}/src/elapi/validators.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: elapi
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.8
|
|
4
4
|
Summary: elAPI is a powerful, extensible API client for eLabFTW.
|
|
5
5
|
Keywords: elabftw,api
|
|
6
6
|
Author: Alexander Haller, Mahadi Xion
|
|
@@ -58,7 +58,10 @@ Description-Content-Type: text/markdown
|
|
|
58
58
|
</a>
|
|
59
59
|
<a href="#compatibility">
|
|
60
60
|
<img alt="Static Badge" src="https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-%230d7dbe">
|
|
61
|
-
<img alt="Static Badge" src="https://img.shields.io/badge/eLabFTW%20support-5.1%20%7C%205.2%20%7C%205.3+-%2323b3be">
|
|
61
|
+
<img alt="Static Badge" src="https://img.shields.io/badge/eLabFTW%20support-5.1%20%7C%205.2%20%7C%205.3%20%7C%205.4%20%7C%205.5+-%2323b3be">
|
|
62
|
+
</a>
|
|
63
|
+
<a href="#talks-workshops-and-publications">
|
|
64
|
+
<img alt="Static Badge" src="https://img.shields.io/badge/DOI-10.11588%2FDATA%2FE4XHXZ-blue?style=plastic&link=https%3A%2F%2Fdoi.org%2F10.11588%2FDATA%2FE4XHXZ">
|
|
62
65
|
</a>
|
|
63
66
|
</p>
|
|
64
67
|
|
|
@@ -80,10 +83,10 @@ From [the API documentation](https://doc.elabftw.net/api/v2/#/Users/read-user):
|
|
|
80
83
|
With elAPI you can do the following:
|
|
81
84
|
|
|
82
85
|
```sh
|
|
83
|
-
|
|
86
|
+
elapi get experiments --format csv --export ~/Downloads/
|
|
84
87
|
```
|
|
85
88
|
|
|
86
|
-
Once the command is run, in the background, elAPI will read host (eLab server) address, API key and various other
|
|
89
|
+
Once the command is run, in the background, elAPI will read host (eLab server) address, API key, and various other
|
|
87
90
|
settings (see [configuration](#configuration)) from the configuration file `elapi.yml`, perform validation (e.g.,
|
|
88
91
|
whether the server address is valid), fetch all _experiments_ list, convert them to `CSV`, and export them to your
|
|
89
92
|
local `~/Downloads/` folder.
|
|
@@ -96,7 +99,7 @@ install packages in isolated virtual environments, so elAPI installed as a CLI t
|
|
|
96
99
|
installed inside other virtual environments.
|
|
97
100
|
|
|
98
101
|
```shell
|
|
99
|
-
|
|
102
|
+
uv tool install elapi
|
|
100
103
|
# elAPI can be updated to the latest version with
|
|
101
104
|
# uv tool upgrade elapi
|
|
102
105
|
```
|
|
@@ -129,7 +132,7 @@ Once you have elAPI [installed](#installation), to **quickly** get started, run
|
|
|
129
132
|
questions about your eLabFTW server with examples to help you fill in the answers. Here's a demo:
|
|
130
133
|
|
|
131
134
|
```shell
|
|
132
|
-
|
|
135
|
+
elapi init
|
|
133
136
|
```
|
|
134
137
|
|
|
135
138
|
<video src='https://github.com/user-attachments/assets/8d5f69ed-b644-4d75-b816-d06d4e937105'> </video>
|
|
@@ -143,7 +146,9 @@ your configuration details.
|
|
|
143
146
|
|
|
144
147
|
elAPI is compatible with the following Python versions: `3.11`, `3.12`, `3.13`, `3.14`. elAPI supports
|
|
145
148
|
the [eLabFTW REST API v2](https://doc.elabftw.net/api/v2/), and can be used with the following eLabFTW
|
|
146
|
-
versions: `5.
|
|
149
|
+
versions: `5.5.5`, `5.5.4`, `5.5.3`, `5.5.2`, `5.5.1`, `5.5.0`, `5.4.6`, `5.4.5`, `5.4.4`, `5.4.3`, `5.4.2`, `5.4.1`,
|
|
150
|
+
`5.4.0`, `5.3.11`, `5.3.10`, `5.3.9`, `5.3.8`, `5.3.7`, `5.3.6`,
|
|
151
|
+
`5.3.5`, `5.3.4`, `5.3.3`, `5.3.2`, `5.3.1`, `5.3.0`, `5.2.8`, `5.2.7`, `5.2.6`, `5.2.5`, `5.2.4`,
|
|
147
152
|
`5.2.3`, `5.2.2`, `5.2.1`, `5.2.0`, `5.1.1`.
|
|
148
153
|
|
|
149
154
|
### elAPI strict version support
|
|
@@ -186,7 +191,7 @@ host: <host API url>
|
|
|
186
191
|
api_token: <token with at least read-access>
|
|
187
192
|
# "A.k.a API key". You can generate an API token from eLabFTW user panel -> API keys tab.
|
|
188
193
|
export_dir: ~/Downloads/elAPI
|
|
189
|
-
elab_strict_version_match: "
|
|
194
|
+
elab_strict_version_match: "warn_minor_only"
|
|
190
195
|
unsafe_api_token_warning: true
|
|
191
196
|
enable_http2: false
|
|
192
197
|
verify_ssl: true
|
|
@@ -203,12 +208,20 @@ development_mode: false
|
|
|
203
208
|
- `elab_strict_version_match` controls what elAPI should do if an unsupported eLabFTW version is detected. eLabFTW does
|
|
204
209
|
introduce breaking API change from time to time. Starting from elAPI 2.4.5, elAPI maintains [a strict set of eLabFTW
|
|
205
210
|
versions](#compatibility), i.e., elAPI and its plugins are expected to work for these versions. This is to prevent
|
|
206
|
-
unexpected behavior due to the breaking changes. If the detected eLabFTW server version is not supported,
|
|
207
|
-
default (`elab_strict_version_match:
|
|
208
|
-
message and continue
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
211
|
+
unexpected behavior due to the breaking changes. If the detected eLabFTW server majo.minor version is not supported,
|
|
212
|
+
elAPI by default (`elab_strict_version_match: warn_minor_only`) will throw a warning
|
|
213
|
+
message and continue normally. `elab_strict_version_match` currently accepts the following
|
|
214
|
+
modes/values:
|
|
215
|
+
- `abort`: elAPI will show an `ERROR` message and abort immediately.
|
|
216
|
+
- `abort_minor_only`: elAPI will ignore the eLabFTW version patch number in _major.minor.patch_ version (
|
|
217
|
+
e.g., `1` is the patch number in version `5.5.1`). If the _major.minor_ version isn't
|
|
218
|
+
supported, elAPI will abort immediately.
|
|
219
|
+
- `warn`: elAPI will show an `WARNING` message and continue normally.
|
|
220
|
+
- `warn_minor_only`: The **default**. elAPI will ignore the eLabFTW version patch number in _major.minor.patch_
|
|
221
|
+
version (
|
|
222
|
+
e.g., `1` is the patch number in version `5.5.1`). If the _major.minor_ version isn't
|
|
223
|
+
supported, elAPI will show a warning and continue normally.
|
|
224
|
+
- `yolo`: elAPI will ignore any version support conflict.
|
|
212
225
|
- `enable_http2` enables HTTP/2 protocol support which by default is turned off. Be aware
|
|
213
226
|
of [known issues](https://github.com/encode/httpx/discussions/2112) with HTTP/2 if you are making async requests with
|
|
214
227
|
a heavy load.
|
|
@@ -233,7 +246,7 @@ You can get an overview of detected configuration with `elapi show-config`. `sho
|
|
|
233
246
|
which configuration values are actually used by elAPI – especially if you are working with multiple configuration files.
|
|
234
247
|
|
|
235
248
|
```shell
|
|
236
|
-
|
|
249
|
+
elapi show-config # host username: "culdesac"
|
|
237
250
|
```
|
|
238
251
|
|
|
239
252
|

|
|
@@ -256,7 +269,7 @@ juggling between multiple API keys can still lead to confusion as to which API k
|
|
|
256
269
|
`2.4.1` adds the `whomai` command that shows the essential information about the requesting eLab user.
|
|
257
270
|
|
|
258
271
|
```shell
|
|
259
|
-
|
|
272
|
+
elapi whoami
|
|
260
273
|
```
|
|
261
274
|
|
|
262
275
|

|
|
@@ -280,7 +293,7 @@ Check out the [examples directory](https://github.com/uhd-urz/elAPI/tree/main/ex
|
|
|
280
293
|
examples with elAPI. elAPI CLI usage details can be displayed with:
|
|
281
294
|
|
|
282
295
|
```shell
|
|
283
|
-
|
|
296
|
+
elapi --help
|
|
284
297
|
|
|
285
298
|
```
|
|
286
299
|
|
|
@@ -289,21 +302,21 @@ $ elapi --help
|
|
|
289
302
|
Request an overview of a running eLabFTW server:
|
|
290
303
|
|
|
291
304
|
```shell
|
|
292
|
-
|
|
305
|
+
elapi get info -F yml
|
|
293
306
|
# Here -F (or --format) defines the output format
|
|
294
307
|
```
|
|
295
308
|
|
|
296
309
|
You can request a list o all active experiments and export it to a `JSON` file.
|
|
297
310
|
|
|
298
311
|
```shell
|
|
299
|
-
|
|
312
|
+
elapi get experiments --export ~/Downoads/experiments.json
|
|
300
313
|
```
|
|
301
314
|
|
|
302
315
|
Enable built-in syntax highlighting with `--highlight` or `-H`. Here, the following command will fetch team information
|
|
303
316
|
of the team with team ID 1.
|
|
304
317
|
|
|
305
318
|
```shell
|
|
306
|
-
|
|
319
|
+
elapi get -H teams --id 1
|
|
307
320
|
```
|
|
308
321
|
|
|
309
322
|
elAPI runs a weak endpoint name validation against your eLabFTW API version. Run `elapi get --help` to see the
|
|
@@ -316,7 +329,7 @@ supported endpoint names for your eLabFTW server:
|
|
|
316
329
|
Create a new user by the name 'John Doe':
|
|
317
330
|
|
|
318
331
|
```shell
|
|
319
|
-
|
|
332
|
+
elapi post users --id <user id> -d '{"firstname": "John", "lastname": "Doe", "email": "test_test@itnerd.de"}'
|
|
320
333
|
```
|
|
321
334
|
|
|
322
335
|
### `PATCH` requests
|
|
@@ -324,20 +337,20 @@ $ elapi post users --id <user id> -d '{"firstname": "John", "lastname": "Doe", "
|
|
|
324
337
|
Update an existing user's email address:
|
|
325
338
|
|
|
326
339
|
```shell
|
|
327
|
-
|
|
340
|
+
elapi patch users --id <user id> -d '{"email": "new_email@itnerd.de"}'
|
|
328
341
|
```
|
|
329
342
|
|
|
330
343
|
`patch` command allows us to make changes to eLabFTW server settings. E.g., you can update the time (in minutes)
|
|
331
344
|
after which the authentication cookie will expire.
|
|
332
345
|
|
|
333
346
|
```shell
|
|
334
|
-
|
|
347
|
+
elapi patch config -d '{"cookie_validity_time": 43200}'
|
|
335
348
|
```
|
|
336
349
|
|
|
337
350
|
You can publish an announcement to all the members.
|
|
338
351
|
|
|
339
352
|
```shell
|
|
340
|
-
|
|
353
|
+
elapi patch config -d '{"announcement": "Notice: Server will be down tomorrow at midnight due to scheduled maintenance."}'
|
|
341
354
|
```
|
|
342
355
|
|
|
343
356
|
### `DELETE` requests
|
|
@@ -345,13 +358,13 @@ $ elapi patch config -d '{"announcement": "Notice: Server will be down tomorrow
|
|
|
345
358
|
Delete all the tags associated with an experiment:
|
|
346
359
|
|
|
347
360
|
```shell
|
|
348
|
-
|
|
361
|
+
elapi delete experiments -i <experiment ID> --sub tags
|
|
349
362
|
```
|
|
350
363
|
|
|
351
364
|
You can reset the configuration to default values.
|
|
352
365
|
|
|
353
366
|
```shell
|
|
354
|
-
|
|
367
|
+
elapi delete config
|
|
355
368
|
```
|
|
356
369
|
|
|
357
370
|
### `experiments` built-in plugin
|
|
@@ -360,28 +373,28 @@ $ elapi delete config
|
|
|
360
373
|
to `~/Downloads` directory.
|
|
361
374
|
|
|
362
375
|
```shell
|
|
363
|
-
|
|
376
|
+
elapi experiments get -i <experiment unique elabid> -F pdf --export ~/Downloads/
|
|
364
377
|
```
|
|
365
378
|
|
|
366
379
|
Append text in Markdown to an existing experiment by its ID:
|
|
367
380
|
|
|
368
381
|
```shell
|
|
369
|
-
|
|
382
|
+
elapi experiments append --id <experiment ID> -M -t "**New content.**"
|
|
370
383
|
```
|
|
371
384
|
|
|
372
385
|
You can also upload an attachment to an experiment.
|
|
373
386
|
|
|
374
387
|
```shell
|
|
375
|
-
|
|
388
|
+
elapi experiments upload-attachment --id <experiment ID> --path <path to attachment file> --comment <comment for your attachment>
|
|
376
389
|
```
|
|
377
390
|
|
|
378
391
|
### `mail` built-in plugin
|
|
379
392
|
|
|
380
393
|
Sometimes when a script has finished, you and your team would want to receive an email about its success/failure. elAPI
|
|
381
394
|
offers a no-code solution for this: the `mail` plugin. The `mail` plugin is not enabled by default. To enable it,
|
|
382
|
-
install elAPI with the optional dependency `mail`: `pip install elapi[mail]` or `uv add elapi[mail]`.
|
|
383
|
-
to read more about how to configure the `mail`
|
|
384
|
-
mail server configuration and trigger conditions. In a
|
|
395
|
+
install elAPI with the optional dependency `mail`: `pip install elapi[mail]` or `uv add elapi[mail]`.
|
|
396
|
+
[__See the wiki__](https://github.com/uhd-urz/elAPI/wiki/mail-plugin) to read more about how to configure the `mail`
|
|
397
|
+
plugin with your mail server configuration and trigger conditions. In a
|
|
385
398
|
nutshell, the `mail` plugin will scan the logs when a script/plugin is done to look for pre-configured trigger
|
|
386
399
|
conditions, and if found, it will send an email. The trigger conditions can be atomic and scope-based, i.e., an email
|
|
387
400
|
can be sent only when a specific plugin task/command is finished, and/or when a matching log state and/or a matching log
|
|
@@ -449,3 +462,27 @@ project_dir: ~/awesome # Path to the project root directory where the plugin is
|
|
|
449
462
|
This metadata file of plugin `awesome` must be placed inside `~/.local/share/elapi/plugins/awesome`. Notice, the plugin
|
|
450
463
|
name must also match the parent directory name of `elapi_plugin_metadata.yml`. This way we ensure a plugin name remains
|
|
451
464
|
unique.
|
|
465
|
+
|
|
466
|
+
## Talks, workshops, and publications
|
|
467
|
+
|
|
468
|
+
elAPI was presented/discussed in the following talks and workshops at various conferences and meetups:
|
|
469
|
+
|
|
470
|
+
1. [Automation in eLabFTW](https://www.fdm.nrw/wp-content/uploads/2025/06/Program_FDMWerkstatt_2024.pdf) at
|
|
471
|
+
FDM-Werkstatt 2024, RWTH Aachen University by [fdm.nrw](https://www.fdm.nrw/)
|
|
472
|
+
2. [elAPI 2.0 (Third-party plugins)](https://www.uni-muenster.de/Forschungsdaten/en/angebote/veranstaltungen/#top) at
|
|
473
|
+
eLab training 2024, University of Münster by [fdm.nrw](https://www.fdm.nrw/)
|
|
474
|
+
3. [Boost your productivity: Exploring eLabFTW's API live](https://web.archive.org/web/20240712155250/https://www.uni-marburg.de/en/hefdi/hefdi-data-event/hefdi-data-week-2024#hefdi-data-week-programme-overview)
|
|
475
|
+
at HeFDI Data Week 2024, Online
|
|
476
|
+
4. [elAPI](https://www.youtube.com/watch?v=UrX7a-IgGnI)
|
|
477
|
+
at [eLabFTW Community Meeting III](https://www.deltablot.com/posts/community-meeting-3/)
|
|
478
|
+
by [eLabFTW](https://github.com/elabftw/elabftw)
|
|
479
|
+
5. elAPI [poster](https://archiv.ub.uni-heidelberg.de/volltextserver/36226/3/elAPI_Poster_E-Science-Tage_2025.pdf)
|
|
480
|
+
and [paper](https://books.ub.uni-heidelberg.de/heibooks/catalog/book/1652/chapter/23952)
|
|
481
|
+
at [E-Science-Tage 2025](https://e-science-tage.de/en/programme-2025) by Heidelberg University, Germany
|
|
482
|
+
|
|
483
|
+
## Third-party plugins/apps
|
|
484
|
+
|
|
485
|
+
1. [elAPI Plugins](https://github.com/sfb1638/elAPI_Plugins): elAPI Plugins is a desktop application for bulk importing
|
|
486
|
+
and exporting resources and experiments in eLabFTW instances. The project is developed as part of the INF Project of
|
|
487
|
+
[CRC 1638](https://www.sfb1638.de/) at
|
|
488
|
+
the [Heidelberg University Biochemistry Center (BZH)](https://bzh.db-engine.de/).
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
</a>
|
|
9
9
|
<a href="#compatibility">
|
|
10
10
|
<img alt="Static Badge" src="https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-%230d7dbe">
|
|
11
|
-
<img alt="Static Badge" src="https://img.shields.io/badge/eLabFTW%20support-5.1%20%7C%205.2%20%7C%205.3+-%2323b3be">
|
|
11
|
+
<img alt="Static Badge" src="https://img.shields.io/badge/eLabFTW%20support-5.1%20%7C%205.2%20%7C%205.3%20%7C%205.4%20%7C%205.5+-%2323b3be">
|
|
12
|
+
</a>
|
|
13
|
+
<a href="#talks-workshops-and-publications">
|
|
14
|
+
<img alt="Static Badge" src="https://img.shields.io/badge/DOI-10.11588%2FDATA%2FE4XHXZ-blue?style=plastic&link=https%3A%2F%2Fdoi.org%2F10.11588%2FDATA%2FE4XHXZ">
|
|
12
15
|
</a>
|
|
13
16
|
</p>
|
|
14
17
|
|
|
@@ -30,10 +33,10 @@ From [the API documentation](https://doc.elabftw.net/api/v2/#/Users/read-user):
|
|
|
30
33
|
With elAPI you can do the following:
|
|
31
34
|
|
|
32
35
|
```sh
|
|
33
|
-
|
|
36
|
+
elapi get experiments --format csv --export ~/Downloads/
|
|
34
37
|
```
|
|
35
38
|
|
|
36
|
-
Once the command is run, in the background, elAPI will read host (eLab server) address, API key and various other
|
|
39
|
+
Once the command is run, in the background, elAPI will read host (eLab server) address, API key, and various other
|
|
37
40
|
settings (see [configuration](#configuration)) from the configuration file `elapi.yml`, perform validation (e.g.,
|
|
38
41
|
whether the server address is valid), fetch all _experiments_ list, convert them to `CSV`, and export them to your
|
|
39
42
|
local `~/Downloads/` folder.
|
|
@@ -46,7 +49,7 @@ install packages in isolated virtual environments, so elAPI installed as a CLI t
|
|
|
46
49
|
installed inside other virtual environments.
|
|
47
50
|
|
|
48
51
|
```shell
|
|
49
|
-
|
|
52
|
+
uv tool install elapi
|
|
50
53
|
# elAPI can be updated to the latest version with
|
|
51
54
|
# uv tool upgrade elapi
|
|
52
55
|
```
|
|
@@ -79,7 +82,7 @@ Once you have elAPI [installed](#installation), to **quickly** get started, run
|
|
|
79
82
|
questions about your eLabFTW server with examples to help you fill in the answers. Here's a demo:
|
|
80
83
|
|
|
81
84
|
```shell
|
|
82
|
-
|
|
85
|
+
elapi init
|
|
83
86
|
```
|
|
84
87
|
|
|
85
88
|
<video src='https://github.com/user-attachments/assets/8d5f69ed-b644-4d75-b816-d06d4e937105'> </video>
|
|
@@ -93,7 +96,9 @@ your configuration details.
|
|
|
93
96
|
|
|
94
97
|
elAPI is compatible with the following Python versions: `3.11`, `3.12`, `3.13`, `3.14`. elAPI supports
|
|
95
98
|
the [eLabFTW REST API v2](https://doc.elabftw.net/api/v2/), and can be used with the following eLabFTW
|
|
96
|
-
versions: `5.
|
|
99
|
+
versions: `5.5.5`, `5.5.4`, `5.5.3`, `5.5.2`, `5.5.1`, `5.5.0`, `5.4.6`, `5.4.5`, `5.4.4`, `5.4.3`, `5.4.2`, `5.4.1`,
|
|
100
|
+
`5.4.0`, `5.3.11`, `5.3.10`, `5.3.9`, `5.3.8`, `5.3.7`, `5.3.6`,
|
|
101
|
+
`5.3.5`, `5.3.4`, `5.3.3`, `5.3.2`, `5.3.1`, `5.3.0`, `5.2.8`, `5.2.7`, `5.2.6`, `5.2.5`, `5.2.4`,
|
|
97
102
|
`5.2.3`, `5.2.2`, `5.2.1`, `5.2.0`, `5.1.1`.
|
|
98
103
|
|
|
99
104
|
### elAPI strict version support
|
|
@@ -136,7 +141,7 @@ host: <host API url>
|
|
|
136
141
|
api_token: <token with at least read-access>
|
|
137
142
|
# "A.k.a API key". You can generate an API token from eLabFTW user panel -> API keys tab.
|
|
138
143
|
export_dir: ~/Downloads/elAPI
|
|
139
|
-
elab_strict_version_match: "
|
|
144
|
+
elab_strict_version_match: "warn_minor_only"
|
|
140
145
|
unsafe_api_token_warning: true
|
|
141
146
|
enable_http2: false
|
|
142
147
|
verify_ssl: true
|
|
@@ -153,12 +158,20 @@ development_mode: false
|
|
|
153
158
|
- `elab_strict_version_match` controls what elAPI should do if an unsupported eLabFTW version is detected. eLabFTW does
|
|
154
159
|
introduce breaking API change from time to time. Starting from elAPI 2.4.5, elAPI maintains [a strict set of eLabFTW
|
|
155
160
|
versions](#compatibility), i.e., elAPI and its plugins are expected to work for these versions. This is to prevent
|
|
156
|
-
unexpected behavior due to the breaking changes. If the detected eLabFTW server version is not supported,
|
|
157
|
-
default (`elab_strict_version_match:
|
|
158
|
-
message and continue
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
161
|
+
unexpected behavior due to the breaking changes. If the detected eLabFTW server majo.minor version is not supported,
|
|
162
|
+
elAPI by default (`elab_strict_version_match: warn_minor_only`) will throw a warning
|
|
163
|
+
message and continue normally. `elab_strict_version_match` currently accepts the following
|
|
164
|
+
modes/values:
|
|
165
|
+
- `abort`: elAPI will show an `ERROR` message and abort immediately.
|
|
166
|
+
- `abort_minor_only`: elAPI will ignore the eLabFTW version patch number in _major.minor.patch_ version (
|
|
167
|
+
e.g., `1` is the patch number in version `5.5.1`). If the _major.minor_ version isn't
|
|
168
|
+
supported, elAPI will abort immediately.
|
|
169
|
+
- `warn`: elAPI will show an `WARNING` message and continue normally.
|
|
170
|
+
- `warn_minor_only`: The **default**. elAPI will ignore the eLabFTW version patch number in _major.minor.patch_
|
|
171
|
+
version (
|
|
172
|
+
e.g., `1` is the patch number in version `5.5.1`). If the _major.minor_ version isn't
|
|
173
|
+
supported, elAPI will show a warning and continue normally.
|
|
174
|
+
- `yolo`: elAPI will ignore any version support conflict.
|
|
162
175
|
- `enable_http2` enables HTTP/2 protocol support which by default is turned off. Be aware
|
|
163
176
|
of [known issues](https://github.com/encode/httpx/discussions/2112) with HTTP/2 if you are making async requests with
|
|
164
177
|
a heavy load.
|
|
@@ -183,7 +196,7 @@ You can get an overview of detected configuration with `elapi show-config`. `sho
|
|
|
183
196
|
which configuration values are actually used by elAPI – especially if you are working with multiple configuration files.
|
|
184
197
|
|
|
185
198
|
```shell
|
|
186
|
-
|
|
199
|
+
elapi show-config # host username: "culdesac"
|
|
187
200
|
```
|
|
188
201
|
|
|
189
202
|

|
|
@@ -206,7 +219,7 @@ juggling between multiple API keys can still lead to confusion as to which API k
|
|
|
206
219
|
`2.4.1` adds the `whomai` command that shows the essential information about the requesting eLab user.
|
|
207
220
|
|
|
208
221
|
```shell
|
|
209
|
-
|
|
222
|
+
elapi whoami
|
|
210
223
|
```
|
|
211
224
|
|
|
212
225
|

|
|
@@ -230,7 +243,7 @@ Check out the [examples directory](https://github.com/uhd-urz/elAPI/tree/main/ex
|
|
|
230
243
|
examples with elAPI. elAPI CLI usage details can be displayed with:
|
|
231
244
|
|
|
232
245
|
```shell
|
|
233
|
-
|
|
246
|
+
elapi --help
|
|
234
247
|
|
|
235
248
|
```
|
|
236
249
|
|
|
@@ -239,21 +252,21 @@ $ elapi --help
|
|
|
239
252
|
Request an overview of a running eLabFTW server:
|
|
240
253
|
|
|
241
254
|
```shell
|
|
242
|
-
|
|
255
|
+
elapi get info -F yml
|
|
243
256
|
# Here -F (or --format) defines the output format
|
|
244
257
|
```
|
|
245
258
|
|
|
246
259
|
You can request a list o all active experiments and export it to a `JSON` file.
|
|
247
260
|
|
|
248
261
|
```shell
|
|
249
|
-
|
|
262
|
+
elapi get experiments --export ~/Downoads/experiments.json
|
|
250
263
|
```
|
|
251
264
|
|
|
252
265
|
Enable built-in syntax highlighting with `--highlight` or `-H`. Here, the following command will fetch team information
|
|
253
266
|
of the team with team ID 1.
|
|
254
267
|
|
|
255
268
|
```shell
|
|
256
|
-
|
|
269
|
+
elapi get -H teams --id 1
|
|
257
270
|
```
|
|
258
271
|
|
|
259
272
|
elAPI runs a weak endpoint name validation against your eLabFTW API version. Run `elapi get --help` to see the
|
|
@@ -266,7 +279,7 @@ supported endpoint names for your eLabFTW server:
|
|
|
266
279
|
Create a new user by the name 'John Doe':
|
|
267
280
|
|
|
268
281
|
```shell
|
|
269
|
-
|
|
282
|
+
elapi post users --id <user id> -d '{"firstname": "John", "lastname": "Doe", "email": "test_test@itnerd.de"}'
|
|
270
283
|
```
|
|
271
284
|
|
|
272
285
|
### `PATCH` requests
|
|
@@ -274,20 +287,20 @@ $ elapi post users --id <user id> -d '{"firstname": "John", "lastname": "Doe", "
|
|
|
274
287
|
Update an existing user's email address:
|
|
275
288
|
|
|
276
289
|
```shell
|
|
277
|
-
|
|
290
|
+
elapi patch users --id <user id> -d '{"email": "new_email@itnerd.de"}'
|
|
278
291
|
```
|
|
279
292
|
|
|
280
293
|
`patch` command allows us to make changes to eLabFTW server settings. E.g., you can update the time (in minutes)
|
|
281
294
|
after which the authentication cookie will expire.
|
|
282
295
|
|
|
283
296
|
```shell
|
|
284
|
-
|
|
297
|
+
elapi patch config -d '{"cookie_validity_time": 43200}'
|
|
285
298
|
```
|
|
286
299
|
|
|
287
300
|
You can publish an announcement to all the members.
|
|
288
301
|
|
|
289
302
|
```shell
|
|
290
|
-
|
|
303
|
+
elapi patch config -d '{"announcement": "Notice: Server will be down tomorrow at midnight due to scheduled maintenance."}'
|
|
291
304
|
```
|
|
292
305
|
|
|
293
306
|
### `DELETE` requests
|
|
@@ -295,13 +308,13 @@ $ elapi patch config -d '{"announcement": "Notice: Server will be down tomorrow
|
|
|
295
308
|
Delete all the tags associated with an experiment:
|
|
296
309
|
|
|
297
310
|
```shell
|
|
298
|
-
|
|
311
|
+
elapi delete experiments -i <experiment ID> --sub tags
|
|
299
312
|
```
|
|
300
313
|
|
|
301
314
|
You can reset the configuration to default values.
|
|
302
315
|
|
|
303
316
|
```shell
|
|
304
|
-
|
|
317
|
+
elapi delete config
|
|
305
318
|
```
|
|
306
319
|
|
|
307
320
|
### `experiments` built-in plugin
|
|
@@ -310,28 +323,28 @@ $ elapi delete config
|
|
|
310
323
|
to `~/Downloads` directory.
|
|
311
324
|
|
|
312
325
|
```shell
|
|
313
|
-
|
|
326
|
+
elapi experiments get -i <experiment unique elabid> -F pdf --export ~/Downloads/
|
|
314
327
|
```
|
|
315
328
|
|
|
316
329
|
Append text in Markdown to an existing experiment by its ID:
|
|
317
330
|
|
|
318
331
|
```shell
|
|
319
|
-
|
|
332
|
+
elapi experiments append --id <experiment ID> -M -t "**New content.**"
|
|
320
333
|
```
|
|
321
334
|
|
|
322
335
|
You can also upload an attachment to an experiment.
|
|
323
336
|
|
|
324
337
|
```shell
|
|
325
|
-
|
|
338
|
+
elapi experiments upload-attachment --id <experiment ID> --path <path to attachment file> --comment <comment for your attachment>
|
|
326
339
|
```
|
|
327
340
|
|
|
328
341
|
### `mail` built-in plugin
|
|
329
342
|
|
|
330
343
|
Sometimes when a script has finished, you and your team would want to receive an email about its success/failure. elAPI
|
|
331
344
|
offers a no-code solution for this: the `mail` plugin. The `mail` plugin is not enabled by default. To enable it,
|
|
332
|
-
install elAPI with the optional dependency `mail`: `pip install elapi[mail]` or `uv add elapi[mail]`.
|
|
333
|
-
to read more about how to configure the `mail`
|
|
334
|
-
mail server configuration and trigger conditions. In a
|
|
345
|
+
install elAPI with the optional dependency `mail`: `pip install elapi[mail]` or `uv add elapi[mail]`.
|
|
346
|
+
[__See the wiki__](https://github.com/uhd-urz/elAPI/wiki/mail-plugin) to read more about how to configure the `mail`
|
|
347
|
+
plugin with your mail server configuration and trigger conditions. In a
|
|
335
348
|
nutshell, the `mail` plugin will scan the logs when a script/plugin is done to look for pre-configured trigger
|
|
336
349
|
conditions, and if found, it will send an email. The trigger conditions can be atomic and scope-based, i.e., an email
|
|
337
350
|
can be sent only when a specific plugin task/command is finished, and/or when a matching log state and/or a matching log
|
|
@@ -399,3 +412,27 @@ project_dir: ~/awesome # Path to the project root directory where the plugin is
|
|
|
399
412
|
This metadata file of plugin `awesome` must be placed inside `~/.local/share/elapi/plugins/awesome`. Notice, the plugin
|
|
400
413
|
name must also match the parent directory name of `elapi_plugin_metadata.yml`. This way we ensure a plugin name remains
|
|
401
414
|
unique.
|
|
415
|
+
|
|
416
|
+
## Talks, workshops, and publications
|
|
417
|
+
|
|
418
|
+
elAPI was presented/discussed in the following talks and workshops at various conferences and meetups:
|
|
419
|
+
|
|
420
|
+
1. [Automation in eLabFTW](https://www.fdm.nrw/wp-content/uploads/2025/06/Program_FDMWerkstatt_2024.pdf) at
|
|
421
|
+
FDM-Werkstatt 2024, RWTH Aachen University by [fdm.nrw](https://www.fdm.nrw/)
|
|
422
|
+
2. [elAPI 2.0 (Third-party plugins)](https://www.uni-muenster.de/Forschungsdaten/en/angebote/veranstaltungen/#top) at
|
|
423
|
+
eLab training 2024, University of Münster by [fdm.nrw](https://www.fdm.nrw/)
|
|
424
|
+
3. [Boost your productivity: Exploring eLabFTW's API live](https://web.archive.org/web/20240712155250/https://www.uni-marburg.de/en/hefdi/hefdi-data-event/hefdi-data-week-2024#hefdi-data-week-programme-overview)
|
|
425
|
+
at HeFDI Data Week 2024, Online
|
|
426
|
+
4. [elAPI](https://www.youtube.com/watch?v=UrX7a-IgGnI)
|
|
427
|
+
at [eLabFTW Community Meeting III](https://www.deltablot.com/posts/community-meeting-3/)
|
|
428
|
+
by [eLabFTW](https://github.com/elabftw/elabftw)
|
|
429
|
+
5. elAPI [poster](https://archiv.ub.uni-heidelberg.de/volltextserver/36226/3/elAPI_Poster_E-Science-Tage_2025.pdf)
|
|
430
|
+
and [paper](https://books.ub.uni-heidelberg.de/heibooks/catalog/book/1652/chapter/23952)
|
|
431
|
+
at [E-Science-Tage 2025](https://e-science-tage.de/en/programme-2025) by Heidelberg University, Germany
|
|
432
|
+
|
|
433
|
+
## Third-party plugins/apps
|
|
434
|
+
|
|
435
|
+
1. [elAPI Plugins](https://github.com/sfb1638/elAPI_Plugins): elAPI Plugins is a desktop application for bulk importing
|
|
436
|
+
and exporting resources and experiments in eLabFTW instances. The project is developed as part of the INF Project of
|
|
437
|
+
[CRC 1638](https://www.sfb1638.de/) at
|
|
438
|
+
the [Heidelberg University Biochemistry Center (BZH)](https://bzh.db-engine.de/).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "elapi"
|
|
3
|
-
version = "2.4.
|
|
3
|
+
version = "2.4.8"
|
|
4
4
|
description = "elAPI is a powerful, extensible API client for eLabFTW."
|
|
5
5
|
authors = [{ name = "Alexander Haller, Mahadi Xion", email = "elabftw@uni-heidelberg.de" }]
|
|
6
6
|
requires-python = ">=3.11.0,<4"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.4.7
|
|
@@ -63,8 +63,10 @@ KEY_ELAB_STRICT_VERSION_MATCH: str = "ELAB_STRICT_VERSION_MATCH"
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
class ElabStrictVersionMatchModes(StrEnum):
|
|
66
|
+
abort_minor_only = "abort_minor_only"
|
|
66
67
|
abort = "abort"
|
|
67
68
|
warn = "warn"
|
|
69
|
+
warn_minor_only = "warn_minor_only"
|
|
68
70
|
yolo = "yolo"
|
|
69
71
|
|
|
70
72
|
|
|
@@ -32,6 +32,23 @@ class ElabScopes(IntEnum):
|
|
|
32
32
|
|
|
33
33
|
class ElabVersionDefaults:
|
|
34
34
|
supported_versions: tuple[str, ...] = (
|
|
35
|
+
"5.5.5",
|
|
36
|
+
"5.5.4",
|
|
37
|
+
"5.5.3",
|
|
38
|
+
"5.5.2",
|
|
39
|
+
"5.5.1",
|
|
40
|
+
"5.5.0",
|
|
41
|
+
"5.4.6",
|
|
42
|
+
"5.4.5",
|
|
43
|
+
"5.4.4",
|
|
44
|
+
"5.4.3",
|
|
45
|
+
"5.4.2",
|
|
46
|
+
"5.4.1",
|
|
47
|
+
"5.4.0",
|
|
48
|
+
"5.3.11",
|
|
49
|
+
"5.3.10",
|
|
50
|
+
"5.3.9",
|
|
51
|
+
"5.3.8",
|
|
35
52
|
"5.3.7",
|
|
36
53
|
"5.3.6",
|
|
37
54
|
"5.3.5",
|
|
@@ -53,3 +70,13 @@ class ElabVersionDefaults:
|
|
|
53
70
|
)
|
|
54
71
|
versions_dir: Path = Path(__file__).parent / "_supported_versions"
|
|
55
72
|
file_ext: str = "json"
|
|
73
|
+
|
|
74
|
+
@classmethod
|
|
75
|
+
def get_minor_versions(cls) -> tuple[str, ...]:
|
|
76
|
+
unique_versions = []
|
|
77
|
+
for version in cls.supported_versions:
|
|
78
|
+
major, minor, *_ = version.split(".")
|
|
79
|
+
minor_version = f"{major}.{minor}"
|
|
80
|
+
if minor_version not in unique_versions:
|
|
81
|
+
unique_versions.append(minor_version)
|
|
82
|
+
return tuple(unique_versions)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apikeys": [],
|
|
3
|
+
"compounds": [],
|
|
4
|
+
"config": [],
|
|
5
|
+
"event": [],
|
|
6
|
+
"events": [],
|
|
7
|
+
"experiments": [
|
|
8
|
+
"comments",
|
|
9
|
+
"compounds",
|
|
10
|
+
"experiments_links",
|
|
11
|
+
"items_links",
|
|
12
|
+
"revisions",
|
|
13
|
+
"steps",
|
|
14
|
+
"tags",
|
|
15
|
+
"uploads"
|
|
16
|
+
],
|
|
17
|
+
"experiments_templates": [
|
|
18
|
+
"revisions",
|
|
19
|
+
"steps",
|
|
20
|
+
"tags"
|
|
21
|
+
],
|
|
22
|
+
"exports": [],
|
|
23
|
+
"extra_fields_keys": [],
|
|
24
|
+
"favtags": [],
|
|
25
|
+
"idps": [],
|
|
26
|
+
"import": [],
|
|
27
|
+
"info": [],
|
|
28
|
+
"items": [
|
|
29
|
+
"comments",
|
|
30
|
+
"compounds",
|
|
31
|
+
"experiments_links",
|
|
32
|
+
"items_links",
|
|
33
|
+
"revisions",
|
|
34
|
+
"steps",
|
|
35
|
+
"tags",
|
|
36
|
+
"uploads"
|
|
37
|
+
],
|
|
38
|
+
"items_types": [
|
|
39
|
+
"steps",
|
|
40
|
+
"tags"
|
|
41
|
+
],
|
|
42
|
+
"reports": [],
|
|
43
|
+
"teams": [
|
|
44
|
+
"experiments_categories",
|
|
45
|
+
"experiments_status",
|
|
46
|
+
"items_status",
|
|
47
|
+
"resources_categories",
|
|
48
|
+
"teamgroups"
|
|
49
|
+
],
|
|
50
|
+
"todolist": [],
|
|
51
|
+
"unfinished_steps": [],
|
|
52
|
+
"users": [
|
|
53
|
+
"notifications",
|
|
54
|
+
"uploads"
|
|
55
|
+
]
|
|
56
|
+
}
|