Releases: PCART-tools/PCREQ
PCREQ-1.0.1
What's Changed
v1.0.1 fixes bugs introduced in v1.0.0 when removing hardcoded local paths from the repository for public release.
The most critical fix is a missing {} in an f-string (f"library_path_prefix..." → f"{library_path_prefix}...") that caused all METADATA and setup.py constraint lookups to silently fail. The variable was treated as a string literal, so every lookup fell through to PyPI JSON. The same change guards download_from_data against write errors on read-only KB directories.
Additional reliability improvements:
-
Thread-safe extraction cache with atomic writes (
tmp+os.replace) underextraction/cache/, eliminating data races in parallel batch execution. -
_safe_load_jsonacross all 10 call_graph read sites to handle empty or corrupted JSON files from interrupted writes. -
Constraint keys normalized (lowercase, extras stripped) to match
library_version.jsonkey format. -
remove_redundant_dependenciesnow checks other resolved packages' deps before removing a candidate, preventing loss of legitimate transitive dependencies. -
Non-KB versions (e.g., post-releases in requirements.txt but absent from the KB) are prepended to candidate lists rather than appended or inserted at sort position, so the Z3 maximize strategy never prefers them over KB-validated versions.
-
Versions normalized via
packaging.version.parsethroughout to prevent duplicate Z3 variables from inconsistent version representations. -
sorted()insave_dict_to_filefor deterministicrequirements.txtoutput. -
knowledgePathnormalized withrstrip("/"), originaltarget_versionused for report directory naming,end_available_versionsguarded against orphaned FDG keys.
Full Changelog: v1.0.0...v1.0.1
PCREQ-1.0.0
PCREQ 1.0.0 Release