BUG: ColloquialWordswapConverter identifier ignores custom substitution values
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 25/100
Piste de recherche
Read ColloquialWordswapConverter's identifier construction and compare it with LeetspeakConverter, which the issue identifies as handling full custom mappings. Check how the converter's identifier is tested; done means configurations with identical keys but different substitution values have different identifiers and both can register. A linked open pull request indicates this work is already underway.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
ColloquialWordswapConverter identifies custom_substitutions only by their keys (substitution_keys). Two converters whose custom dictionaries have the same words but different substitutions produce different output but share one hash.
Because the default registry name comes from that hash, registering a second configuration without a custom name raises a duplicate-name error, and memory and analytics cannot tell the configurations apart. LeetspeakConverter already handles the same case by adding a custom_substitutions_hash of the full mapping. This is the same kind of problem as #3242 and #3244.
Steps/Code to Reproduce
import asyncio
from pyrit.converter import ColloquialWordswapConverter
from pyrit.registry import ConverterRegistry
papa = ColloquialWordswapConverter(deterministic=True, custom_substitutions={"father": ["papa"]})
bapa = ColloquialWordswapConverter(deterministic=True, custom_substitutions={"father": ["bapa"]})
print(papa.get_identifier().unique_name, bapa.get_identifier().unique_name)
print(asyncio.run(papa.convert_async(prompt="my father")).output_text)
print(asyncio.run(bapa.convert_async(prompt="my father")).output_text)
registry = ConverterRegistry()
registry.instances.register(papa)
registry.instances.register(bapa)
Expected Results
The two converters have different identifiers, and both register.
Actual Results
ColloquialWordswapConverter::ab18d07b ColloquialWordswapConverter::ab18d07b
my papa
my bapa
ValueError: Instance 'ColloquialWordswapConverter::ab18d07b' already exists
Screenshots
N/A
Versions
- OS: Windows 11
- Python version: 3.11.9
- PyRIT version: installed from main (5b594e00) in editable mode
- Langage dominant
- Python
- Étoiles
- 4.7k
- Forks
- 1k
- Merge moyen
- 2 j 2 h
- PR mergées (30 j)
- 439
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de microsoft/PyRIT
-
Description-only preset edits split comma-containing exact goals into separate goalsPeut-être pris @MRX-72 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 2 jours
-
GUI rejects valid empty-string SearchReplaceConverter settings, preventing deletion convertersPeut-être pris @Darshika140 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
microsoft/PyRIT#3749 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
HTML scenario export replaces an intentionally empty converted message with the original textPeut-être pris @VISHNU0906 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
microsoft/PyRIT#3741 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 2 jours
-
Development toolchain includes an audited vulnerable Zod versionPeut-être pris @ppcvote l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
microsoft/PyRIT#3725 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
question
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
conda-forge/vc-feedstock#132 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
limitlessprojects/Go-Hybrid#3342 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
UKGovernmentBEIS/inspect_ai#6268 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
LSSTDESC/rail_sompz#42 ·
-
All tests fail with 'EXITED with status 3' on pytest 9.2.0 (TestReport._id is not marshallable)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
pytest-dev/pytest-forked#113 ·