robotframework-parallelrunner 0.3.0__tar.gz → 0.4.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: robotframework-parallelrunner
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: Run a keyword in parallel inside a single Robot Framework test case, with one clean, ordered log.html.
5
5
  License-Expression: MIT
6
6
  License-File: LICENSE
@@ -155,7 +155,7 @@ Concretely:
155
155
  that needs to do the same kind of work many times (loop over a list of IDs,
156
156
  or repeat something N times) — how do I parallelize the body of that loop
157
157
  without corrupting the log or needing to merge anything?" It uses a
158
- `ThreadPoolExecutor` inside a single process, and produces one
158
+ pool of threads inside a single process, and produces one
159
159
  already-merged, already-ordered log for that test case.
160
160
  - Because ParallelRunner uses **threads**, not processes, it shares memory and
161
161
  is subject to the GIL — it is a good fit for **I/O-bound** work (network
@@ -230,9 +230,11 @@ Things to keep in mind:
230
230
  made thread-safe for you; your own keyword's side effects are not. If it
231
231
  writes to a shared variable, file, or object without a lock, running it
232
232
  concurrently can race the same way any multi-threaded code can.
233
- - **You need per-item retries or a timeout.** Not implemented yet (see
234
- [ROADMAP.md](https://github.com/cristiangarciavd/robotframework-parallelrunner/blob/main/ROADMAP.md)) — one hung call currently blocks the whole batch
235
- from returning.
233
+ - **You need per-item retries.** Not implemented yet (see
234
+ [ROADMAP.md](https://github.com/cristiangarciavd/robotframework-parallelrunner/blob/main/ROADMAP.md)). A per-call limit is: `call_timeout=10s` fails
235
+ only the call that hangs and lets the others finish. Note that a timed-out
236
+ call can't be killed - it keeps running in the background unless the
237
+ keyword declares `_cancelled` and stops when it is set.
236
238
  - **You need process-level isolation** (a crash in one call shouldn't be
237
239
  able to affect another) or cross-machine parallelism — that's pabot's
238
240
  domain, not this library's.
@@ -242,7 +244,7 @@ Things to keep in mind:
242
244
  ```
243
245
  robotframework-parallelrunner/
244
246
  ├── src/ParallelRunner/ # The installable library (do not depend on internals prefixed with `_`)
245
- ├── examples/ # Example libraries used by the tests, plus the pabot timing demo
247
+ ├── examples/ # Example libraries used by the tests, plus the pabot and log levels demos
246
248
  ├── atest/ # Robot Framework acceptance suites
247
249
  ├── utest/ # pytest unit tests
248
250
  ├── docs/ # INSTALLATION, QUICKSTART, API_REFERENCE, generated keyword docs
@@ -121,7 +121,7 @@ Concretely:
121
121
  that needs to do the same kind of work many times (loop over a list of IDs,
122
122
  or repeat something N times) — how do I parallelize the body of that loop
123
123
  without corrupting the log or needing to merge anything?" It uses a
124
- `ThreadPoolExecutor` inside a single process, and produces one
124
+ pool of threads inside a single process, and produces one
125
125
  already-merged, already-ordered log for that test case.
126
126
  - Because ParallelRunner uses **threads**, not processes, it shares memory and
127
127
  is subject to the GIL — it is a good fit for **I/O-bound** work (network
@@ -196,9 +196,11 @@ Things to keep in mind:
196
196
  made thread-safe for you; your own keyword's side effects are not. If it
197
197
  writes to a shared variable, file, or object without a lock, running it
198
198
  concurrently can race the same way any multi-threaded code can.
199
- - **You need per-item retries or a timeout.** Not implemented yet (see
200
- [ROADMAP.md](https://github.com/cristiangarciavd/robotframework-parallelrunner/blob/main/ROADMAP.md)) — one hung call currently blocks the whole batch
201
- from returning.
199
+ - **You need per-item retries.** Not implemented yet (see
200
+ [ROADMAP.md](https://github.com/cristiangarciavd/robotframework-parallelrunner/blob/main/ROADMAP.md)). A per-call limit is: `call_timeout=10s` fails
201
+ only the call that hangs and lets the others finish. Note that a timed-out
202
+ call can't be killed - it keeps running in the background unless the
203
+ keyword declares `_cancelled` and stops when it is set.
202
204
  - **You need process-level isolation** (a crash in one call shouldn't be
203
205
  able to affect another) or cross-machine parallelism — that's pabot's
204
206
  domain, not this library's.
@@ -208,7 +210,7 @@ Things to keep in mind:
208
210
  ```
209
211
  robotframework-parallelrunner/
210
212
  ├── src/ParallelRunner/ # The installable library (do not depend on internals prefixed with `_`)
211
- ├── examples/ # Example libraries used by the tests, plus the pabot timing demo
213
+ ├── examples/ # Example libraries used by the tests, plus the pabot and log levels demos
212
214
  ├── atest/ # Robot Framework acceptance suites
213
215
  ├── utest/ # pytest unit tests
214
216
  ├── docs/ # INSTALLATION, QUICKSTART, API_REFERENCE, generated keyword docs
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
  name = "robotframework-parallelrunner"
7
7
  # Single source of truth for the version: bump with `poetry version patch|minor|major`.
8
8
  # ParallelRunner.__version__ / ROBOT_LIBRARY_VERSION read it back from the installed metadata.
9
- version = "0.3.0"
9
+ version = "0.4.0"
10
10
  description = "Run a keyword in parallel inside a single Robot Framework test case, with one clean, ordered log.html."
11
11
  readme = "README.md"
12
12
  license = "MIT"
@@ -13,7 +13,7 @@ Keyword documentation:
13
13
  https://cristiangarciavd.github.io/robotframework-parallelrunner/ParallelRunner.html
14
14
  """
15
15
 
16
- from .parallel_library import ParallelLibrary, ParallelRunner, ParallelTaskError
16
+ from .parallel_library import ParallelLibrary, ParallelRunner, ParallelTaskError, log_to_robot
17
17
  from .version import __version__
18
18
 
19
- __all__ = ["ParallelRunner", "ParallelLibrary", "ParallelTaskError", "__version__"]
19
+ __all__ = ["ParallelRunner", "ParallelLibrary", "ParallelTaskError", "log_to_robot", "__version__"]