|
| 1 | + |
| 2 | +# Guide: Self-Healing Scripts with `omnipkg run` |
| 3 | + |
| 4 | +The `omnipkg run` command is one of the most powerful features in the ecosystem. It allows you to execute Python scripts in an environment that can **automatically heal itself from package version conflicts at runtime.** |
| 5 | + |
| 6 | +### What Problem Does It Solve? |
| 7 | + |
| 8 | +Imagine you have a script that explicitly requires an older version of a library: |
| 9 | +```python |
| 10 | +# my_script.py |
| 11 | +from importlib.metadata import version |
| 12 | +import rich |
| 13 | + |
| 14 | +rich_version = version('rich') |
| 15 | +assert rich_version == '13.4.2', f"Incorrect rich version! Expected 13.4.2, got {rich_version}" |
| 16 | + |
| 17 | +print("This script is running with the correct, older version of rich!") |
| 18 | +``` |
| 19 | +If your main environment has `rich==14.1.0` installed, running this script normally will fail with an `AssertionError`. The traditional solution is to create a whole new virtual environment just for this one script. |
| 20 | + |
| 21 | +`omnipkg` makes this obsolete. |
| 22 | + |
| 23 | +### How to Use `omnipkg run` |
| 24 | + |
| 25 | +You simply prefix your script execution with `omnipkg run` (or `8pkg run`): |
| 26 | + |
| 27 | +```bash |
| 28 | +8pkg run /path/to/my_script.py |
| 29 | +``` |
| 30 | + |
| 31 | +### What Happens Behind the Scenes: The Healing Process |
| 32 | + |
| 33 | +When you use `8pkg run`, `omnipkg` acts as an intelligent supervisor: |
| 34 | + |
| 35 | +1. **Initial Attempt:** It first tries to run your script directly in the current environment for maximum speed. |
| 36 | +2. **Failure Detection:** If the script fails and prints an error message containing a version conflict (like `AssertionError: Incorrect rich version!...` or a `VersionConflict` error from `pkg_resources`), `omnipkg`'s healing mechanism activates. |
| 37 | +3. **Conflict Analysis:** It parses the error message to identify the exact package and version the script requires (e.g., `rich==13.4.2`). |
| 38 | +4. **Bubble Activation:** It then invokes the `omnipkgLoader`. This powerful tool instantly and temporarily modifies your environment in memory: |
| 39 | + * It "cloaks" the main environment's version of `rich`. |
| 40 | + * It activates the `rich==13.4.2` bubble you previously installed. |
| 41 | + * This entire "teleport" happens in **microseconds**. |
| 42 | +5. **Re-execution:** `omnipkg` immediately re-runs your script within this temporarily modified context. The script now finds the correct version (`13.4.2`) and succeeds. |
| 43 | +6. **Automatic Restoration:** As soon as the script finishes, the `omnipkgLoader` context is closed, and your environment is instantly restored to its original state, with `rich==14.1.0` active again. |
| 44 | + |
| 45 | +The result is a workflow that never stops, automatically resolving its own dependency issues without any manual intervention. |
| 46 | + |
| 47 | +### Performance |
| 48 | + |
| 49 | +As shown in our tests, this auto-healing process is often **faster** than a standard tool's failure. The initial run might fail in ~130ms, while the entire `omnipkg` heal-and-rerun cycle completes in just **~40ms**. |
| 50 | + |
| 51 | +This feature makes it possible to build robust, resilient scripts that are guaranteed to run, regardless of the state of the underlying environment. |
0 commit comments