38 lines
1.5 KiB
Markdown
38 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).
|