39 lines
1.5 KiB
Markdown
39 lines
1.5 KiB
Markdown
|
|
# Python Azure DevOps Work Item CSV
|
|||
|
|
|
|||
|
|
## Run Example
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1 Create and activate an isolated Python environment
|
|||
|
|
python3 -m venv .venv
|
|||
|
|
source .venv/bin/activate
|
|||
|
|
|
|||
|
|
# 2 Install runtime dependencies
|
|||
|
|
python -m pip install --upgrade pip
|
|||
|
|
python -m pip install -r requirements.pip
|
|||
|
|
|
|||
|
|
# 3 Convert the CSV
|
|||
|
|
python reorder_requirements.py "input.csv" "output.csv"
|
|||
|
|
|
|||
|
|
python reorder_requirements.py -v "/Users/jj/Downloads/input.csv" "/Users/jj/Downloads/output.csv"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Execution Logic Summary
|
|||
|
|
|
|||
|
|
1. **build\_level\_map** walks up the `Parent` chain to assign every row its depth (1, 2, 3, …).
|
|||
|
|
1. **depth\_first\_order** produces a depth-first sequence of IDs so that each parent is immediately followed by its children (and grandchildren).
|
|||
|
|
1. **restructure** creates the empty `ID` column plus the mutually-exclusive `Title 1 – 3` columns and appends every *other* original column (except the old `ID`, `Parent`, and `Title`).
|
|||
|
|
1. The script writes the new CSV; nothing is printed except a final “Wrote … rows” confirmation.
|
|||
|
|
|
|||
|
|
You’ll get a file whose first four columns are:
|
|||
|
|
|
|||
|
|
| ID | Title 1 | Title 2 | Title 3 | …other original fields… |
|
|||
|
|
| -- | ------- | ------- | ------- | ----------------------- |
|
|||
|
|
|
|||
|
|
where:
|
|||
|
|
|
|||
|
|
* Top-level items fill **Title 1**.
|
|||
|
|
* Second-level items fill **Title 2**.
|
|||
|
|
* Third-level (and deeper) items fill **Title 3**.
|
|||
|
|
|
|||
|
|
All hierarchy constraints you specified are enforced automatically. Feel free to adapt the column names or add CLI switches if you ever need variations (e.g., different max depth).
|