stouputils 1.19.2__tar.gz → 1.19.4__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 (161) hide show
  1. {stouputils-1.19.2 → stouputils-1.19.4}/PKG-INFO +1 -1
  2. {stouputils-1.19.2 → stouputils-1.19.4}/pyproject.toml +1 -1
  3. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/capturer.py +17 -9
  4. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/capturer.pyi +15 -5
  5. {stouputils-1.19.2 → stouputils-1.19.4}/README.md +0 -0
  6. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/__init__.py +0 -0
  7. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/__init__.pyi +0 -0
  8. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/__main__.py +0 -0
  9. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/_deprecated.py +0 -0
  10. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/_deprecated.pyi +0 -0
  11. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/all_doctests.py +0 -0
  12. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/all_doctests.pyi +0 -0
  13. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/__init__.py +0 -0
  14. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/__init__.pyi +0 -0
  15. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/automatic_docs.py +0 -0
  16. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/automatic_docs.pyi +0 -0
  17. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/upscaler/__init__.py +0 -0
  18. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/upscaler/__init__.pyi +0 -0
  19. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/upscaler/config.py +0 -0
  20. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/upscaler/config.pyi +0 -0
  21. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/upscaler/image.py +0 -0
  22. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/upscaler/image.pyi +0 -0
  23. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/upscaler/video.py +0 -0
  24. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/applications/upscaler/video.pyi +0 -0
  25. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/archive.py +0 -0
  26. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/archive.pyi +0 -0
  27. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/backup.py +0 -0
  28. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/backup.pyi +0 -0
  29. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/collections.py +0 -0
  30. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/collections.pyi +0 -0
  31. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/__init__.py +0 -0
  32. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/__init__.pyi +0 -0
  33. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/cd_utils.py +0 -0
  34. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/cd_utils.pyi +0 -0
  35. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/github.py +0 -0
  36. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/github.pyi +0 -0
  37. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/pypi.py +0 -0
  38. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/pypi.pyi +0 -0
  39. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/pyproject.py +0 -0
  40. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/pyproject.pyi +0 -0
  41. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/stubs.py +0 -0
  42. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/continuous_delivery/stubs.pyi +0 -0
  43. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/ctx.py +0 -0
  44. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/ctx.pyi +0 -0
  45. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/config/get.py +0 -0
  46. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/config/set.py +0 -0
  47. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  48. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  49. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  50. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  51. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  52. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/blur.py +0 -0
  53. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  54. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/canny.py +0 -0
  55. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  56. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/common.py +0 -0
  57. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  58. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  59. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  60. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  61. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/invert.py +0 -0
  62. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  63. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  64. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/noise.py +0 -0
  65. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  66. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  67. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/resize.py +0 -0
  68. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  69. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  70. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  71. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  72. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  73. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/translation.py +0 -0
  74. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  75. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  76. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  77. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  78. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/data_processing/technique.py +0 -0
  79. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/dataset/__init__.py +0 -0
  80. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/dataset/dataset.py +0 -0
  81. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  82. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  83. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/dataset/image_loader.py +0 -0
  84. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  85. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/metric_dictionnary.py +0 -0
  86. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/metric_utils.py +0 -0
  87. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/mlflow_utils.py +0 -0
  88. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/abstract_model.py +0 -0
  89. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/all.py +0 -0
  90. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/base_keras.py +0 -0
  91. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/all.py +0 -0
  92. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/convnext.py +0 -0
  93. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/densenet.py +0 -0
  94. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  95. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  96. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/resnet.py +0 -0
  97. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  98. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/vgg.py +0 -0
  99. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras/xception.py +0 -0
  100. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  101. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  102. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  103. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +0 -0
  104. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  105. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  106. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  107. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  108. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  109. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/model_interface.py +0 -0
  110. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/models/sandbox.py +0 -0
  111. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/range_tuple.py +0 -0
  112. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  113. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  114. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  115. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/scripts/routine.py +0 -0
  116. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/data_science/utils.py +0 -0
  117. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/decorators.py +0 -0
  118. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/decorators.pyi +0 -0
  119. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/image.py +0 -0
  120. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/image.pyi +0 -0
  121. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/__init__.py +0 -0
  122. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/__init__.pyi +0 -0
  123. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/common.py +0 -0
  124. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/common.pyi +0 -0
  125. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/downloader.py +0 -0
  126. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/downloader.pyi +0 -0
  127. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/linux.py +0 -0
  128. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/linux.pyi +0 -0
  129. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/main.py +0 -0
  130. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/main.pyi +0 -0
  131. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/windows.py +0 -0
  132. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/installer/windows.pyi +0 -0
  133. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/io.py +0 -0
  134. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/io.pyi +0 -0
  135. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/__init__.py +0 -0
  136. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/__init__.pyi +0 -0
  137. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/base.py +0 -0
  138. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/base.pyi +0 -0
  139. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/queue.py +0 -0
  140. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/queue.pyi +0 -0
  141. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/re_entrant.py +0 -0
  142. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/re_entrant.pyi +0 -0
  143. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/redis_fifo.py +0 -0
  144. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/redis_fifo.pyi +0 -0
  145. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/shared.py +0 -0
  146. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/lock/shared.pyi +0 -0
  147. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/__init__.py +0 -0
  148. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/__init__.pyi +0 -0
  149. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/common.py +0 -0
  150. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/common.pyi +0 -0
  151. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/multi.py +0 -0
  152. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/multi.pyi +0 -0
  153. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/subprocess.py +0 -0
  154. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/parallel/subprocess.pyi +0 -0
  155. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/print.py +0 -0
  156. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/print.pyi +0 -0
  157. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/py.typed +0 -0
  158. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/typing.py +0 -0
  159. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/typing.pyi +0 -0
  160. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/version_pkg.py +0 -0
  161. {stouputils-1.19.2 → stouputils-1.19.4}/stouputils/version_pkg.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: stouputils
3
- Version: 1.19.2
3
+ Version: 1.19.4
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
@@ -8,7 +8,7 @@ module-root = ""
8
8
 
9
9
  [project]
10
10
  name = "stouputils"
11
- version = "1.19.2"
11
+ version = "1.19.4"
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"]
@@ -27,13 +27,23 @@ class CaptureOutput:
27
27
  The class creates an os.pipe(), marks fds as inheritable (for spawn method),
28
28
  provides methods to start a listener thread that reads from the pipe and writes
29
29
  to the main process's sys.stdout/sys.stderr, and to close/join the listener.
30
+
31
+ >>> capturer = CaptureOutput(encoding="utf-8", errors="replace")
32
+
33
+ >>> pass # send capturer object to subprocess
34
+ >>> capturer.redirect() # Redirects sys.stdout/sys.stderr to the pipe
35
+
36
+ >>> pass # in parent process:
37
+ >>> #capturer.parent_close_write() # Close parent's write end
38
+ >>> capturer.start_listener() # Start listener thread to read from pipe
39
+ >>> ... # do other work
40
+ >>> capturer.join_listener(timeout=0.1) # Wait for listener to finish (on EOF)
30
41
  """
31
- def __init__(self, encoding: str = "utf-8", errors: str = "replace", chunk_size: int = 1024):
42
+ def __init__(self, encoding: str = "utf-8", errors: str = "replace"):
32
43
  import multiprocessing as mp
33
44
  import threading
34
45
  self.encoding: str = encoding
35
46
  self.errors: str = errors
36
- self.chunk_size: int = chunk_size
37
47
  self.read_conn, self.write_conn = mp.Pipe(duplex=False)
38
48
  self.read_fd = self.read_conn.fileno()
39
49
  self.write_fd = self.write_conn.fileno()
@@ -91,10 +101,11 @@ class CaptureOutput:
91
101
  nonlocal buffer
92
102
  try:
93
103
  while True:
94
- # Read a chunk from the pipe, stop loop on error
104
+ # Read the next message from the pipe. Use recv_bytes() without a maxlength
105
+ # so we don't error when a single message is larger than our chunk size.
95
106
  try:
96
- data: bytes = self.read_conn.recv_bytes(self.chunk_size)
97
- except EOFError:
107
+ data: bytes = self.read_conn.recv_bytes()
108
+ except (EOFError, OSError, BrokenPipeError):
98
109
  _handle_buffer()
99
110
  break
100
111
 
@@ -104,10 +115,7 @@ class CaptureOutput:
104
115
  except Exception:
105
116
  chunk = data.decode(self.encoding, errors="replace")
106
117
  buffer += chunk
107
-
108
- # Periodically flush large buffers to avoid holding too much memory
109
- if len(buffer) > self.chunk_size * 4:
110
- _handle_buffer()
118
+ _handle_buffer()
111
119
  finally:
112
120
  safe_close(self.read_conn)
113
121
  self.read_fd = -1
@@ -12,20 +12,30 @@ class PipeWriter:
12
12
  def flush(self) -> None: ...
13
13
 
14
14
  class CaptureOutput:
15
- """ Utility to capture stdout/stderr from a subprocess and relay it to the parent's stdout.
15
+ ''' Utility to capture stdout/stderr from a subprocess and relay it to the parent\'s stdout.
16
16
 
17
17
  \tThe class creates an os.pipe(), marks fds as inheritable (for spawn method),
18
18
  \tprovides methods to start a listener thread that reads from the pipe and writes
19
- \tto the main process's sys.stdout/sys.stderr, and to close/join the listener.
20
- \t"""
19
+ \tto the main process\'s sys.stdout/sys.stderr, and to close/join the listener.
20
+
21
+ \t>>> capturer = CaptureOutput(encoding="utf-8", errors="replace")
22
+
23
+ \t>>> pass # send capturer object to subprocess
24
+ \t>>> capturer.redirect() # Redirects sys.stdout/sys.stderr to the pipe
25
+
26
+ \t>>> pass # in parent process:
27
+ \t>>> #capturer.parent_close_write() # Close parent\'s write end
28
+ \t>>> capturer.start_listener() # Start listener thread to read from pipe
29
+ \t>>> ... # do other work
30
+ \t>>> capturer.join_listener(timeout=0.1) # Wait for listener to finish (on EOF)
31
+ \t'''
21
32
  encoding: str
22
33
  errors: str
23
- chunk_size: int
24
34
  read_fd: Incomplete
25
35
  write_fd: Incomplete
26
36
  _thread: threading.Thread | None
27
37
  _reader_file: IO[Any] | None
28
- def __init__(self, encoding: str = 'utf-8', errors: str = 'replace', chunk_size: int = 1024) -> None: ...
38
+ def __init__(self, encoding: str = 'utf-8', errors: str = 'replace') -> None: ...
29
39
  def __repr__(self) -> str: ...
30
40
  def __getstate__(self) -> dict[str, Any]: ...
31
41
  def redirect(self) -> None:
File without changes