[Bug]: qenv is valid but code is not reproducible
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 38/100
Piste de recherche
Reproduisez les exemples de within(qenv(), ...) dans une nouvelle session R --vanilla, puis examinez l’initialisation de qenv et l’utilisation de .GlobalEnv. Comparez le comportement lorsque teal.modules.clinical est chargé et lorsqu’il est absent ; le travail doit être considéré comme terminé lorsqu’un qenv ne peut pas apparaître comme valide si son code dépend d’objets ou de fonctions indisponibles.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
What happened?
When creating/modifying a qenv object or derivative, it fails if there are objects or calls to packages outside the environment.
However, when a library is loaded before the creation of the qenv object, functions or object can be found so the code succeeds and results in a valid object even if code results on not reproducible.
This results on teal applications that work, but when users copy and paste the code on a new vanilla R session (R --vanilla), the code will raise an error because there aren't some objects or functions in the environment.
Some testing might also fail as in that environment(s) libraries might not be loaded (as I found on https://github.com/insightsengineering/coredev-tasks/issues/536) .
library("teal.code")
within(qenv(), {ADSL <- tmc_ex_adsl})
#> <qenv.error: object 'tmc_ex_adsl' not found
#> when evaluating qenv code:
#> ADSL <- tmc_ex_adsl>
library("teal.modules.clinical")
#> Loading required package: teal
#> Loading required package: shiny
#> Loading required package: teal.slice
#> Registered S3 method overwritten by 'teal':
#> method from
#> c.teal_slices teal.slice
#>
#> You are using teal version 1.0.0
#>
#> Attaching package: 'teal'
#> The following objects are masked from 'package:teal.slice':
#>
#> as.teal_slices, teal_slices
#> Loading required package: teal.transform
#> Loading required package: tern
#> Loading required package: rtables
#> Loading required package: formatters
#>
#> Attaching package: 'formatters'
#> The following object is masked from 'package:base':
#>
#> %||%
#> Loading required package: magrittr
#>
#> Attaching package: 'rtables'
#> The following object is masked from 'package:utils':
#>
#> str
#> Registered S3 method overwritten by 'tern':
#> method from
#> tidy.glm broom
within(qenv(), {ADSL <- tmc_ex_adsl})
#> <environment: 0x000001dc3ac0c8d0> 🔒
#> Parent: <environment: package:teal.modules.clinical>
#> Bindings:
#> - ADSL: [tbl_df]
Created on 2025-09-09 with reprex v2.1.1
I would expect that the last object don't succeed as the code can't be run in a fresh R session without the teal.modules.clinical package, and often there is no information about it (except in some occasions via parent.env([email protected]) and the attr(env, "name")).
I think this is because the package uses the global environment instead of the base environment on initialization.
This might be related to #201
sessionInfo()
R version 4.5.1 (2025-06-13 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 22631)
Matrix products: default
LAPACK version 3.12.1
locale:
[1] LC_COLLATE=Spanish_Spain.utf8 LC_CTYPE=Spanish_Spain.utf8
[3] LC_MONETARY=Spanish_Spain.utf8 LC_NUMERIC=C
[5] LC_TIME=Spanish_Spain.utf8
time zone: Europe/Madrid
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] teal.modules.clinical_0.11.1 tern_0.9.9
[3] rtables_0.6.13 magrittr_2.0.3
[5] formatters_0.5.11 teal.transform_0.7.0
[7] teal_1.0.0 teal.slice_0.7.0
[9] teal.data_0.8.0 shiny_1.11.1
[11] teal.code_0.7.0 pkgdown_2.1.3
[13] devtools_2.4.5 usethis_3.2.0
loaded via a namespace (and not attached):
[1] gtable_0.3.6 ggplot2_3.5.2 htmlwidgets_1.6.4 remotes_2.5.0.9000
[5] lattice_0.22-7 vctrs_0.6.5 tools_4.5.1 Rdpack_2.6.4
[9] generics_0.1.4 tibble_3.3.0 pkgconfig_2.0.3 Matrix_1.7-4
[13] checkmate_2.3.3 RColorBrewer_1.1-3 lifecycle_1.0.4 compiler_4.5.1
[17] farver_2.1.2 textshaping_1.0.3 httpuv_1.6.16 htmltools_0.5.8.1
[21] later_1.4.4 pillar_1.11.0 urlchecker_1.0.1 tidyr_1.3.1
[25] ellipsis_0.3.2 cachem_1.1.0 sessioninfo_1.2.3 mime_0.13
[29] nestcolor_0.1.3 tidyselect_1.2.1 digest_0.6.37 stringi_1.8.7
[33] dplyr_1.1.4 purrr_1.1.0 splines_4.5.1 fastmap_1.2.0
[37] grid_4.5.1 cli_3.6.5 logger_0.4.0 bsicons_0.1.2
[41] survival_3.8-3 pkgbuild_1.4.8 broom_1.0.9 rutils_0.0.2.92
[45] scales_1.4.0 promises_1.3.3 backports_1.5.0 ragg_1.5.0
[49] memoise_2.0.1 evaluate_1.0.5 rbibutils_2.3 miniUI_0.1.2
[53] profvis_0.4.0 rlang_1.1.6 Rcpp_1.1.0 xtable_1.8-4
[57] glue_1.8.0 pkgload_1.4.0 rstudioapi_0.17.1 teal.logger_0.4.0
[61] R6_2.6.1 systemfonts_1.2.3 fs_1.6.6
Relevant log output
Code of Conduct
- I agree to follow this project's Code of Conduct.
Contribution Guidelines
- I agree to follow this project's Contribution Guidelines.
Security Policy
- I agree to follow this project's Security Policy.
- Langage dominant
- R
- Étoiles
- 12
- Forks
- 11
- Merge moyen
- 8 j 15 h
- PR mergées (30 j)
- 2
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le 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 insightsengineering/teal.code
-
Move to PharmaversePeut-être pris @llrs-roche l’a pris il y a 37 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
insightsengineering/teal.code#292 ·
-
[Feature Request]: High cyclomatic complexity leds to bad readabilityPeut-être pris @llrs-roche l’a pris il y a 38 jours. Ouverteenhancement
Difficulté 3/5 3-5 jours Accessibilité débutants 45/100
insightsengineering/teal.code#295 ·
-
core discussion
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
insightsengineering/teal.code#291 · 2 commentaires · 1 réaction ·
-
bug core
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
insightsengineering/teal.code#275 ·
-
This is test issue to test copilot capabilitiesPeut-être pris @copilot-swe-agent l’a pris il y a 435 jours. Ouvertebug
insightsengineering/teal.code#266 · 1 réaction · 1 personne assignée ·
Toutes les issues de insightsengineering/teal.code
Issues similaires
-
Add more snippets to R and JuliaOuverteenhancement good first issue help wanted
Difficulté 2/5 Une demi-journée Accessibilité débutants 82/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
question
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
Breaking 🏴☠️ Consistency :green_apple: :apple:
Difficulté 1/5 Moins d'une heure Accessibilité débutants 70/100
easystats/bayestestR#789 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
stan-dev/priorsense#150 ·