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.
Files changed (135) hide show
  1. {elapi-2.4.6 → elapi-2.4.8}/PKG-INFO +69 -32
  2. {elapi-2.4.6 → elapi-2.4.8}/README.md +68 -31
  3. {elapi-2.4.6 → elapi-2.4.8}/pyproject.toml +1 -1
  4. elapi-2.4.8/src/elapi/VERSION +1 -0
  5. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_names.py +2 -0
  6. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_names.py +27 -0
  7. elapi-2.4.8/src/elapi/api/_supported_versions/5.3.6.json +56 -0
  8. elapi-2.4.8/src/elapi/api/_supported_versions/5.3.7.json +56 -0
  9. elapi-2.4.8/src/elapi/api/_supported_versions/5.3.8.json +56 -0
  10. elapi-2.4.8/src/elapi/api/_supported_versions/5.3.9.json +56 -0
  11. elapi-2.4.8/src/elapi/api/_supported_versions/5.4.0.json +58 -0
  12. elapi-2.4.8/src/elapi/api/_supported_versions/5.4.1.json +58 -0
  13. elapi-2.4.8/src/elapi/api/_supported_versions/5.4.2.json +58 -0
  14. elapi-2.4.8/src/elapi/api/_supported_versions/5.4.3.json +58 -0
  15. elapi-2.4.8/src/elapi/api/_supported_versions/5.4.4.json +58 -0
  16. elapi-2.4.8/src/elapi/api/_supported_versions/5.4.5.json +58 -0
  17. elapi-2.4.8/src/elapi/api/_supported_versions/5.4.6.json +58 -0
  18. elapi-2.4.8/src/elapi/api/_supported_versions/5.5.0.json +58 -0
  19. elapi-2.4.8/src/elapi/api/_supported_versions/5.5.1.json +58 -0
  20. elapi-2.4.8/src/elapi/api/_supported_versions/5.5.2.json +58 -0
  21. elapi-2.4.8/src/elapi/api/_supported_versions/5.5.3.json +58 -0
  22. elapi-2.4.8/src/elapi/api/_supported_versions/5.5.4.json +58 -0
  23. elapi-2.4.8/src/elapi/api/_supported_versions/5.5.5.json +59 -0
  24. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/api.py +44 -11
  25. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/elapi.py +14 -8
  26. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/config.py +1 -1
  27. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/specification.py +20 -3
  28. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/validators.py +25 -2
  29. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/get_whoami.py +8 -2
  30. elapi-2.4.6/src/elapi/VERSION +0 -1
  31. {elapi-2.4.6 → elapi-2.4.8}/LICENSE +0 -0
  32. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/.DS_Store +0 -0
  33. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/__init__.py +0 -0
  34. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/__init__.py +0 -0
  35. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_cache.py +0 -0
  36. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/__init__.py +0 -0
  37. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/base.py +0 -0
  38. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/handlers/__init__.py +0 -0
  39. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/handlers/base.py +0 -0
  40. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/handlers/callback.py +0 -0
  41. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_loggers/handlers/stderr.py +0 -0
  42. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_core_init/_utils.py +0 -0
  43. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/__init__.py +0 -0
  44. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/haggis/LICENSE +0 -0
  45. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/haggis/__init__.py +0 -0
  46. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/haggis/logs.py +0 -0
  47. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/_vendor/haggis/version.py +0 -0
  48. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/__init__.py +0 -0
  49. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_handle_unexp_response.py +0 -0
  50. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_openapi_parser.py +0 -0
  51. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.1.15.json +0 -0
  52. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.0.json +0 -0
  53. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.1.json +0 -0
  54. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.2.json +0 -0
  55. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.3.json +0 -0
  56. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.4.json +0 -0
  57. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.5.json +0 -0
  58. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.6.json +0 -0
  59. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.7.json +0 -0
  60. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.2.8.json +0 -0
  61. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.3.0.json +0 -0
  62. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.3.1.json +0 -0
  63. /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
  64. /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
  65. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/_supported_versions/5.3.2.json +0 -0
  66. /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
  67. /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
  68. /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
  69. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/endpoint.py +0 -0
  70. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/api/validators.py +0 -0
  71. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/__init__.py +0 -0
  72. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/__main__.py +0 -0
  73. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/_plugin_handler.py +0 -0
  74. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/_venv_state_manager.py +0 -0
  75. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/cli/doc.py +0 -0
  76. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/__init__.py +0 -0
  77. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/_config_history.py +0 -0
  78. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/_overload_history.py +0 -0
  79. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/overridable_vars.py +0 -0
  80. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/configuration/validators.py +0 -0
  81. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/core_validators/__init__.py +0 -0
  82. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/core_validators/base.py +0 -0
  83. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/core_validators/path.py +0 -0
  84. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/__init__.py +0 -0
  85. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/base.py +0 -0
  86. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/handlers/__init__.py +0 -0
  87. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/handlers/file.py +0 -0
  88. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/loggers/log_file.py +0 -0
  89. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/path.py +0 -0
  90. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/.DS_Store +0 -0
  91. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/__init__.py +0 -0
  92. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/__init__.py +0 -0
  93. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/_doc.py +0 -0
  94. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/bill_teams.py +0 -0
  95. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/cli.py +0 -0
  96. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/configuration.py +0 -0
  97. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/formats.py +0 -0
  98. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/generate_table.py +0 -0
  99. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/logger.py +0 -0
  100. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/names.py +0 -0
  101. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/registry.py +0 -0
  102. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/bill_teams/utils.py +0 -0
  103. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/__init__.py +0 -0
  104. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/cli.py +0 -0
  105. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/cli_helpers.py +0 -0
  106. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/export.py +0 -0
  107. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/get_data_from_input_or_path.py +0 -0
  108. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/get_information.py +0 -0
  109. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/commons/get_location_from_headers.py +0 -0
  110. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/__init__.py +0 -0
  111. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/_doc.py +0 -0
  112. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/cli.py +0 -0
  113. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/experiments.py +0 -0
  114. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/experiments/formats.py +0 -0
  115. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/__init__.py +0 -0
  116. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/_yagmail_patch.py +0 -0
  117. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/cli.py +0 -0
  118. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/configuration.py +0 -0
  119. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/mail.py +0 -0
  120. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/names.py +0 -0
  121. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/mail/yagmail_configuration.py +0 -0
  122. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/plugins/show_config.py +0 -0
  123. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/__init__.py +0 -0
  124. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/_markdown_doc.py +0 -0
  125. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/_missing.py +0 -0
  126. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/base.py +0 -0
  127. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/colors.py +0 -0
  128. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/formats.py +0 -0
  129. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/highlight.py +0 -0
  130. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/styles/rich_utils.py +0 -0
  131. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/utils/__init__.py +0 -0
  132. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/utils/messages.py +0 -0
  133. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/utils/typer_patches.py +0 -0
  134. {elapi-2.4.6 → elapi-2.4.8}/src/elapi/utils/utils.py +0 -0
  135. {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.6
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
- $ elapi get experiments --format csv --export ~/Downloads/
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
- $ uv tool install elapi
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
- $ elapi init
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.3.6`, `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`,
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: "warn"
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, elAPI by
207
- default (`elab_strict_version_match: warn`) will throw a warning
208
- message and continue to run any command/plugin. When `elab_strict_version_match` is set to `abort`, elAPI will show an
209
- `ERROR`
210
- message and abort immediately. When `elab_strict_version_match` is set to `yolo`, elAPI will ignore any version
211
- support conflict.
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
- $ elapi show-config # host username: "culdesac"
249
+ elapi show-config # host username: "culdesac"
237
250
  ```
238
251
 
239
252
  ![elAPI show-config output](https://heibox.uni-heidelberg.de/f/00a8dabbf2124087aae4/?dl=1)
@@ -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
- $ elapi whoami
272
+ elapi whoami
260
273
  ```
261
274
 
262
275
  ![elapi whoami output](https://heibox.uni-heidelberg.de/f/e3096d5659db45e58a94/?dl=1)
@@ -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
- $ elapi --help
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
- $ elapi get info -F yml
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
- $ elapi get experiments --export ~/Downoads/experiments.json
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
- $ elapi get -H teams --id 1
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
- $ elapi post users --id <user id> -d '{"firstname": "John", "lastname": "Doe", "email": "test_test@itnerd.de"}'
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
- $ elapi patch users --id <user id> -d '{"email": "new_email@itnerd.de"}'
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
- $ elapi patch config -d '{"cookie_validity_time": 43200}'
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
- $ elapi patch config -d '{"announcement": "Notice: Server will be down tomorrow at midnight due to scheduled maintenance."}'
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
- $ elapi delete experiments -i <experiment ID> --sub tags
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
- $ elapi delete config
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
- $ elapi experiments get -i <experiment unique elabid> -F pdf --export ~/Downloads/
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
- $ elapi experiments append --id <experiment ID> -M -t "**New content.**"
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
- $ elapi experiments upload-attachment --id <experiment ID> --path <path to attachment file> --comment <comment for your attachment>
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]`. [__See the wiki__](https://github.com/uhd-urz/elAPI/wiki/mail-plugin)
383
- to read more about how to configure the `mail` plugin with your
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
- $ elapi get experiments --format csv --export ~/Downloads/
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
- $ uv tool install elapi
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
- $ elapi init
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.3.6`, `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`,
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: "warn"
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, elAPI by
157
- default (`elab_strict_version_match: warn`) will throw a warning
158
- message and continue to run any command/plugin. When `elab_strict_version_match` is set to `abort`, elAPI will show an
159
- `ERROR`
160
- message and abort immediately. When `elab_strict_version_match` is set to `yolo`, elAPI will ignore any version
161
- support conflict.
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
- $ elapi show-config # host username: "culdesac"
199
+ elapi show-config # host username: "culdesac"
187
200
  ```
188
201
 
189
202
  ![elAPI show-config output](https://heibox.uni-heidelberg.de/f/00a8dabbf2124087aae4/?dl=1)
@@ -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
- $ elapi whoami
222
+ elapi whoami
210
223
  ```
211
224
 
212
225
  ![elapi whoami output](https://heibox.uni-heidelberg.de/f/e3096d5659db45e58a94/?dl=1)
@@ -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
- $ elapi --help
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
- $ elapi get info -F yml
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
- $ elapi get experiments --export ~/Downoads/experiments.json
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
- $ elapi get -H teams --id 1
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
- $ elapi post users --id <user id> -d '{"firstname": "John", "lastname": "Doe", "email": "test_test@itnerd.de"}'
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
- $ elapi patch users --id <user id> -d '{"email": "new_email@itnerd.de"}'
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
- $ elapi patch config -d '{"cookie_validity_time": 43200}'
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
- $ elapi patch config -d '{"announcement": "Notice: Server will be down tomorrow at midnight due to scheduled maintenance."}'
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
- $ elapi delete experiments -i <experiment ID> --sub tags
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
- $ elapi delete config
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
- $ elapi experiments get -i <experiment unique elabid> -F pdf --export ~/Downloads/
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
- $ elapi experiments append --id <experiment ID> -M -t "**New content.**"
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
- $ elapi experiments upload-attachment --id <experiment ID> --path <path to attachment file> --comment <comment for your attachment>
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]`. [__See the wiki__](https://github.com/uhd-urz/elAPI/wiki/mail-plugin)
333
- to read more about how to configure the `mail` plugin with your
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.6"
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
+ }