ThinkR-open / ThinkR-open/datadiff
[API] setup_pointblank_agent : paramètre cols_reference mort, vecteur de référence embarqué dans chaque step, exemple roxygen trompeur
Nobody has claimed this yet.
- Dominant language
- R
- Stars
- 6
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Contexte
setup_pointblank_agent() (R/pointblank_setup.R) est exportée mais présente plusieurs défauts d'API et de coût :
- Paramètre mort :
cols_reference(2e position, documenté) n'apparaît nulle part dans le corps — vérifié par grep (seules occurrences : signature + doc). L'appelant calcule et passe cette valeur pour rien ; la variable localecols_candidatede l'appelant est morte en cascade. - Mémoire : sur le chemin local, chaque step d'égalité fait
col_vals_equal(columns = c, value = cmp[[paste0(c, ref_suffix)]])— le vecteur de référence entier est embarqué dans l'agent pour chaque colonne (O(n_rows) par step, sérialisé avec le rapport), et repose sur unvaluenon scalaire hors du contrat documenté de pointblank. - Exemple roxygen trompeur : l'exemple passe
tol_cols = "b"alors quecmpn'a pas de colonneb__ok— l'agent produit échouerait à l'interrogation. Il masque le vrai contrat (booléens__okprécalculés par le pipeline). - Export discutable : 15 paramètres dont 5 obligatoires sans défaut, couplage fort aux conventions internes (
__ok,__eq,__missing_col_) ; en interne elle n'est plus appelée que sur le chemin d'échec avecadd_col_exists_steps = FALSE. Par ailleursget_col_names(cmp)est recalculé à chaque itération de la boucle des colonnes d'égalité. - Les colonnes d'égalité défaillantes (
fail$eq) sont passées dans le paramètre nommécommon_cols— la sémantique du nom ment.
Reprex
library(datadiff)
# 1. paramètre mort : la valeur passée n'a aucun effet
cmp <- data.frame(a = 1:3, a__reference = 1:3)
r1 <- setup_pointblank_agent(cmp, cols_reference = c("a"), common_cols = "a",
tol_cols = character(0), NULL, "__reference", .1, .1, "x", TRUE)
r2 <- setup_pointblank_agent(cmp, cols_reference = c("INEXISTANT"), common_cols = "a",
tol_cols = character(0), NULL, "__reference", .1, .1, "x", TRUE)
# aucune différence de comportement
Critères de succès
-
cols_referenceretiré (dépréciation propre puisque exporté : warning une version, puis suppression) ;cols_candidatemort supprimé chez l'appelant. - Steps d'égalité locaux basés sur un booléen précalculé (cf. issue perf sur la mémoïsation
__eq) au lieu d'embarquer le vecteur de référence. - Exemple roxygen exécutable et représentatif (avec
__okprésent). - Décision documentée sur l'export :
@keywords internalou maintien assumé avec doc du contrat ; paramètre renommé ou documenté pourcommon_cols/fail$eq. -
get_col_names(cmp)hissé hors boucle.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with R/pointblank_setup.R and trace its callers, especially where cols_candidate is computed and where fail$eq is passed as common_cols; inspect the local equality steps and the get_col_names(cmp) loop. Done means the dead parameter and caller variable are removed cleanly, equality steps use the precalculated boolean data, the roxygen example includes __ok, the export and naming decisions are documented, and get_col_names(cmp) is computed once outside the loop.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- r
- Domain
- backend-api-design, documentation, performance
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100