elapi 2.4.2__tar.gz → 2.4.3__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 (96) hide show
  1. {elapi-2.4.2 → elapi-2.4.3}/PKG-INFO +1 -1
  2. {elapi-2.4.2 → elapi-2.4.3}/pyproject.toml +1 -1
  3. elapi-2.4.3/src/elapi/VERSION +1 -0
  4. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/configuration/validators.py +20 -13
  5. elapi-2.4.2/src/elapi/VERSION +0 -1
  6. {elapi-2.4.2 → elapi-2.4.3}/LICENSE +0 -0
  7. {elapi-2.4.2 → elapi-2.4.3}/README.md +0 -0
  8. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/.DS_Store +0 -0
  9. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/__init__.py +0 -0
  10. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_core_init/__init__.py +0 -0
  11. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_core_init/_loggers/__init__.py +0 -0
  12. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_core_init/_loggers/base.py +0 -0
  13. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_core_init/_loggers/handlers/__init__.py +0 -0
  14. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_core_init/_loggers/handlers/base.py +0 -0
  15. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_core_init/_loggers/handlers/callback.py +0 -0
  16. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_core_init/_loggers/handlers/stderr.py +0 -0
  17. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_core_init/_utils.py +0 -0
  18. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_names.py +0 -0
  19. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_vendor/__init__.py +0 -0
  20. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_vendor/haggis/LICENSE +0 -0
  21. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_vendor/haggis/__init__.py +0 -0
  22. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_vendor/haggis/logs.py +0 -0
  23. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/_vendor/haggis/version.py +0 -0
  24. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/api/__init__.py +0 -0
  25. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/api/api.py +0 -0
  26. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/api/endpoint.py +0 -0
  27. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/api/validators.py +0 -0
  28. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/cli/__init__.py +0 -0
  29. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/cli/__main__.py +0 -0
  30. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/cli/_plugin_handler.py +0 -0
  31. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/cli/_venv_state_manager.py +0 -0
  32. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/cli/doc.py +0 -0
  33. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/cli/elapi.py +0 -0
  34. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/configuration/__init__.py +0 -0
  35. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/configuration/_config_history.py +0 -0
  36. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/configuration/_overload_history.py +0 -0
  37. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/configuration/config.py +0 -0
  38. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/configuration/overridable_vars.py +0 -0
  39. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/core_validators/__init__.py +0 -0
  40. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/core_validators/base.py +0 -0
  41. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/core_validators/path.py +0 -0
  42. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/loggers/__init__.py +0 -0
  43. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/loggers/base.py +0 -0
  44. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/loggers/handlers/__init__.py +0 -0
  45. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/loggers/handlers/file.py +0 -0
  46. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/loggers/log_file.py +0 -0
  47. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/path.py +0 -0
  48. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/.DS_Store +0 -0
  49. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/__init__.py +0 -0
  50. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/__init__.py +0 -0
  51. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/_doc.py +0 -0
  52. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/bill_teams.py +0 -0
  53. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/cli.py +0 -0
  54. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/configuration.py +0 -0
  55. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/formats.py +0 -0
  56. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/generate_table.py +0 -0
  57. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/logger.py +0 -0
  58. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/names.py +0 -0
  59. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/registry.py +0 -0
  60. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/specification.py +0 -0
  61. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/utils.py +0 -0
  62. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/bill_teams/validators.py +0 -0
  63. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/commons/__init__.py +0 -0
  64. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/commons/cli.py +0 -0
  65. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/commons/cli_helpers.py +0 -0
  66. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/commons/export.py +0 -0
  67. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/commons/get_data_from_input_or_path.py +0 -0
  68. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/commons/get_information.py +0 -0
  69. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/commons/get_location_from_headers.py +0 -0
  70. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/commons/get_whoami.py +0 -0
  71. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/experiments/__init__.py +0 -0
  72. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/experiments/_doc.py +0 -0
  73. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/experiments/cli.py +0 -0
  74. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/experiments/experiments.py +0 -0
  75. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/experiments/formats.py +0 -0
  76. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/mail/__init__.py +0 -0
  77. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/mail/_yagmail_patch.py +0 -0
  78. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/mail/cli.py +0 -0
  79. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/mail/configuration.py +0 -0
  80. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/mail/mail.py +0 -0
  81. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/mail/names.py +0 -0
  82. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/mail/yagmail_configuration.py +0 -0
  83. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/plugins/show_config.py +0 -0
  84. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/styles/__init__.py +0 -0
  85. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/styles/_markdown_doc.py +0 -0
  86. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/styles/_missing.py +0 -0
  87. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/styles/base.py +0 -0
  88. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/styles/colors.py +0 -0
  89. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/styles/formats.py +0 -0
  90. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/styles/highlight.py +0 -0
  91. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/styles/rich_utils.py +0 -0
  92. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/utils/__init__.py +0 -0
  93. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/utils/messages.py +0 -0
  94. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/utils/typer_patches.py +0 -0
  95. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/utils/utils.py +0 -0
  96. {elapi-2.4.2 → elapi-2.4.3}/src/elapi/validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: elapi
3
- Version: 2.4.2
3
+ Version: 2.4.3
4
4
  Summary: elAPI is a powerful, extensible API client for eLabFTW.
5
5
  Keywords: elabftw,api
6
6
  Author: Alexander Haller, Mahadi Xion
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "elapi"
3
- version = "2.4.2"
3
+ version = "2.4.3"
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.3
@@ -5,6 +5,7 @@ from typing import Iterable, Optional
5
5
 
6
6
  from dynaconf.utils.boxing import DynaBox
7
7
 
8
+ from .._names import APP_NAME
8
9
  from ..configuration.config import CANON_YAML_EXTENSION, CONFIG_FILE_NAME
9
10
  from ..core_validators import (
10
11
  CriticalValidationError,
@@ -15,15 +16,18 @@ from ..core_validators import (
15
16
  Validator,
16
17
  )
17
18
  from ..loggers import DefaultLogLevels, Logger
19
+ from ..path import ProperPath
18
20
  from ..styles import Missing, stdout_console
19
21
  from ..styles.highlight import NoteText
20
22
  from ..utils import add_message
21
23
  from ._config_history import FieldValueWithKey, MinimalActiveConfiguration
22
24
  from .config import (
25
+ _XDG_DOWNLOAD_DIR,
23
26
  ASYNC_CAPACITY_DEFAULT_VAL,
24
27
  ASYNC_RATE_LIMIT_DEFAULT_VAL,
25
28
  DEVELOPMENT_MODE_DEFAULT_VAL,
26
29
  ENABLE_HTTP2_DEFAULT_VAL,
30
+ FALLBACK_EXPORT_DIR,
27
31
  KEY_ASYNC_CAPACITY,
28
32
  KEY_ASYNC_RATE_LIMIT,
29
33
  KEY_DEVELOPMENT_MODE,
@@ -48,14 +52,14 @@ class ConfigurationValidation:
48
52
  self.active_configuration = minimal_active_config_obj
49
53
 
50
54
  @property
51
- def active_configuration(self) -> MinimalActiveConfiguration:
55
+ def active_configuration(self) -> MinimalActiveConfiguration | dict:
52
56
  return self._active_configuration
53
57
 
54
58
  @active_configuration.setter
55
- def active_configuration(self, value: MinimalActiveConfiguration):
56
- if not isinstance(value, MinimalActiveConfiguration):
59
+ def active_configuration(self, value: MinimalActiveConfiguration | dict):
60
+ if not isinstance(value, (MinimalActiveConfiguration, dict)):
57
61
  raise TypeError(
58
- f"Value must be an instance of {MinimalActiveConfiguration.__name__}."
62
+ f"Value must be an instance of dict or {MinimalActiveConfiguration.__name__}."
59
63
  )
60
64
  self._active_configuration = value
61
65
 
@@ -68,6 +72,7 @@ class HostConfigurationValidator(ConfigurationValidation, Validator):
68
72
  super().__init__(*args)
69
73
 
70
74
  def validate(self) -> str:
75
+ self.active_configuration: MinimalActiveConfiguration
71
76
  _HOST_EXAMPLE: str = f"{KEY_HOST.lower()}: 'https://demo.elabftw.net/api/v2'"
72
77
 
73
78
  if isinstance(self.active_configuration.get_value(KEY_HOST), Missing):
@@ -126,10 +131,9 @@ class APITokenConfigurationValidator(ConfigurationValidation, Validator):
126
131
  super().__init__(*args)
127
132
 
128
133
  def validate(self) -> str:
129
- from ..loggers import Logger
130
134
  from .config import KEY_API_TOKEN
131
135
 
132
- logger = Logger()
136
+ self.active_configuration: MinimalActiveConfiguration
133
137
  if isinstance(self.active_configuration.get_value(KEY_API_TOKEN), Missing):
134
138
  logger.critical(
135
139
  f"'{KEY_API_TOKEN.lower()}' is missing from configuration file."
@@ -197,10 +201,10 @@ class ExportDirConfigurationValidator(ConfigurationValidation, Validator):
197
201
  super().__init__(*args)
198
202
 
199
203
  def validate(self) -> Path:
204
+ self.active_configuration: MinimalActiveConfiguration
205
+
200
206
  def get_validated_fallback():
201
- from .._names import APP_NAME
202
- from ..path import ProperPath
203
- from .config import _XDG_DOWNLOAD_DIR, FALLBACK_EXPORT_DIR
207
+ global FALLBACK_EXPORT_DIR, _XDG_DOWNLOAD_DIR, ProperPath
204
208
 
205
209
  ACTUAL_FALLBACK_EXPORT_DIR = FALLBACK_EXPORT_DIR
206
210
  if _XDG_DOWNLOAD_DIR is not None:
@@ -274,9 +278,6 @@ class ModesWithFallbackConfigurationValidator(ConfigurationValidation, Validator
274
278
  self.fallback_value = fallback_value
275
279
 
276
280
  def validate(self) -> bool:
277
- from ..loggers import Logger
278
-
279
- logger = Logger()
280
281
  if isinstance(
281
282
  value := self.active_configuration.get_value(self.key_name), Missing
282
283
  ):
@@ -312,7 +313,9 @@ class TimeWithFallbackConfigurationValidator(ConfigurationValidation, Validator)
312
313
  self.fallback_value = fallback_value
313
314
  self.allow_none = allow_none
314
315
 
315
- def validate(self) -> float:
316
+ def validate(self) -> Optional[float]:
317
+ self.active_configuration: MinimalActiveConfiguration
318
+
316
319
  if isinstance(
317
320
  value := self.active_configuration.get_value(self.key_name), Missing
318
321
  ):
@@ -349,6 +352,8 @@ class DiscreteWithFallbackConfigurationValidator(ConfigurationValidation, Valida
349
352
  self.allow_none = allow_none
350
353
 
351
354
  def validate(self) -> Optional[int]:
355
+ self.active_configuration: MinimalActiveConfiguration
356
+
352
357
  if isinstance(
353
358
  value := self.active_configuration.get_value(self.key_name), Missing
354
359
  ):
@@ -380,7 +385,9 @@ class PluginConfigurationValidator(ConfigurationValidation, Validator):
380
385
  self.fallback_value = fallback_value
381
386
 
382
387
  def validate(self) -> dict:
388
+ self.active_configuration: MinimalActiveConfiguration
383
389
  value: DynaBox = self.active_configuration.get_value(self.key_name)
390
+
384
391
  if isinstance(value, Missing):
385
392
  return self.fallback_value
386
393
  if value is None:
@@ -1 +0,0 @@
1
- 2.4.2
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes