You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
### Summary
Fixed non-deterministic file ordering in the `iter_package_files` function by adding explicit sorting of package files. This change ensures consistent behavior across builds and prevents issues caused by unordered file iteration.
### Changes Made
- Applied `sorted()` to file listings in both Python versions (<3.11 and >=3.11).
- Guaranteed that files are processed in a consistent, lexicographic order.
### Why This Fix?
- Prevents non-deterministic builds caused by unordered file iteration.
- Improves build reproducibility and enables better caching in CI/CD pipelines.
- Simplifies code by enforcing consistent ordering within the function, reducing the need for manual sorting in callers.
### Testing
- Rebuilt the project multiple times and verified that output files are now consistent across builds.
- Compared generated artifacts (e.g., `.json` files) to confirm deterministic ordering.
### Impact
- No functional changes to how files are processed, only improves determinism.
- Safer and more reliable builds, especially in CI environments.
Closeslinkedin#265
👋 We are using shiv in reproducible mode, but we found that the output is not idempotent due to this block of code that adds the
_bootstrap
directory:shiv/src/shiv/builder.py
Lines 165 to 177 in a353d10
In particular,
iter_package_files(bootstrap)
(which eventually callsPath.iterdir()
) is not guaranteed to be in any particular order.The text was updated successfully, but these errors were encountered: