stouputils 1.16.3__tar.gz → 1.17.0__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.
- {stouputils-1.16.3 → stouputils-1.17.0}/PKG-INFO +3 -1
- {stouputils-1.16.3 → stouputils-1.17.0}/pyproject.toml +4 -1
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/__init__.py +1 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/__init__.pyi +1 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/all_doctests.py +1 -1
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/decorators.py +1 -1
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/image.py +1 -1
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/image.pyi +1 -1
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/io.py +1 -1
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/io.pyi +1 -1
- stouputils-1.17.0/stouputils/lock/__init__.py +36 -0
- stouputils-1.17.0/stouputils/lock/__init__.pyi +5 -0
- stouputils-1.17.0/stouputils/lock/base.py +536 -0
- stouputils-1.17.0/stouputils/lock/base.pyi +169 -0
- stouputils-1.17.0/stouputils/lock/queue.py +377 -0
- stouputils-1.17.0/stouputils/lock/queue.pyi +131 -0
- stouputils-1.17.0/stouputils/lock/re_entrant.py +115 -0
- stouputils-1.17.0/stouputils/lock/re_entrant.pyi +81 -0
- stouputils-1.17.0/stouputils/lock/redis_fifo.py +299 -0
- stouputils-1.17.0/stouputils/lock/redis_fifo.pyi +123 -0
- stouputils-1.17.0/stouputils/lock/shared.py +30 -0
- stouputils-1.17.0/stouputils/lock/shared.pyi +16 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/README.md +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/__main__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/_deprecated.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/_deprecated.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/all_doctests.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/__init__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/__init__.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/automatic_docs.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/automatic_docs.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/upscaler/__init__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/upscaler/__init__.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/upscaler/config.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/upscaler/config.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/upscaler/image.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/upscaler/image.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/upscaler/video.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/applications/upscaler/video.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/archive.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/archive.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/backup.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/backup.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/collections.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/collections.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/__init__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/__init__.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/cd_utils.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/cd_utils.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/github.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/github.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/pypi.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/pypi.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/pyproject.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/pyproject.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/stubs.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/continuous_delivery/stubs.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/ctx.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/ctx.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/config/get.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/config/set.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/__init__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/blur.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/brightness.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/canny.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/clahe.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/common.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/contrast.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/denoise.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/invert.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/noise.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/normalize.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/resize.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/rotation.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/shearing.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/threshold.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/translation.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image/zoom.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/data_processing/technique.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/dataset/__init__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/dataset/dataset.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/dataset/dataset_loader.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/dataset/image_loader.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/dataset/xy_tuple.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/metric_dictionnary.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/metric_utils.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/mlflow_utils.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/abstract_model.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/all.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/base_keras.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/all.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/convnext.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/densenet.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/efficientnet.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/mobilenet.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/resnet.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/squeezenet.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/vgg.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras/xception.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/model_interface.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/models/sandbox.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/range_tuple.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/scripts/augment_dataset.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/scripts/routine.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/data_science/utils.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/decorators.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/__init__.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/__init__.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/common.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/common.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/downloader.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/downloader.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/linux.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/linux.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/main.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/main.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/windows.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/installer/windows.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/parallel.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/parallel.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/print.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/print.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/py.typed +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/typing.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/typing.pyi +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/version_pkg.py +0 -0
- {stouputils-1.16.3 → stouputils-1.17.0}/stouputils/version_pkg.pyi +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: stouputils
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.17.0
|
|
4
4
|
Summary: Stouputils is a collection of utility modules designed to simplify and enhance the development process. It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers, and many more.
|
|
5
5
|
Keywords: utilities,tools,helpers,development,python
|
|
6
6
|
Author: Stoupy51
|
|
@@ -32,12 +32,14 @@ Requires-Dist: sphinx-design ; extra == 'docs'
|
|
|
32
32
|
Requires-Dist: sphinx-treeview ; extra == 'docs'
|
|
33
33
|
Requires-Dist: sphinx-breeze-theme ; extra == 'docs'
|
|
34
34
|
Requires-Dist: pydata-sphinx-theme ; extra == 'docs'
|
|
35
|
+
Requires-Dist: redis[hiredis] ; extra == 'redis'
|
|
35
36
|
Requires-Python: >=3.12
|
|
36
37
|
Project-URL: Homepage, https://stoupy51.github.io/stouputils
|
|
37
38
|
Project-URL: Issues, https://github.com/Stoupy51/stouputils/issues
|
|
38
39
|
Project-URL: Source, https://github.com/Stoupy51/stouputils
|
|
39
40
|
Provides-Extra: data-science
|
|
40
41
|
Provides-Extra: docs
|
|
42
|
+
Provides-Extra: redis
|
|
41
43
|
Description-Content-Type: text/markdown
|
|
42
44
|
|
|
43
45
|
|
|
@@ -8,7 +8,7 @@ module-root = ""
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "stouputils"
|
|
11
|
-
version = "1.
|
|
11
|
+
version = "1.17.0"
|
|
12
12
|
description = "Stouputils is a collection of utility modules designed to simplify and enhance the development process. It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers, and many more."
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
keywords = ["utilities", "tools", "helpers", "development", "python"]
|
|
@@ -53,6 +53,9 @@ data_science = [
|
|
|
53
53
|
"scikit-learn",
|
|
54
54
|
"PyWavelets",
|
|
55
55
|
]
|
|
56
|
+
redis = [
|
|
57
|
+
"redis[hiredis]",
|
|
58
|
+
]
|
|
56
59
|
|
|
57
60
|
[project.urls]
|
|
58
61
|
Homepage = "https://stoupy51.github.io/stouputils"
|
|
@@ -99,7 +99,7 @@ def launch_tests(root_dir: str, strict: bool = True, pattern: str = "*") -> int:
|
|
|
99
99
|
import fnmatch
|
|
100
100
|
modules_file_paths = [
|
|
101
101
|
path for path in modules_file_paths
|
|
102
|
-
if fnmatch.fnmatch(path
|
|
102
|
+
if fnmatch.fnmatch(path, pattern)
|
|
103
103
|
]
|
|
104
104
|
if not modules_file_paths:
|
|
105
105
|
raise ValueError(f"No modules matching pattern '{pattern}' found in '{relative_path(root_dir)}'")
|
|
@@ -211,7 +211,7 @@ def timeout(
|
|
|
211
211
|
def decorator(func: Callable[..., Any]) -> Callable[..., Any]:
|
|
212
212
|
# Check if we can use signal-based timeout (Unix only)
|
|
213
213
|
import os
|
|
214
|
-
use_signal: bool = os.name !=
|
|
214
|
+
use_signal: bool = os.name != "nt" # Not Windows
|
|
215
215
|
|
|
216
216
|
if use_signal:
|
|
217
217
|
try:
|
|
@@ -401,7 +401,7 @@ def numpy_to_obj(
|
|
|
401
401
|
|
|
402
402
|
# Apply marching cubes algorithm to extract mesh
|
|
403
403
|
verts, faces, _, _ = cast(
|
|
404
|
-
tuple[NDArray[np.floating], NDArray[np.integer], NDArray[np.floating], NDArray[np.floating]],
|
|
404
|
+
"tuple[NDArray[np.floating], NDArray[np.integer], NDArray[np.floating], NDArray[np.floating]]",
|
|
405
405
|
measure.marching_cubes(volume, level=threshold, step_size=step_size, allow_degenerate=False) # type: ignore
|
|
406
406
|
)
|
|
407
407
|
|
|
@@ -3,7 +3,7 @@ from .io import super_open as super_open
|
|
|
3
3
|
from .print import debug as debug, info as info
|
|
4
4
|
from PIL import Image
|
|
5
5
|
from collections.abc import Callable
|
|
6
|
-
from numpy.typing import NDArray
|
|
6
|
+
from numpy.typing import NDArray as NDArray
|
|
7
7
|
from typing import Any, TypeVar
|
|
8
8
|
|
|
9
9
|
PIL_Image_or_NDArray = TypeVar('PIL_Image_or_NDArray', bound='Image.Image | NDArray[np.number]')
|
|
@@ -338,7 +338,7 @@ def super_copy(src: str, dst: str, create_dir: bool = True, symlink: bool = Fals
|
|
|
338
338
|
src (str): The source path
|
|
339
339
|
dst (str): The destination path
|
|
340
340
|
create_dir (bool): Whether to create the directory if it doesn't exist (default: True)
|
|
341
|
-
symlink (bool): Whether to create a symlink instead of copying (Linux only
|
|
341
|
+
symlink (bool): Whether to create a symlink instead of copying (Linux only)
|
|
342
342
|
Returns:
|
|
343
343
|
str: The destination path
|
|
344
344
|
"""
|
|
@@ -144,7 +144,7 @@ def super_copy(src: str, dst: str, create_dir: bool = True, symlink: bool = Fals
|
|
|
144
144
|
\t\tsrc (str): The source path
|
|
145
145
|
\t\tdst (str): The destination path
|
|
146
146
|
\t\tcreate_dir (bool): Whether to create the directory if it doesn't exist (default: True)
|
|
147
|
-
\t\tsymlink (bool): Whether to create a symlink instead of copying (Linux only
|
|
147
|
+
\t\tsymlink (bool): Whether to create a symlink instead of copying (Linux only)
|
|
148
148
|
\tReturns:
|
|
149
149
|
\t\tstr: The destination path
|
|
150
150
|
\t"""
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
""" Inter-process locks implementing First-In-First-Out (FIFO).
|
|
2
|
+
|
|
3
|
+
Source:
|
|
4
|
+
- https://en.wikipedia.org/wiki/File_locking
|
|
5
|
+
- https://en.wikipedia.org/wiki/Starvation_%28computer_science%29
|
|
6
|
+
- https://en.wikipedia.org/wiki/FIFO_and_LIFO_accounting
|
|
7
|
+
|
|
8
|
+
Provides three classes:
|
|
9
|
+
|
|
10
|
+
- LockFifo: basic cross-process lock using filesystem (POSIX via fcntl, Windows via msvcrt).
|
|
11
|
+
- RLockFifo: reentrant per-(process,thread) lock built on top of LockFifo.
|
|
12
|
+
- RedisLockFifo: distributed lock using redis (optional dependency).
|
|
13
|
+
|
|
14
|
+
Usage
|
|
15
|
+
-----
|
|
16
|
+
>>> import stouputils as stp
|
|
17
|
+
>>> with stp.LockFifo("some_directory/my.lock", timeout=5):
|
|
18
|
+
... pass
|
|
19
|
+
|
|
20
|
+
>>> with stp.RLockFifo("some_directory/my_r.lock", timeout=5):
|
|
21
|
+
... pass
|
|
22
|
+
|
|
23
|
+
>>> def _redis_example():
|
|
24
|
+
... with stp.RedisLockFifo("my_redis_lock", timeout=5):
|
|
25
|
+
... pass
|
|
26
|
+
>>> import os
|
|
27
|
+
>>> if os.name != "nt":
|
|
28
|
+
... _redis_example()
|
|
29
|
+
"""
|
|
30
|
+
# Imports
|
|
31
|
+
from .base import *
|
|
32
|
+
from .queue import *
|
|
33
|
+
from .re_entrant import *
|
|
34
|
+
from .redis_fifo import *
|
|
35
|
+
from .shared import *
|
|
36
|
+
|