pymodaq_data 5.0.26__tar.gz → 5.1.2__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 (29) hide show
  1. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/.gitignore +4 -2
  2. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/PKG-INFO +25 -19
  3. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/README.rst +22 -16
  4. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/pyproject.toml +7 -9
  5. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/data.py +32 -0
  6. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/numpy_func.py +37 -0
  7. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/plotting/plotter/plotter.py +4 -3
  8. pymodaq_data-5.0.26/_version.py +0 -34
  9. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/LICENSE +0 -0
  10. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/__init__.py +0 -0
  11. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/__init__.py +0 -0
  12. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/backends.py +0 -0
  13. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/browsing.py +0 -0
  14. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/data_saving.py +0 -0
  15. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/exporter.py +0 -0
  16. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/exporters/__init__.py +0 -0
  17. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/exporters/base.py +0 -0
  18. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/exporters/flimj.py +0 -0
  19. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/exporters/hyperspy.py +0 -0
  20. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/saving.py +0 -0
  21. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/h5modules/utils.py +0 -0
  22. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/icon.ico +0 -0
  23. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/plotting/__init__.py +0 -0
  24. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/plotting/plotter/plotters/__init__.py +0 -0
  25. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/plotting/plotter/plotters/matplotlib_plotters.py +0 -0
  26. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/post_treatment/__init__.py +0 -0
  27. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/post_treatment/process_to_scalar.py +0 -0
  28. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/slicing.py +0 -0
  29. {pymodaq_data-5.0.26 → pymodaq_data-5.1.2}/src/pymodaq_data/splash.png +0 -0
@@ -1,8 +1,6 @@
1
1
  # Compiled python modules.
2
2
  *.pyc
3
3
 
4
- _version.py
5
-
6
4
  # Byte-compiled / optimized / DLL files
7
5
  __pycache__/
8
6
 
@@ -129,3 +127,7 @@ venv.bak/
129
127
  *yacctab.py
130
128
  *lextab.py
131
129
 
130
+ .mu_repo
131
+
132
+
133
+ **/README.rst
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymodaq_data
3
- Version: 5.0.26
3
+ Version: 5.1.2
4
4
  Summary: Modular Data Acquisition with Python
5
5
  Project-URL: Homepage, http://pymodaq.cnrs.fr
6
- Project-URL: Source, https://github.com/PyMoDAQ/pymodaq_data
7
- Project-URL: Tracker, https://github.com/PyMoDAQ/pymodaq_data/issues
6
+ Project-URL: Source, https://github.com/PyMoDAQ/PyMoDAQ
7
+ Project-URL: Tracker, https://github.com/PyMoDAQ/PyMoDAQ/issues
8
8
  Author-email: Sébastien Weber <sebastien.weber@cemes.fr>
9
9
  License: The MIT License (MIT)
10
10
 
@@ -62,6 +62,12 @@ Requires-Dist: pytest-cov; extra == 'dev'
62
62
  Requires-Dist: pytest-xdist; extra == 'dev'
63
63
  Description-Content-Type: text/x-rst
64
64
 
65
+ .. ############################################################
66
+ .. WARNING: This file is AUTO-GENERATED from README.rst.tpl.
67
+ .. ⚠️ DO NOT EDIT MANUALLY ⚠️
68
+ .. ############################################################
69
+
70
+
65
71
  PyMoDAQ Data
66
72
  ############
67
73
 
@@ -91,29 +97,29 @@ PyMoDAQ Data
91
97
 
92
98
 
93
99
 
94
- .. |39-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Linux_3.9.svg
95
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
100
+ .. |39-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Linux_3.9.svg
101
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
96
102
 
97
- .. |310-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Linux_3.10.svg
98
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
103
+ .. |310-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Linux_3.10.svg
104
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
99
105
 
100
- .. |311-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Linux_3.11.svg
101
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
106
+ .. |311-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Linux_3.11.svg
107
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
102
108
 
103
- .. |312-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Linux_3.12.svg
104
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
109
+ .. |312-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Linux_3.12.svg
110
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
105
111
 
106
- .. |39-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Windows_3.9.svg
107
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
112
+ .. |39-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Windows_3.9.svg
113
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
108
114
 
109
- .. |310-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Windows_3.10.svg
110
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
115
+ .. |310-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Windows_3.10.svg
116
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
111
117
 
112
- .. |311-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Windows_3.11.svg
113
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
118
+ .. |311-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Windows_3.11.svg
119
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
114
120
 
115
- .. |312-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Windows_3.12.svg
116
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
121
+ .. |312-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Windows_3.12.svg
122
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
117
123
 
118
124
 
119
125
 
@@ -1,3 +1,9 @@
1
+ .. ############################################################
2
+ .. WARNING: This file is AUTO-GENERATED from README.rst.tpl.
3
+ .. ⚠️ DO NOT EDIT MANUALLY ⚠️
4
+ .. ############################################################
5
+
6
+
1
7
  PyMoDAQ Data
2
8
  ############
3
9
 
@@ -27,29 +33,29 @@ PyMoDAQ Data
27
33
 
28
34
 
29
35
 
30
- .. |39-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Linux_3.9.svg
31
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
36
+ .. |39-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Linux_3.9.svg
37
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
32
38
 
33
- .. |310-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Linux_3.10.svg
34
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
39
+ .. |310-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Linux_3.10.svg
40
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
35
41
 
36
- .. |311-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Linux_3.11.svg
37
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
42
+ .. |311-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Linux_3.11.svg
43
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
38
44
 
39
- .. |312-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Linux_3.12.svg
40
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
45
+ .. |312-linux| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Linux_3.12.svg
46
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
41
47
 
42
- .. |39-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Windows_3.9.svg
43
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
48
+ .. |39-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Windows_3.9.svg
49
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
44
50
 
45
- .. |310-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Windows_3.10.svg
46
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
51
+ .. |310-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Windows_3.10.svg
52
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
47
53
 
48
- .. |311-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Windows_3.11.svg
49
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
54
+ .. |311-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Windows_3.11.svg
55
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
50
56
 
51
- .. |312-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/pymodaq_data/badges/5.0.x_dev/tests_Windows_3.12.svg
52
- :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests.yml
57
+ .. |312-windows| image:: https://raw.githubusercontent.com/PyMoDAQ/PyMoDAQ/badges/pymodaq_data/dev/tests_Windows_3.12.svg
58
+ :target: https://github.com/PyMoDAQ/pymodaq_data/actions/workflows/tests-data.yml
53
59
 
54
60
 
55
61
 
@@ -43,8 +43,6 @@ dependencies = [
43
43
  "tables<3.9; python_version<\"3.10\"", # issue with some version of required package blosc2>=2.2.8
44
44
  ]
45
45
 
46
-
47
-
48
46
  [project.optional-dependencies]
49
47
  dev = [
50
48
  "hatch",
@@ -55,20 +53,20 @@ dev = [
55
53
  "pytest-xdist",
56
54
  ]
57
55
 
58
-
59
56
  [project.urls]
60
57
  Homepage = "http://pymodaq.cnrs.fr"
61
- Source = "https://github.com/PyMoDAQ/pymodaq_data"
62
- Tracker = "https://github.com/PyMoDAQ/pymodaq_data/issues"
58
+ Source = "https://github.com/PyMoDAQ/PyMoDAQ"
59
+ Tracker = "https://github.com/PyMoDAQ/PyMoDAQ/issues"
60
+
61
+ [tool.hatch.version.raw-options]
62
+ search_parent_directories = true
63
+ fallback_version = "5.1.0"
64
+ git_describe_command = '''sh -c '(git describe --contains --tags $(git rev-list -1 HEAD -- packages/pymodaq_data) || git describe --tags $(git rev-list -1 HEAD -- packages/pymodaq_data)) | cut -d"~" -f1 ' '''
63
65
 
64
66
  [tool.hatch.version]
65
67
  source = "vcs"
66
- fallback-version = "5.0.12"
67
68
 
68
69
  [tool.hatch.build.targets.sdist]
69
70
  include = [
70
71
  "/src",
71
72
  ]
72
-
73
- [tool.hatch.build.hooks.vcs]
74
- version-file = "_version.py"
@@ -8,6 +8,8 @@ from __future__ import annotations
8
8
 
9
9
  from abc import ABCMeta, abstractmethod, abstractproperty
10
10
  import numbers
11
+ from copy import deepcopy
12
+
11
13
  import numpy as np
12
14
  from numpy.lib.mixins import NDArrayOperatorsMixin
13
15
  from typing import List, Tuple, Union, Any, Callable
@@ -1081,6 +1083,7 @@ class DataBase(DataLowLevel, NDArrayOperatorsMixin):
1081
1083
  new_data.data = [np.fliplr(dat) for dat in new_data]
1082
1084
  return new_data
1083
1085
 
1086
+
1084
1087
  def append(self, data: DataWithAxes):
1085
1088
  """Append data content if the underlying arrays have the same shape and compatible units"""
1086
1089
  for dat in data:
@@ -2272,6 +2275,16 @@ class DataWithAxes(DataBase, SerializableBase):
2272
2275
  labels=self.labels)
2273
2276
  return new_data
2274
2277
 
2278
+ def pad(self, pad_width: Union[int, Tuple[int, int], Iterable[Tuple[int, int]]], **kwargs):
2279
+ """ Pad the data arrays using the numpy pad function
2280
+
2281
+ The accepted pad_witdh type is the same than the numpy pad function
2282
+
2283
+
2284
+ see numpy.pad method for the signature and possible named arguments
2285
+ """
2286
+ return np.pad(self, pad_width, **kwargs)
2287
+
2275
2288
  def ft(self, axis: int = 0, axis_label: str = None,
2276
2289
  axis_units: str = None, labels: List[str] = None) -> DataWithAxes:
2277
2290
  """Process the Fourier Transform of the data on the specified axis and returns the new data
@@ -2557,6 +2570,25 @@ class DataWithAxes(DataBase, SerializableBase):
2557
2570
  axes.append(ax)
2558
2571
  self.axes = axes
2559
2572
 
2573
+ def rot90(self, k=1, axes=(0, 1)):
2574
+ """ Rotate an array by 90 degrees in the plane specified by axes.
2575
+
2576
+ Valid only for 2D data
2577
+ """
2578
+ if self.dim == DataDim.Data2D:
2579
+ new_data: DataWithAxes = copy.copy(self)
2580
+ new_data.data = [np.rot90(dat, k, axes) for dat in new_data]
2581
+ new_axes = []
2582
+ axis = new_data.get_axis_from_index(0)[0]
2583
+ axis.index = 1
2584
+ new_axes.append(axis)
2585
+ axis = new_data.get_axis_from_index(1)[0]
2586
+ axis.index = 0
2587
+ new_data.axes = new_axes
2588
+ return new_data
2589
+ else:
2590
+ return self
2591
+
2560
2592
  def _compute_slices(self, slices, is_navigation=True, is_index=True):
2561
2593
  """Compute the total slice to apply to the data
2562
2594
 
@@ -1,16 +1,21 @@
1
1
  from typing import Union, List, TYPE_CHECKING, Iterable, Optional, Callable
2
2
  import numbers
3
+ from copy import deepcopy
3
4
 
4
5
  import numpy as np
5
6
  from pint.facets.numpy.numpy_func import HANDLED_UFUNCS # imported by the data module
6
7
  from pymodaq_data import Q_
7
8
  from pymodaq_data import data as data_mod
8
9
 
10
+ from pymodaq_utils.logger import set_logger, get_module_name
11
+
9
12
  if TYPE_CHECKING:
10
13
  from pymodaq_data.data import DataBase, DataWithAxes
11
14
 
12
15
  HANDLED_FUNCTIONS = {}
13
16
 
17
+ logger = set_logger(get_module_name(__file__))
18
+
14
19
 
15
20
  def process_arguments_for_ufuncs(input: 'DataBase',
16
21
  inputs: List[Union[numbers.Number, Q_, np.ndarray, 'DataBase']]):
@@ -161,6 +166,38 @@ def _roll(dwa: 'DataWithAxes', *args, **kwargs):
161
166
  dwa_func.name += f"_{'roll'}"
162
167
  return dwa_func
163
168
 
169
+
170
+ @implements('pad')
171
+ def _pad(dwa: 'DataWithAxes', pad_width, mode = 'constant', **kwargs):
172
+ dwa.create_missing_axes()
173
+ for axis in dwa.axes:
174
+ if not axis.is_axis_linear():
175
+ raise TypeError('Could not pad data with non linear axes')
176
+ if isinstance(pad_width, int):
177
+ pad_width = [(pad_width, pad_width) for _ in range(len(dwa.shape))]
178
+ elif len(pad_width) == 1:
179
+ if hasattr(pad_width[0], '__len__') and len(pad_width[0]) == 2:
180
+ pad_width = [pad_width[0] for _ in range(len(dwa.shape))]
181
+ else:
182
+ pad_width = pad_width[0]
183
+ pad_width = [(pad_width, pad_width) for _ in range(len(dwa.shape))]
184
+ elif len(pad_width) == 2 and not hasattr(pad_width[0], '__len__'):
185
+ pad_width = [pad_width for _ in range(len(dwa.shape))]
186
+ elif len(pad_width) == len(dwa.shape):
187
+ if not hasattr(pad_width[0], '__len__'):
188
+ raise TypeError('Could not pad data with the given argument')
189
+ else:
190
+ raise TypeError(f'Could not pad data with the given arguments: {pad_width}')
191
+ dwa_func = dwa.deepcopy_with_new_data(data=[np.pad(array, pad_width, mode, **kwargs) for array in dwa])
192
+ dwa_func.axes = []
193
+ for axis in deepcopy(dwa.axes):
194
+ axis.offset -= pad_width[axis.index][0] * axis.scaling
195
+ axis.size += pad_width[axis.index][0] + pad_width[axis.index][1]
196
+ dwa_func.axes.append(axis)
197
+ dwa_func.name += f"_{'pad'}"
198
+ return dwa_func
199
+
200
+
164
201
  # ******** functions that return booleans ***********
165
202
  @implements('all')
166
203
  def _all(dwa: 'DataWithAxes', *args, axis: Optional[Union[int, Iterable[int]]] = None, **kwargs):
@@ -83,13 +83,14 @@ class PlotterFactory(ObjectFactory):
83
83
  def create(cls, key, **kwargs) -> PlotterBase:
84
84
  builder = cls._builders[cls.__name__].get(key)
85
85
  if not builder:
86
- raise ValueError(key)
86
+ raise ValueError(f'{key} is not a valid plotter: {cls.backends()}')
87
87
  return builder(**kwargs)
88
88
 
89
89
  def get(self, backend: str, **kwargs):
90
90
  return self.create(backend, **kwargs)
91
91
 
92
- def backends(self) -> List[str]:
92
+ @classmethod
93
+ def backends(cls) -> List[str]:
93
94
  """Returns the list of plotter backends, main identifier of a given plotter"""
94
- return sorted(list(self.builders[self.__class__.__name__].keys()))
95
+ return sorted(list(cls._builders[cls.__name__].keys()))
95
96
 
@@ -1,34 +0,0 @@
1
- # file generated by setuptools-scm
2
- # don't change, don't track in version control
3
-
4
- __all__ = [
5
- "__version__",
6
- "__version_tuple__",
7
- "version",
8
- "version_tuple",
9
- "__commit_id__",
10
- "commit_id",
11
- ]
12
-
13
- TYPE_CHECKING = False
14
- if TYPE_CHECKING:
15
- from typing import Tuple
16
- from typing import Union
17
-
18
- VERSION_TUPLE = Tuple[Union[int, str], ...]
19
- COMMIT_ID = Union[str, None]
20
- else:
21
- VERSION_TUPLE = object
22
- COMMIT_ID = object
23
-
24
- version: str
25
- __version__: str
26
- __version_tuple__: VERSION_TUPLE
27
- version_tuple: VERSION_TUPLE
28
- commit_id: COMMIT_ID
29
- __commit_id__: COMMIT_ID
30
-
31
- __version__ = version = '5.0.26'
32
- __version_tuple__ = version_tuple = (5, 0, 26)
33
-
34
- __commit_id__ = commit_id = None
File without changes