Skip to content

PCREQ-1.0.1

Choose a tag to compare

@guanpingxiao guanpingxiao released this 17 Jun 14:08

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) under extraction/cache/, eliminating data races in parallel batch execution.

  • _safe_load_json across 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.json key format.

  • remove_redundant_dependencies now 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.parse throughout to prevent duplicate Z3 variables from inconsistent version representations.

  • sorted() in save_dict_to_file for deterministic requirements.txt output.

  • knowledgePath normalized with rstrip("/"), original target_version used for report directory naming, end_available_versions guarded against orphaned FDG keys.

Full Changelog: v1.0.0...v1.0.1