Skip to content

fix: URLDataTypeSerializer recognizes mixed-case HTTP(S) schemes - #3918

Open
Akhil Gupta (akhil9tiet) wants to merge 2 commits into
microsoft:mainfrom
akhil9tiet:fix/3861-url-scheme-case-insensitive
Open

Akhil Gupta (akhil9tiet) wants to merge 2 commits into
microsoft:mainfrom
akhil9tiet:fix/3861-url-scheme-case-insensitive

Conversation

@akhil9tiet

Copy link
Copy Markdown

Fixes #3861

Description

URLDataTypeSerializer used a case-sensitive startswith check ("http://", "https://") to decide whether a value is a URL or a local path, so mixed-case schemes like HTTPS://... or HtTp://... were misclassified as local files. Hashing and public seed ingestion then raised FileNotFoundError.

The scheme check is now case-insensitive (prompt_text.lower().startswith(("http://", "https://"))) while the original URL spelling is preserved in self.value.

Tests and Documentation

One-line fix; no behavior change for already-lowercase schemes. Verified the commit diff is exactly one changed line.

Copilot AI balanced review requested due to automatic review settings November 4, 2026 06:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues remain for the change to recognize mixed-case HTTP(S) URL schemes.

No open issues 🎉

What changed in this PR

Fixes #3861 by recognizing mixed-case HTTP(S) schemes in URLDataTypeSerializer, preventing valid URLs from being treated as local files during hashing and seed ingestion.

Changes:

  • Makes HTTP(S) scheme detection case-insensitive.
  • Preserves the original URL spelling and existing handling of lowercase URLs and local paths.
File Description
pyrit/​memory/​storage/​serializers.py Uses a lowercase comparison to classify HTTP(S) URLs without modifying the stored value.

Review effort: Balanced

@romanlutz Roman Lutz (romanlutz) self-assigned this Nov 5, 2026
)

Addresses review feedback from romanlutz on microsoft#3918: cover uppercase and mixed-case http/https URL schemes, asserting data_on_disk() is false, the original spelling is preserved, and get_sha256_async() hashes the original UTF-8 bytes without accessing storage; plus an end-to-end add_seeds_to_memory_async() case with a real SeedPrompt and the isolated SQLite fixture, retaining a local-path case.

Signed-off-by: Akhil Gupta <akhilgupta.swe@gmail.com>
@akhil9tiet
Akhil Gupta (akhil9tiet) force-pushed the fix/3861-url-scheme-case-insensitive branch from b592da7 to 6470dc3 Compare November 5, 2026 08:34

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

URLDataTypeSerializer treats mixed-case HTTP(S) schemes as local paths

3 participants