psychopy 2024.2.5__py3-none-any.whl → 2025.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of psychopy might be problematic. Click here for more details.

Files changed (863) hide show
  1. psychopy/CHANGELOG.txt +4 -4
  2. psychopy/GIT_SHA +1 -1
  3. psychopy/LICENSE.txt +1 -1
  4. psychopy/VERSION +1 -1
  5. psychopy/__init__.py +10 -7
  6. psychopy/alerts/__init__.py +1 -1
  7. psychopy/alerts/_alerts.py +53 -17
  8. psychopy/alerts/_errorHandler.py +3 -4
  9. psychopy/alerts/alertsCatalogue/3210.yaml +27 -0
  10. psychopy/alerts/alertsCatalogue/3610.yaml +19 -0
  11. psychopy/alerts/alertsCatalogue/4130.yaml +19 -0
  12. psychopy/alerts/alertsCatalogue/alertCategories.yaml +8 -1
  13. psychopy/alerts/alertsCatalogue/alertmsg.py +1 -1
  14. psychopy/alerts/alerttools.py +0 -16
  15. psychopy/app/Resources/betasplash.png +0 -0
  16. psychopy/app/Resources/betasplash@2x.png +0 -0
  17. psychopy/app/Resources/classic/case.png +0 -0
  18. psychopy/app/Resources/classic/case@2x.png +0 -0
  19. psychopy/app/Resources/classic/fileaudio.png +0 -0
  20. psychopy/app/Resources/classic/fileaudio@2x.png +0 -0
  21. psychopy/app/Resources/classic/filecss.png +0 -0
  22. psychopy/app/Resources/classic/filecss@2x.png +0 -0
  23. psychopy/app/Resources/classic/filecsv.png +0 -0
  24. psychopy/app/Resources/classic/filecsv@2x.png +0 -0
  25. psychopy/app/Resources/classic/filedesign.png +0 -0
  26. psychopy/app/Resources/classic/filedesign@2x.png +0 -0
  27. psychopy/app/Resources/classic/filefont.png +0 -0
  28. psychopy/app/Resources/classic/filefont@2x.png +0 -0
  29. psychopy/app/Resources/classic/filegit.png +0 -0
  30. psychopy/app/Resources/classic/filegit@2x.png +0 -0
  31. psychopy/app/Resources/classic/filehtml.png +0 -0
  32. psychopy/app/Resources/classic/filehtml@2x.png +0 -0
  33. psychopy/app/Resources/classic/fileimage.png +0 -0
  34. psychopy/app/Resources/classic/fileimage@2x.png +0 -0
  35. psychopy/app/Resources/classic/fileinfo.png +0 -0
  36. psychopy/app/Resources/classic/fileinfo@2x.png +0 -0
  37. psychopy/app/Resources/classic/filejs.png +0 -0
  38. psychopy/app/Resources/classic/filejs@2x.png +0 -0
  39. psychopy/app/Resources/classic/filejson.png +0 -0
  40. psychopy/app/Resources/classic/filejson@2x.png +0 -0
  41. psychopy/app/Resources/classic/filepkg.png +0 -0
  42. psychopy/app/Resources/classic/filepkg@2x.png +0 -0
  43. psychopy/app/Resources/classic/filepsyexp.png +0 -0
  44. psychopy/app/Resources/classic/filepsyexp@2x.png +0 -0
  45. psychopy/app/Resources/classic/filepy.png +0 -0
  46. psychopy/app/Resources/classic/filepy@2x.png +0 -0
  47. psychopy/app/Resources/classic/filetxt.png +0 -0
  48. psychopy/app/Resources/classic/filetxt@2x.png +0 -0
  49. psychopy/app/Resources/classic/fileunknown.png +0 -0
  50. psychopy/app/Resources/classic/fileunknown@2x.png +0 -0
  51. psychopy/app/Resources/classic/filevideo.png +0 -0
  52. psychopy/app/Resources/classic/filevideo@2x.png +0 -0
  53. psychopy/app/Resources/classic/find.png +0 -0
  54. psychopy/app/Resources/classic/find@2x.png +0 -0
  55. psychopy/app/Resources/classic/loop.png +0 -0
  56. psychopy/app/Resources/classic/loop@2x.png +0 -0
  57. psychopy/app/Resources/classic/regex.png +0 -0
  58. psychopy/app/Resources/classic/regex@2x.png +0 -0
  59. psychopy/app/Resources/dark/case.png +0 -0
  60. psychopy/app/Resources/dark/case@2x.png +0 -0
  61. psychopy/app/Resources/dark/fileaudio.png +0 -0
  62. psychopy/app/Resources/dark/fileaudio@2x.png +0 -0
  63. psychopy/app/Resources/dark/filecss.png +0 -0
  64. psychopy/app/Resources/dark/filecss@2x.png +0 -0
  65. psychopy/app/Resources/dark/filecsv.png +0 -0
  66. psychopy/app/Resources/dark/filecsv@2x.png +0 -0
  67. psychopy/app/Resources/dark/filedesign.png +0 -0
  68. psychopy/app/Resources/dark/filedesign@2x.png +0 -0
  69. psychopy/app/Resources/dark/filefont.png +0 -0
  70. psychopy/app/Resources/dark/filefont@2x.png +0 -0
  71. psychopy/app/Resources/dark/filegit.png +0 -0
  72. psychopy/app/Resources/dark/filegit@2x.png +0 -0
  73. psychopy/app/Resources/dark/filehtml.png +0 -0
  74. psychopy/app/Resources/dark/filehtml@2x.png +0 -0
  75. psychopy/app/Resources/dark/fileimage.png +0 -0
  76. psychopy/app/Resources/dark/fileimage@2x.png +0 -0
  77. psychopy/app/Resources/dark/fileinfo.png +0 -0
  78. psychopy/app/Resources/dark/fileinfo@2x.png +0 -0
  79. psychopy/app/Resources/dark/filejs.png +0 -0
  80. psychopy/app/Resources/dark/filejs@2x.png +0 -0
  81. psychopy/app/Resources/dark/filejson.png +0 -0
  82. psychopy/app/Resources/dark/filejson@2x.png +0 -0
  83. psychopy/app/Resources/dark/filepkg.png +0 -0
  84. psychopy/app/Resources/dark/filepkg@2x.png +0 -0
  85. psychopy/app/Resources/dark/filepsyexp.png +0 -0
  86. psychopy/app/Resources/dark/filepsyexp@2x.png +0 -0
  87. psychopy/app/Resources/dark/filepy.png +0 -0
  88. psychopy/app/Resources/dark/filepy@2x.png +0 -0
  89. psychopy/app/Resources/dark/filetxt.png +0 -0
  90. psychopy/app/Resources/dark/filetxt@2x.png +0 -0
  91. psychopy/app/Resources/dark/fileunknown.png +0 -0
  92. psychopy/app/Resources/dark/fileunknown@2x.png +0 -0
  93. psychopy/app/Resources/dark/filevideo.png +0 -0
  94. psychopy/app/Resources/dark/filevideo@2x.png +0 -0
  95. psychopy/app/Resources/dark/find.png +0 -0
  96. psychopy/app/Resources/dark/find@2x.png +0 -0
  97. psychopy/app/Resources/dark/loop.png +0 -0
  98. psychopy/app/Resources/dark/loop@2x.png +0 -0
  99. psychopy/app/Resources/dark/regex.png +0 -0
  100. psychopy/app/Resources/dark/regex@2x.png +0 -0
  101. psychopy/app/Resources/light/case.png +0 -0
  102. psychopy/app/Resources/light/case@2x.png +0 -0
  103. psychopy/app/Resources/light/fileaudio.png +0 -0
  104. psychopy/app/Resources/light/fileaudio@2x.png +0 -0
  105. psychopy/app/Resources/light/filecss.png +0 -0
  106. psychopy/app/Resources/light/filecss@2x.png +0 -0
  107. psychopy/app/Resources/light/filecsv.png +0 -0
  108. psychopy/app/Resources/light/filecsv@2x.png +0 -0
  109. psychopy/app/Resources/light/filedesign.png +0 -0
  110. psychopy/app/Resources/light/filedesign@2x.png +0 -0
  111. psychopy/app/Resources/light/filefont.png +0 -0
  112. psychopy/app/Resources/light/filefont@2x.png +0 -0
  113. psychopy/app/Resources/light/filegit.png +0 -0
  114. psychopy/app/Resources/light/filegit@2x.png +0 -0
  115. psychopy/app/Resources/light/filehtml.png +0 -0
  116. psychopy/app/Resources/light/filehtml@2x.png +0 -0
  117. psychopy/app/Resources/light/fileimage.png +0 -0
  118. psychopy/app/Resources/light/fileimage@2x.png +0 -0
  119. psychopy/app/Resources/light/fileinfo.png +0 -0
  120. psychopy/app/Resources/light/fileinfo@2x.png +0 -0
  121. psychopy/app/Resources/light/filejs.png +0 -0
  122. psychopy/app/Resources/light/filejs@2x.png +0 -0
  123. psychopy/app/Resources/light/filejson.png +0 -0
  124. psychopy/app/Resources/light/filejson@2x.png +0 -0
  125. psychopy/app/Resources/light/filepkg.png +0 -0
  126. psychopy/app/Resources/light/filepkg@2x.png +0 -0
  127. psychopy/app/Resources/light/filepsyexp.png +0 -0
  128. psychopy/app/Resources/light/filepsyexp@2x.png +0 -0
  129. psychopy/app/Resources/light/filepy.png +0 -0
  130. psychopy/app/Resources/light/filepy@2x.png +0 -0
  131. psychopy/app/Resources/light/filetxt.png +0 -0
  132. psychopy/app/Resources/light/filetxt@2x.png +0 -0
  133. psychopy/app/Resources/light/fileunknown.png +0 -0
  134. psychopy/app/Resources/light/fileunknown@2x.png +0 -0
  135. psychopy/app/Resources/light/filevideo.png +0 -0
  136. psychopy/app/Resources/light/filevideo@2x.png +0 -0
  137. psychopy/app/Resources/light/find.png +0 -0
  138. psychopy/app/Resources/light/find@2x.png +0 -0
  139. psychopy/app/Resources/light/loop.png +0 -0
  140. psychopy/app/Resources/light/loop@2x.png +0 -0
  141. psychopy/app/Resources/light/regex.png +0 -0
  142. psychopy/app/Resources/light/regex@2x.png +0 -0
  143. psychopy/app/Resources/routine_templates/Basic.psyexp +0 -1
  144. psychopy/app/Resources/routine_templates/Misc.psyexp +0 -1
  145. psychopy/app/Resources/routine_templates/Online.psyexp +0 -2
  146. psychopy/app/Resources/routine_templates/Trials.psyexp +0 -1
  147. psychopy/app/Resources/splash.png +0 -0
  148. psychopy/app/Resources/splash@2x.png +0 -0
  149. psychopy/app/__init__.py +49 -8
  150. psychopy/app/__main__.py +3 -0
  151. psychopy/app/_psychopyApp.py +134 -125
  152. psychopy/app/builder/builder.py +42 -22
  153. psychopy/app/builder/dialogs/__init__.py +44 -11
  154. psychopy/app/builder/dialogs/dlgsCode.py +1 -1
  155. psychopy/app/builder/dialogs/dlgsConditions.py +1 -1
  156. psychopy/app/builder/dialogs/findDlg.py +106 -20
  157. psychopy/app/builder/dialogs/paramCtrls.py +42 -1
  158. psychopy/app/builder/validators.py +1 -1
  159. psychopy/app/coder/codeEditorBase.py +8 -8
  160. psychopy/app/coder/coder.py +32 -29
  161. psychopy/app/coder/fileBrowser.py +68 -22
  162. psychopy/app/coder/folding.py +1 -1
  163. psychopy/app/coder/psychoParser.py +1 -1
  164. psychopy/app/coder/repl.py +1 -1
  165. psychopy/app/coder/sourceTree.py +1 -1
  166. psychopy/app/connections/__init__.py +1 -1
  167. psychopy/app/connections/news.py +1 -1
  168. psychopy/app/connections/sendusage.py +1 -1
  169. psychopy/app/connections/updates.py +1 -1
  170. psychopy/app/console.py +1 -1
  171. psychopy/app/errorDlg.py +1 -1
  172. psychopy/app/frametracker.py +1 -1
  173. psychopy/app/idle.py +1 -1
  174. psychopy/app/jobs.py +5 -2
  175. psychopy/app/linuxconfig/__init__.py +1 -1
  176. psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo +0 -0
  177. psychopy/app/locale/ar_001/LC_MESSAGE/messages.po +4 -4
  178. psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.mo +0 -0
  179. psychopy/app/locale/da_DK/LC_MESSAGE/messages.mo +0 -0
  180. psychopy/app/locale/de_DE/LC_MESSAGE/messages.mo +0 -0
  181. psychopy/app/locale/de_DE/LC_MESSAGE/messages.po +3 -3
  182. psychopy/app/locale/el_GR/LC_MESSAGE/messages.mo +0 -0
  183. psychopy/app/locale/en_NZ/LC_MESSAGE/messages.mo +0 -0
  184. psychopy/app/locale/en_US/LC_MESSAGE/messages.mo +0 -0
  185. psychopy/app/locale/es_CO/LC_MESSAGE/messages.mo +0 -0
  186. psychopy/app/locale/es_CO/LC_MESSAGE/messages.po +4 -4
  187. psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo +0 -0
  188. psychopy/app/locale/es_ES/LC_MESSAGE/messages.po +4 -4
  189. psychopy/app/locale/es_US/LC_MESSAGE/messages.mo +0 -0
  190. psychopy/app/locale/es_US/LC_MESSAGE/messages.po +4 -4
  191. psychopy/app/locale/et_EE/LC_MESSAGE/messages.mo +0 -0
  192. psychopy/app/locale/et_EE/LC_MESSAGE/messages.po +2 -2
  193. psychopy/app/locale/fa_IR/LC_MESSAGE/messages.mo +0 -0
  194. psychopy/app/locale/fa_IR/LC_MESSAGE/messages.po +1 -1
  195. psychopy/app/locale/fi_FI/LC_MESSAGE/messages.mo +0 -0
  196. psychopy/app/locale/fr_FR/LC_MESSAGE/messages.mo +0 -0
  197. psychopy/app/locale/fr_FR/LC_MESSAGE/messages.po +2 -2
  198. psychopy/app/locale/he_IL/LC_MESSAGE/messages.mo +0 -0
  199. psychopy/app/locale/he_IL/LC_MESSAGE/messages.po +2 -2
  200. psychopy/app/locale/hi_IN/LC_MESSAGE/messages.mo +0 -0
  201. psychopy/app/locale/hi_IN/LC_MESSAGE/messages.po +2 -2
  202. psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo +0 -0
  203. psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo +0 -0
  204. psychopy/app/locale/it_IT/LC_MESSAGE/messages.po +2 -2
  205. psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo +0 -0
  206. psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po +3421 -2396
  207. psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo +0 -0
  208. psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo +0 -0
  209. psychopy/app/locale/ms_MY/LC_MESSAGE/messages.po +2 -2
  210. psychopy/app/locale/nl_NL/LC_MESSAGE/messages.mo +0 -0
  211. psychopy/app/locale/nn_NO/LC_MESSAGE/messages.mo +0 -0
  212. psychopy/app/locale/pl_PL/LC_MESSAGE/messages.mo +0 -0
  213. psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo +0 -0
  214. psychopy/app/locale/pt_PT/LC_MESSAGE/messages.po +4 -4
  215. psychopy/app/locale/ro_RO/LC_MESSAGE/messages.mo +0 -0
  216. psychopy/app/locale/ru_RU/LC_MESSAGE/messages.mo +0 -0
  217. psychopy/app/locale/sv_SE/LC_MESSAGE/messages.mo +0 -0
  218. psychopy/app/locale/sv_SE/LC_MESSAGE/messages.po +2 -2
  219. psychopy/app/locale/tr_TR/LC_MESSAGE/messages.mo +0 -0
  220. psychopy/app/locale/tr_TR/LC_MESSAGE/messages.po +2 -2
  221. psychopy/app/locale/zh_CN/LC_MESSAGE/messages.mo +0 -0
  222. psychopy/app/locale/zh_CN/LC_MESSAGE/messages.po +3 -3
  223. psychopy/app/locale/zh_TW/LC_MESSAGE/messages.mo +0 -0
  224. psychopy/app/locale/zh_TW/LC_MESSAGE/messages.po +2 -2
  225. psychopy/app/{builder/localizedStrings.py → localizedStrings.py} +173 -26
  226. psychopy/app/pavlovia_ui/__init__.py +1 -1
  227. psychopy/app/pavlovia_ui/_base.py +1 -1
  228. psychopy/app/pavlovia_ui/functions.py +1 -1
  229. psychopy/app/pavlovia_ui/menu.py +1 -1
  230. psychopy/app/pavlovia_ui/project.py +1 -1
  231. psychopy/app/pavlovia_ui/search.py +1 -1
  232. psychopy/app/pavlovia_ui/sync.py +1 -1
  233. psychopy/app/pavlovia_ui/user.py +1 -1
  234. psychopy/app/plugin_manager/dialog.py +34 -96
  235. psychopy/app/plugin_manager/packages.py +10 -14
  236. psychopy/app/plugin_manager/plugins.py +64 -4
  237. psychopy/app/preferencesDlg.py +12 -37
  238. psychopy/app/psychopyApp.py +130 -44
  239. psychopy/app/ribbon.py +1 -0
  240. psychopy/app/runner/runner.py +19 -7
  241. psychopy/app/runner/scriptProcess.py +11 -6
  242. psychopy/app/stdout/stdOutRich.py +9 -2
  243. psychopy/app/themes/fonts.py +1 -1
  244. psychopy/app/themes/icons.py +2 -38
  245. psychopy/app/ui/__init__.py +1 -1
  246. psychopy/app/utils.py +3 -3
  247. psychopy/assets/default.mp3 +0 -0
  248. psychopy/assets/fonts/NotoSans-Bold.ttf +0 -0
  249. psychopy/assets/fonts/NotoSans-BoldItalic.ttf +0 -0
  250. psychopy/assets/fonts/NotoSans-Italic.ttf +0 -0
  251. psychopy/assets/fonts/NotoSans-Regular.ttf +0 -0
  252. psychopy/assets/voicekeyThresholdStim.wav +0 -0
  253. psychopy/clock.py +4 -1
  254. psychopy/colors.py +12 -5
  255. psychopy/core.py +1 -1
  256. psychopy/data/base.py +1 -1
  257. psychopy/data/experiment.py +151 -46
  258. psychopy/data/routine.py +27 -1
  259. psychopy/data/staircase.py +2 -1
  260. psychopy/data/trial.py +62 -14
  261. psychopy/data/utils.py +2 -2
  262. psychopy/demos/builder/Design Templates/branchedExperiment/branchedExperiment.psyexp +333 -218
  263. psychopy/demos/builder/Design Templates/psychophysicsStaircase/psychophysicsStaircase.psyexp +261 -239
  264. psychopy/demos/builder/Design Templates/psychophysicsStairsInterleaved/psychophysicsStaircaseInterleaved.psyexp +319 -180
  265. psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks.psyexp +204 -116
  266. psychopy/demos/builder/Experiments/BART/assets/background.jpg +0 -0
  267. psychopy/demos/builder/Experiments/BART/assets/blueBalloon.png +0 -0
  268. psychopy/demos/builder/Experiments/BART/assets/greenBalloon.png +0 -0
  269. psychopy/demos/builder/Experiments/BART/assets/redBalloon.png +0 -0
  270. psychopy/demos/builder/Experiments/BART/bart.psyexp +779 -866
  271. psychopy/demos/builder/Experiments/BigFiveInventory/BFI.psyexp +242 -180
  272. psychopy/demos/builder/Experiments/GoNoGo/gng.psyexp +419 -406
  273. psychopy/demos/builder/Experiments/dragAndDrop/README.md +2 -37
  274. psychopy/demos/builder/Experiments/dragAndDrop/drag_and_drop.psyexp +460 -1204
  275. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/blank_grid.png +0 -0
  276. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/make_shapes.psyexp +221 -0
  277. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/readme.md +4 -0
  278. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_1.png +0 -0
  279. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_10.png +0 -0
  280. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_2.png +0 -0
  281. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_3.png +0 -0
  282. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_4.png +0 -0
  283. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_5.png +0 -0
  284. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_6.png +0 -0
  285. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_7.png +0 -0
  286. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_8.png +0 -0
  287. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_9.png +0 -0
  288. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solutions.xlsx +0 -0
  289. psychopy/demos/builder/Experiments/mentalRotation/MentalRotation.psyexp +583 -542
  290. psychopy/demos/builder/Experiments/navon/NavonTask.psyexp +458 -427
  291. psychopy/demos/builder/Experiments/sternberg/sternberg.psyexp +588 -550
  292. psychopy/demos/builder/Experiments/stroop/stroop.psyexp +303 -207
  293. psychopy/demos/builder/Experiments/stroopExtended/stroop.psyexp +390 -215
  294. psychopy/demos/builder/Experiments/stroopExtended/stroopReverse.psyexp +390 -215
  295. psychopy/demos/builder/Experiments/stroopVoice/stroopVoice.psyexp +357 -331
  296. psychopy/demos/builder/Feature Demos/buttonBox/buttonBoxDemo.psyexp +3 -2
  297. psychopy/demos/builder/Feature Demos/counterbalance/counterbalance.psyexp +287 -277
  298. psychopy/demos/builder/Feature Demos/gratings/gratings.psyexp +370 -320
  299. psychopy/demos/builder/Feature Demos/noise/noise.psyexp +452 -399
  300. psychopy/demos/builder/Feature Demos/panorama/panorama.psyexp +168 -133
  301. psychopy/demos/builder/Feature Demos/pilotMode/pilotMode.psyexp +4 -3
  302. psychopy/demos/builder/Feature Demos/progress/progressBar.psyexp +420 -392
  303. psychopy/demos/builder/Feature Demos/sliders/sliders.psyexp +917 -871
  304. psychopy/demos/builder/Feature Demos/visualValidator/readme.md +7 -0
  305. psychopy/demos/builder/Feature Demos/visualValidator/visualValidator.psyexp +200 -0
  306. psychopy/demos/builder/Hardware/EEG_parallel_component/EEG_triggers_parallel_comp.psyexp +25 -9
  307. psychopy/demos/builder/Hardware/EEG_serial_code/EEG_triggers_serial_code.psyexp +372 -361
  308. psychopy/demos/builder/Hardware/EEG_serial_component/EEG_triggers_serial_comp.psyexp +25 -9
  309. psychopy/demos/builder/Hardware/EGI_netstation/stroop.psyexp +320 -235
  310. psychopy/demos/builder/Hardware/Eyetracking_visual_search/visualSearch.psyexp +790 -651
  311. psychopy/demos/builder/Hardware/camera/camera.psyexp +326 -246
  312. psychopy/demos/builder/Hardware/eyetracking/eyetracking.psyexp +432 -327
  313. psychopy/demos/builder/Hardware/eyetracking_custom_cal/eyetracking_custom_cal.psyexp +440 -321
  314. psychopy/demos/builder/Hardware/fMRI/fMRI_demo.psyexp +190 -181
  315. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo.psyexp +323 -312
  316. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo_legacy.psyexp +360 -0
  317. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo_legacy_legacy.psyexp +312 -0
  318. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy.psyexp +329 -273
  319. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy_legacy.psyexp +360 -0
  320. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy_legacy_legacy.psyexp +312 -0
  321. psychopy/demos/builder/Hardware/microphone/microphone.psyexp +450 -404
  322. psychopy/demos/builder/Hardware/pump/pump.psyexp +593 -329
  323. psychopy/demos/builder/Helper Tools/achorVSalignment/FlowCircular-Regular.ttf +0 -0
  324. psychopy/demos/builder/Helper Tools/achorVSalignment/anchorAlignment.psyexp +336 -274
  325. psychopy/demos/builder/Helper Tools/clockFace/clockFace.psyexp +200 -149
  326. psychopy/demos/builder/Helper Tools/colors/colors.psyexp +300 -279
  327. psychopy/demos/builder/Helper Tools/drawPolygon/drawPolygon.psyexp +677 -564
  328. psychopy/demos/builder/Helper Tools/keyNameFinder/keyNameFinder.psyexp +214 -158
  329. psychopy/demos/builder/Helper Tools/spatialUnits/unitDemo.psyexp +195 -146
  330. psychopy/demos/coder/experiment control/runtimeInfo.py +1 -1
  331. psychopy/devices/__init__.py +1 -1
  332. psychopy/event.py +1 -1
  333. psychopy/exceptions.py +1 -1
  334. psychopy/experiment/__init__.py +1 -1
  335. psychopy/experiment/_experiment.py +30 -9
  336. psychopy/experiment/components/__init__.py +1 -6
  337. psychopy/experiment/components/_base.py +44 -19
  338. psychopy/experiment/components/aperture/__init__.py +1 -1
  339. psychopy/experiment/components/brush/__init__.py +2 -2
  340. psychopy/experiment/components/button/__init__.py +24 -28
  341. psychopy/experiment/components/camera/__init__.py +38 -39
  342. psychopy/experiment/components/code/__init__.py +1 -1
  343. psychopy/experiment/components/dots/__init__.py +1 -1
  344. psychopy/experiment/components/eyetracker_record/__init__.py +7 -3
  345. psychopy/experiment/components/form/__init__.py +3 -3
  346. psychopy/experiment/components/grating/__init__.py +1 -1
  347. psychopy/experiment/components/image/__init__.py +1 -1
  348. psychopy/experiment/components/joyButtons/__init__.py +2 -2
  349. psychopy/experiment/components/joyButtons/virtualJoyButtons.py +1 -1
  350. psychopy/experiment/components/joystick/__init__.py +3 -3
  351. psychopy/experiment/components/joystick/virtualJoystick.py +1 -1
  352. psychopy/experiment/components/keyboard/__init__.py +98 -122
  353. psychopy/experiment/components/microphone/__init__.py +54 -98
  354. psychopy/experiment/components/mouse/__init__.py +92 -93
  355. psychopy/experiment/components/movie/__init__.py +28 -50
  356. psychopy/experiment/components/parallelOut/__init__.py +3 -3
  357. psychopy/experiment/components/polygon/__init__.py +2 -3
  358. psychopy/experiment/components/roi/__init__.py +2 -2
  359. psychopy/experiment/components/routineSettings/__init__.py +2 -0
  360. psychopy/experiment/components/serialOut/__init__.py +7 -7
  361. psychopy/experiment/components/settings/__init__.py +317 -313
  362. psychopy/experiment/components/settings/eyetracking.py +108 -0
  363. psychopy/experiment/components/slider/__init__.py +5 -5
  364. psychopy/experiment/components/sound/__init__.py +168 -78
  365. psychopy/experiment/components/soundsensor/__init__.py +361 -0
  366. psychopy/experiment/components/soundsensor/classic/soundsensor.png +0 -0
  367. psychopy/experiment/components/soundsensor/classic/soundsensor@2x.png +0 -0
  368. psychopy/experiment/components/soundsensor/dark/soundsensor.png +0 -0
  369. psychopy/experiment/components/soundsensor/dark/soundsensor@2x.png +0 -0
  370. psychopy/experiment/components/soundsensor/light/soundsensor.png +0 -0
  371. psychopy/experiment/components/soundsensor/light/soundsensor@2x.png +0 -0
  372. psychopy/experiment/components/static/__init__.py +59 -33
  373. psychopy/experiment/components/text/__init__.py +2 -6
  374. psychopy/experiment/components/textbox/__init__.py +3 -7
  375. psychopy/experiment/components/unknown/__init__.py +2 -0
  376. psychopy/experiment/components/unknownPlugin/__init__.py +2 -0
  377. psychopy/experiment/exports.py +1 -1
  378. psychopy/experiment/flow.py +2 -2
  379. psychopy/experiment/localization.py +1 -1
  380. psychopy/experiment/loops.py +43 -10
  381. psychopy/experiment/params.py +6 -4
  382. psychopy/experiment/plugins.py +8 -1
  383. psychopy/experiment/py2js.py +1 -1
  384. psychopy/experiment/py2js_transpiler.py +1 -1
  385. psychopy/experiment/routines/__init__.py +1 -1
  386. psychopy/experiment/routines/_base.py +23 -24
  387. psychopy/experiment/routines/audioValidator/__init__.py +343 -0
  388. psychopy/experiment/routines/audioValidator/classic/audio_validator.png +0 -0
  389. psychopy/experiment/routines/audioValidator/classic/audio_validator@2x.png +0 -0
  390. psychopy/experiment/routines/audioValidator/dark/audio_validator.png +0 -0
  391. psychopy/experiment/routines/audioValidator/dark/audio_validator@2x.png +0 -0
  392. psychopy/experiment/routines/audioValidator/light/audio_validator.png +0 -0
  393. psychopy/experiment/routines/audioValidator/light/audio_validator@2x.png +0 -0
  394. psychopy/experiment/routines/eyetracker_calibrate/__init__.py +76 -17
  395. psychopy/experiment/routines/eyetracker_validate/__init__.py +1 -1
  396. psychopy/experiment/routines/unknown/__init__.py +2 -0
  397. psychopy/experiment/routines/{photodiodeValidator → visualValidator}/__init__.py +89 -120
  398. psychopy/experiment/routines/visualValidator/classic/visual_validator.png +0 -0
  399. psychopy/experiment/routines/visualValidator/classic/visual_validator@2x.png +0 -0
  400. psychopy/experiment/routines/visualValidator/dark/visual_validator.png +0 -0
  401. psychopy/experiment/routines/visualValidator/dark/visual_validator@2x.png +0 -0
  402. psychopy/experiment/routines/visualValidator/light/visual_validator.png +0 -0
  403. psychopy/experiment/routines/visualValidator/light/visual_validator@2x.png +0 -0
  404. psychopy/experiment/utils.py +1 -1
  405. psychopy/gui/__init__.py +1 -1
  406. psychopy/gui/qtgui.py +15 -6
  407. psychopy/gui/wxgui.py +1 -1
  408. psychopy/hardware/__init__.py +0 -1
  409. psychopy/hardware/base.py +147 -16
  410. psychopy/hardware/bbtk/__init__.py +10 -16
  411. psychopy/hardware/brainproducts.py +7 -13
  412. psychopy/hardware/button.py +21 -2
  413. psychopy/hardware/buttonbox/__init__.py +1 -1
  414. psychopy/hardware/camera/__init__.py +18 -5
  415. psychopy/hardware/cedrus.py +5 -16
  416. psychopy/hardware/crs/__init__.py +1 -1
  417. psychopy/hardware/crs/bits.py +36 -33
  418. psychopy/hardware/crs/colorcal.py +8 -11
  419. psychopy/hardware/crs/optical.py +7 -10
  420. psychopy/hardware/crs/shaders.py +18 -5
  421. psychopy/hardware/emotiv.py +1 -1
  422. psychopy/hardware/emulator.py +11 -5
  423. psychopy/hardware/exceptions.py +86 -0
  424. psychopy/hardware/forp.py +18 -23
  425. psychopy/hardware/gammasci.py +8 -3
  426. psychopy/hardware/iolab.py +8 -19
  427. psychopy/hardware/joystick/__init__.py +865 -266
  428. psychopy/hardware/joystick/_base.py +251 -0
  429. psychopy/hardware/joystick/backend_glfw.py +306 -0
  430. psychopy/hardware/joystick/backend_pyglet.py +309 -0
  431. psychopy/hardware/joystick/mappings.py +287 -0
  432. psychopy/hardware/keyboard.py +4 -2
  433. psychopy/hardware/labhackers.py +1 -1
  434. psychopy/hardware/labjacks.py +9 -13
  435. psychopy/hardware/{photodiode.py → lightsensor.py} +146 -203
  436. psychopy/hardware/listener.py +9 -8
  437. psychopy/hardware/manager.py +24 -35
  438. psychopy/hardware/microphone.py +535 -155
  439. psychopy/hardware/minolta.py +14 -4
  440. psychopy/hardware/mouse/__init__.py +1 -1
  441. psychopy/hardware/photometer/__init__.py +2 -2
  442. psychopy/hardware/pr.py +14 -4
  443. psychopy/hardware/qmix.py +18 -27
  444. psychopy/hardware/serialdevice.py +43 -12
  445. psychopy/hardware/soundsensor.py +473 -0
  446. psychopy/hardware/spatial/__init__.py +231 -0
  447. psychopy/hardware/speaker.py +298 -36
  448. psychopy/hardware/triggerbox/__init__.py +1 -1
  449. psychopy/hardware/triggerbox/base.py +1 -1
  450. psychopy/hardware/triggerbox/parallel.py +1 -1
  451. psychopy/info.py +1 -1
  452. psychopy/iohub/devices/eyetracker/__init__.py +10 -18
  453. psychopy/iohub/devices/eyetracker/calibration/procedure.py +15 -33
  454. psychopy/iohub/devices/eyetracker/hw/gazepoint/__init__.py +2 -2
  455. psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/__init__.py +1 -0
  456. psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/eyetracker.py +10 -0
  457. psychopy/iohub/devices/eyetracker/hw/pupil_labs/neon/__init__.py +1 -0
  458. psychopy/iohub/devices/mouse/linux2.py +2 -1
  459. psychopy/layout.py +1 -1
  460. psychopy/liaison.py +91 -39
  461. psychopy/locale_setup.py +11 -1
  462. psychopy/localization/__init__.py +1 -1
  463. psychopy/localization/_localization.py +1 -1
  464. psychopy/localization/messages.pot +2 -2
  465. psychopy/logging.py +14 -12
  466. psychopy/microphone.py +4 -3
  467. psychopy/misc.py +1 -1
  468. psychopy/monitors/MonitorCenter.py +3 -3
  469. psychopy/monitors/__init__.py +1 -1
  470. psychopy/monitors/calibData.py +1 -1
  471. psychopy/monitors/calibTools.py +3 -2
  472. psychopy/platform_specific/__init__.py +1 -1
  473. psychopy/platform_specific/darwin.py +1 -1
  474. psychopy/platform_specific/linux.py +1 -1
  475. psychopy/platform_specific/win32.py +1 -1
  476. psychopy/plugins/__init__.py +26 -17
  477. psychopy/plugins/util.py +65 -0
  478. psychopy/preferences/Darwin.spec +11 -3
  479. psychopy/preferences/FreeBSD.spec +11 -3
  480. psychopy/preferences/Linux.spec +11 -3
  481. psychopy/preferences/Windows.spec +11 -3
  482. psychopy/preferences/__init__.py +1 -1
  483. psychopy/preferences/baseNoArch.spec +11 -3
  484. psychopy/preferences/hints.py +78 -61
  485. psychopy/preferences/preferences.py +82 -13
  486. psychopy/projects/__init__.py +1 -1
  487. psychopy/projects/pavlovia.py +29 -13
  488. psychopy/scripts/psyexpCompile.py +1 -1
  489. psychopy/session.py +81 -8
  490. psychopy/sound/__init__.py +25 -10
  491. psychopy/sound/_base.py +134 -34
  492. psychopy/sound/audioclip.py +38 -15
  493. psychopy/sound/audiodevice.py +1 -1
  494. psychopy/sound/backend_ptb.py +53 -321
  495. psychopy/sound/backend_pygame.py +7 -3
  496. psychopy/sound/backend_pyo.py +53 -22
  497. psychopy/sound/backend_pysound.py +10 -27
  498. psychopy/sound/backend_sounddevice.py +33 -21
  499. psychopy/sound/exceptions.py +1 -1
  500. psychopy/sound/microphone.py +83 -5
  501. psychopy/sound/transcribe.py +3 -3
  502. psychopy/tests/data/test_basic_run.py +1 -0
  503. psychopy/tests/data/test_sounds/default_16000.wav +0 -0
  504. psychopy/tests/data/test_sounds/default_192000.wav +0 -0
  505. psychopy/tests/data/test_sounds/default_22050.wav +0 -0
  506. psychopy/tests/data/test_sounds/default_32000.wav +0 -0
  507. psychopy/tests/data/test_sounds/default_44100.wav +0 -0
  508. psychopy/tests/data/test_sounds/default_48000.wav +0 -0
  509. psychopy/tests/data/test_sounds/default_8000.wav +0 -0
  510. psychopy/tests/data/test_sounds/default_96000.wav +0 -0
  511. psychopy/tests/test_alerts/test_alerttools.py +2 -1
  512. psychopy/tests/test_app/test_command_line.py +65 -0
  513. psychopy/tests/test_data/test_TrialHandler2.py +18 -7
  514. psychopy/tests/test_demos/test_builder_demos.py +1 -1
  515. psychopy/tests/test_experiment/needs_wx/componsTemplate.txt +5238 -4188
  516. psychopy/tests/test_experiment/needs_wx/test_components.py +1 -1
  517. psychopy/tests/test_experiment/test_components/test_RoutineSettingsComponent.py +16 -0
  518. psychopy/tests/test_experiment/test_components/test_all_components.py +1 -1
  519. psychopy/tests/test_experiment/test_components/test_base_components.py +26 -17
  520. psychopy/tests/test_experiment/test_loops.py +12 -4
  521. psychopy/tests/test_experiment/test_params.py +17 -4
  522. psychopy/tests/test_experiment/test_routines/test_PhotodiodeValidationRoutine.py +2 -2
  523. psychopy/tests/test_hardware/test_photodiode.py +66 -0
  524. psychopy/tests/test_liaison/test_Liaison.py +4 -4
  525. psychopy/tests/test_misc/test_clock.py +2 -0
  526. psychopy/tests/test_misc/test_color.py +2 -0
  527. psychopy/tests/test_misc/test_event.py +1 -0
  528. psychopy/tests/test_plugins/__init__.py +0 -0
  529. psychopy/tests/test_plugins/test_plugin_stubs.py +125 -0
  530. psychopy/tests/test_sound/test_sound.py +111 -40
  531. psychopy/tests/test_tools/test_colorspacetools.py +24 -23
  532. psychopy/tests/test_tools/test_mathtools.py +9 -9
  533. psychopy/tests/test_tools/test_viewtools.py +101 -0
  534. psychopy/tests/test_validators/__init__.py +0 -0
  535. psychopy/tests/test_validators/test_voicekeyValidator.py +95 -0
  536. psychopy/tests/test_visual/test_all_stimuli.py +2 -2
  537. psychopy/tests/test_visual/test_basevisual.py +37 -7
  538. psychopy/tests/test_visual/test_button.py +2 -2
  539. psychopy/tests/test_visual/test_circle.py +10 -2
  540. psychopy/tests/test_visual/test_dots.py +1 -1
  541. psychopy/tests/test_visual/test_form.py +13 -13
  542. psychopy/tests/test_visual/test_gamma.py +3 -3
  543. psychopy/tests/test_visual/test_image.py +2 -2
  544. psychopy/tests/test_visual/test_progress.py +2 -2
  545. psychopy/tests/test_visual/test_roi.py +8 -2
  546. psychopy/tests/test_visual/test_shape.py +2 -2
  547. psychopy/tests/test_visual/test_slider.py +2 -2
  548. psychopy/tests/test_visual/test_target.py +2 -2
  549. psychopy/tests/test_visual/test_textbox.py +6 -8
  550. psychopy/tests/test_visual/test_winScalePos.py +6 -5
  551. psychopy/tests/test_visual/test_window.py +17 -0
  552. psychopy/tests/utils.py +51 -1
  553. psychopy/tools/__init__.py +1 -1
  554. psychopy/tools/arraytools.py +2 -2
  555. psychopy/tools/attributetools.py +52 -1
  556. psychopy/tools/audiotools.py +4 -1
  557. psychopy/tools/colorspacetools.py +6 -4
  558. psychopy/tools/coordinatetools.py +1 -1
  559. psychopy/tools/fileerrortools.py +21 -9
  560. psychopy/tools/filetools.py +2 -2
  561. psychopy/tools/fontmanager.py +47 -28
  562. psychopy/tools/gltools.py +2967 -559
  563. psychopy/tools/imagetools.py +1 -1
  564. psychopy/tools/mathtools.py +997 -127
  565. psychopy/tools/monitorunittools.py +7 -1
  566. psychopy/tools/movietools.py +1 -2
  567. psychopy/tools/pkgtools.py +157 -127
  568. psychopy/tools/plottools.py +1 -1
  569. psychopy/tools/rifttools.py +1 -1
  570. psychopy/tools/stereotools.py +1 -1
  571. psychopy/tools/stimulustools.py +172 -2
  572. psychopy/tools/stringtools.py +22 -2
  573. psychopy/tools/systemtools.py +1 -1
  574. psychopy/tools/typetools.py +1 -1
  575. psychopy/tools/unittools.py +1 -1
  576. psychopy/tools/versionchooser.py +3 -1
  577. psychopy/tools/viewtools.py +54 -70
  578. psychopy/tools/wizard.py +2 -2
  579. psychopy/validation/__init__.py +6 -0
  580. psychopy/validation/audio.py +74 -0
  581. psychopy/validation/visual.py +115 -0
  582. psychopy/visual/__init__.py +1 -4
  583. psychopy/visual/aperture.py +9 -6
  584. psychopy/visual/backends/__init__.py +1 -1
  585. psychopy/visual/backends/_base.py +1 -1
  586. psychopy/visual/backends/gamma.py +1 -1
  587. psychopy/visual/backends/glfwbackend.py +8 -12
  588. psychopy/visual/backends/pygamebackend.py +1 -1
  589. psychopy/visual/backends/pygletbackend.py +32 -11
  590. psychopy/visual/basevisual.py +93 -13
  591. psychopy/visual/brush.py +1 -1
  592. psychopy/visual/bufferimage.py +90 -10
  593. psychopy/visual/button.py +1 -1
  594. psychopy/visual/circle.py +12 -20
  595. psychopy/visual/custommouse.py +1 -1
  596. psychopy/visual/dot.py +80 -14
  597. psychopy/visual/elementarray.py +84 -10
  598. psychopy/visual/filters.py +1 -1
  599. psychopy/visual/form.py +43 -28
  600. psychopy/visual/grating.py +105 -25
  601. psychopy/visual/helpers.py +4 -2
  602. psychopy/visual/image.py +98 -20
  603. psychopy/visual/line.py +15 -25
  604. psychopy/visual/movie.py +1 -1
  605. psychopy/visual/movie2.py +4 -3
  606. psychopy/visual/movie3.py +4 -3
  607. psychopy/visual/movies/__init__.py +1 -1
  608. psychopy/visual/movies/frame.py +1 -1
  609. psychopy/visual/movies/metadata.py +1 -1
  610. psychopy/visual/movies/players/__init__.py +1 -1
  611. psychopy/visual/movies/players/_base.py +1 -1
  612. psychopy/visual/movies/players/ffpyplayer_player.py +2 -3
  613. psychopy/visual/nnlvs.py +9 -6
  614. psychopy/visual/noise.py +4 -16
  615. psychopy/visual/patch.py +4 -3
  616. psychopy/visual/pie.py +3 -14
  617. psychopy/visual/polygon.py +21 -28
  618. psychopy/visual/radial.py +4 -18
  619. psychopy/visual/ratingscale.py +4 -3
  620. psychopy/visual/rect.py +16 -25
  621. psychopy/visual/rift.py +8 -2
  622. psychopy/visual/secondorder.py +4 -16
  623. psychopy/visual/shaders.py +620 -286
  624. psychopy/visual/shape.py +281 -90
  625. psychopy/visual/simpleimage.py +1 -1
  626. psychopy/visual/slider.py +78 -25
  627. psychopy/visual/stim3d.py +5 -608
  628. psychopy/visual/text.py +13 -3
  629. psychopy/visual/textbox2/textbox2.py +188 -56
  630. psychopy/visual/vlcmoviestim.py +1 -1
  631. psychopy/visual/window.py +374 -201
  632. psychopy/web.py +1 -1
  633. {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/METADATA +13 -12
  634. {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/RECORD +647 -624
  635. {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/WHEEL +1 -1
  636. psychopy/.DS_Store +0 -0
  637. psychopy/__init__.py.orig +0 -65
  638. psychopy/app/.DS_Store +0 -0
  639. psychopy/app/Resources/.DS_Store +0 -0
  640. psychopy/app/Resources/classic/filecsv16.png +0 -0
  641. psychopy/app/Resources/classic/fileimage16.png +0 -0
  642. psychopy/app/Resources/classic/fileunknown16.png +0 -0
  643. psychopy/app/Resources/dark/filecsv16.png +0 -0
  644. psychopy/app/Resources/dark/filecsv16@2x.png +0 -0
  645. psychopy/app/Resources/dark/fileimage16.png +0 -0
  646. psychopy/app/Resources/dark/fileimage16@2x.png +0 -0
  647. psychopy/app/Resources/dark/fileunknown16.png +0 -0
  648. psychopy/app/Resources/dark/fileunknown16@2x.png +0 -0
  649. psychopy/app/Resources/fonts/OpenSans-Bold.ttf +0 -0
  650. psychopy/app/Resources/fonts/OpenSans-BoldItalic.ttf +0 -0
  651. psychopy/app/Resources/fonts/OpenSans-ExtraBold.ttf +0 -0
  652. psychopy/app/Resources/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  653. psychopy/app/Resources/fonts/OpenSans-Italic.ttf +0 -0
  654. psychopy/app/Resources/fonts/OpenSans-Light.ttf +0 -0
  655. psychopy/app/Resources/fonts/OpenSans-LightItalic.ttf +0 -0
  656. psychopy/app/Resources/fonts/OpenSans-Regular.ttf +0 -0
  657. psychopy/app/Resources/fonts/OpenSans-SemiBold.ttf +0 -0
  658. psychopy/app/Resources/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  659. psychopy/app/Resources/light/filecsv16.png +0 -0
  660. psychopy/app/Resources/light/filecsv16@2x.png +0 -0
  661. psychopy/app/Resources/light/fileimage16.png +0 -0
  662. psychopy/app/Resources/light/fileimage16@2x.png +0 -0
  663. psychopy/app/Resources/light/fileunknown16.png +0 -0
  664. psychopy/app/Resources/light/fileunknown16@2x.png +0 -0
  665. psychopy/app/Resources/psychopySplash.png +0 -0
  666. psychopy/app/Resources/psychopySplash@2x.png +0 -0
  667. psychopy/app/builder/builder.py.orig +0 -3932
  668. psychopy/app/builder/dialogs/__init__.py.orig +0 -1679
  669. psychopy/app/builder/dialogs/paramCtrls.py.orig +0 -713
  670. psychopy/app/colorpicker/__init__.py.orig +0 -411
  671. psychopy/app/locale/ar_001/.DS_Store +0 -0
  672. psychopy/app/locale/ar_001/LC_MESSAGE/.DS_Store +0 -0
  673. psychopy/core.py.orig +0 -169
  674. psychopy/demos/builder/.DS_Store +0 -0
  675. psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks_lastrun.py +0 -330
  676. psychopy/demos/builder/Experiments/.DS_Store +0 -0
  677. psychopy/demos/builder/Experiments/dragAndDrop/archived_conditions.xlsx +0 -0
  678. psychopy/demos/builder/Experiments/dragAndDrop/draw grid stim.py +0 -61
  679. psychopy/demos/builder/Experiments/dragAndDrop/shapeMaker.psyexp +0 -91
  680. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_1.png +0 -0
  681. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_10.png +0 -0
  682. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_2.png +0 -0
  683. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_3.png +0 -0
  684. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_4.png +0 -0
  685. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_5.png +0 -0
  686. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_6.png +0 -0
  687. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_7.png +0 -0
  688. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_8.png +0 -0
  689. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_9.png +0 -0
  690. psychopy/demos/builder/Experiments/dragAndDrop/updated_conditions.xlsx +0 -0
  691. psychopy/demos/builder/Tools/.DS_Store +0 -0
  692. psychopy/demos/builder/Tools/gammaCalibration/.DS_Store +0 -0
  693. psychopy/demos/builder/Tools/gammaCalibration/data/.DS_Store +0 -0
  694. psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.csv +0 -38
  695. psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.log +0 -3418
  696. psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.psydat +0 -0
  697. psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.csv +0 -2
  698. psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.log +0 -15
  699. psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.psydat +0 -0
  700. psychopy/demos/builder/Tools/gammaCalibration/gamma_correction_visual_lastrun.py +0 -562
  701. psychopy/demos/coder/.DS_Store +0 -0
  702. psychopy/demos/coder/experiment control/info_gamma.pickle +0 -0
  703. psychopy/demos/coder/iohub/.iohpid +0 -1
  704. psychopy/demos/coder/iohub/eyetracking/.iohpid +0 -1
  705. psychopy/demos/coder/iohub/wintab/.DS_Store +0 -0
  706. psychopy/demos/coder/stimuli/.DS_Store +0 -0
  707. psychopy/experiment/_experiment.py.orig +0 -1032
  708. psychopy/experiment/components/.DS_Store +0 -0
  709. psychopy/experiment/components/_base.py.orig +0 -823
  710. psychopy/experiment/components/form/.DS_Store +0 -0
  711. psychopy/experiment/components/microphone/__init__.py.orig +0 -490
  712. psychopy/experiment/components/settings/__init__.py.orig +0 -1337
  713. psychopy/experiment/components/textbox/__init__.py.orig +0 -310
  714. psychopy/experiment/components/webcam/.DS_Store +0 -0
  715. psychopy/experiment/components/webcam/light/.DS_Store +0 -0
  716. psychopy/experiment/loops.py.orig +0 -829
  717. psychopy/experiment/params.py.orig +0 -408
  718. psychopy/experiment/routine.py.orig +0 -503
  719. psychopy/experiment/routines/photodiodeValidator/classic/photodiode_validator.png +0 -0
  720. psychopy/experiment/routines/photodiodeValidator/classic/photodiode_validator@2x.png +0 -0
  721. psychopy/experiment/routines/photodiodeValidator/dark/photodiode_validator.png +0 -0
  722. psychopy/experiment/routines/photodiodeValidator/dark/photodiode_validator@2x.png +0 -0
  723. psychopy/experiment/routines/photodiodeValidator/light/photodiode_validator.png +0 -0
  724. psychopy/experiment/routines/photodiodeValidator/light/photodiode_validator@2x.png +0 -0
  725. psychopy/hardware/.DS_Store +0 -0
  726. psychopy/hardware/brainproducts.py.orig +0 -680
  727. psychopy/hardware/iolab.py.orig +0 -238
  728. psychopy/iohub/datastore/__init__.py.orig +0 -443
  729. psychopy/iohub/datastore/util.py.orig +0 -692
  730. psychopy/iohub/devices/mouse/darwin.py.orig +0 -427
  731. psychopy/iohub/devices/mouse/linux2.py.orig +0 -198
  732. psychopy/preferences/.DS_Store +0 -0
  733. psychopy/projects/pavlovia.py.orig +0 -1295
  734. psychopy/tests/.DS_Store +0 -0
  735. psychopy/tests/data/.DS_Store +0 -0
  736. psychopy/tests/data/TestCircle_fill_local.png +0 -0
  737. psychopy/tests/data/aperture1_normHexbackground_local.png +0 -0
  738. psychopy/tests/data/aperture1_norm_local.png +0 -0
  739. psychopy/tests/data/aperture2_normHexbackground_local.png +0 -0
  740. psychopy/tests/data/beatandrcos_height_local.png +0 -0
  741. psychopy/tests/data/beatandrcos_normAddBlend_local.png +0 -0
  742. psychopy/tests/data/beatandrcos_normHexbackground_local.png +0 -0
  743. psychopy/tests/data/beatandrcos_norm_local.png +0 -0
  744. psychopy/tests/data/beatandrcos_stencil_local.png +0 -0
  745. psychopy/tests/data/blend_add_height_local.png +0 -0
  746. psychopy/tests/data/blend_add_normAddBlend_local.png +0 -0
  747. psychopy/tests/data/blend_add_normHexbackground_local.png +0 -0
  748. psychopy/tests/data/blend_add_normNoShade_local.png +0 -0
  749. psychopy/tests/data/blend_add_norm_local.png +0 -0
  750. psychopy/tests/data/blend_add_stencil_local.png +0 -0
  751. psychopy/tests/data/bufferimg_gabor_height_local.png +0 -0
  752. psychopy/tests/data/bufferimg_gabor_normAddBlend_local.png +0 -0
  753. psychopy/tests/data/bufferimg_gabor_normHexbackground_local.png +0 -0
  754. psychopy/tests/data/bufferimg_gabor_normNoShade_local.png +0 -0
  755. psychopy/tests/data/bufferimg_gabor_norm_local.png +0 -0
  756. psychopy/tests/data/bufferimg_gabor_stencil_local.png +0 -0
  757. psychopy/tests/data/circleHex_height_local.png +0 -0
  758. psychopy/tests/data/circleHex_normAddBlend_local.png +0 -0
  759. psychopy/tests/data/circleHex_normHexbackground_local.png +0 -0
  760. psychopy/tests/data/circleHex_normNoShade_local.png +0 -0
  761. psychopy/tests/data/circleHex_norm_local.png +0 -0
  762. psychopy/tests/data/circleHex_stencil_local.png +0 -0
  763. psychopy/tests/data/color_comparison_local.png +0 -0
  764. psychopy/tests/data/correctScript/.DS_Store +0 -0
  765. psychopy/tests/data/dots_height_local.png +0 -0
  766. psychopy/tests/data/dots_normAddBlend_local.png +0 -0
  767. psychopy/tests/data/dots_normHexbackground_local.png +0 -0
  768. psychopy/tests/data/dots_normNoShade_local.png +0 -0
  769. psychopy/tests/data/dots_norm_local.png +0 -0
  770. psychopy/tests/data/dots_stencil_local.png +0 -0
  771. psychopy/tests/data/elarray1_height_local.png +0 -0
  772. psychopy/tests/data/elarray1_normAddBlend_local.png +0 -0
  773. psychopy/tests/data/elarray1_normHexbackground_local.png +0 -0
  774. psychopy/tests/data/elarray1_norm_local.png +0 -0
  775. psychopy/tests/data/elarray1_stencil_local.png +0 -0
  776. psychopy/tests/data/envelopeandrcos_height_local.png +0 -0
  777. psychopy/tests/data/envelopeandrcos_normAddBlend_local.png +0 -0
  778. psychopy/tests/data/envelopeandrcos_normHexbackground_local.png +0 -0
  779. psychopy/tests/data/envelopeandrcos_norm_local.png +0 -0
  780. psychopy/tests/data/envelopeandrcos_stencil_local.png +0 -0
  781. psychopy/tests/data/envelopepowerandrcos_height_local.png +0 -0
  782. psychopy/tests/data/envelopepowerandrcos_normAddBlend_local.png +0 -0
  783. psychopy/tests/data/envelopepowerandrcos_normHexbackground_local.png +0 -0
  784. psychopy/tests/data/envelopepowerandrcos_norm_local.png +0 -0
  785. psychopy/tests/data/envelopepowerandrcos_stencil_local.png +0 -0
  786. psychopy/tests/data/gabor1_height_local.png +0 -0
  787. psychopy/tests/data/gabor1_normAddBlend_local.png +0 -0
  788. psychopy/tests/data/gabor1_normHexbackground_local.png +0 -0
  789. psychopy/tests/data/gabor1_normNoShade_local.png +0 -0
  790. psychopy/tests/data/gabor1_norm_local.png +0 -0
  791. psychopy/tests/data/gabor1_stencil_local.png +0 -0
  792. psychopy/tests/data/greyscale_normHexbackground_local.png +0 -0
  793. psychopy/tests/data/imageAndGauss_height_local.png +0 -0
  794. psychopy/tests/data/imageAndGauss_normAddBlend_local.png +0 -0
  795. psychopy/tests/data/imageAndGauss_normHexbackground_local.png +0 -0
  796. psychopy/tests/data/imageAndGauss_normNoShade_local.png +0 -0
  797. psychopy/tests/data/imageAndGauss_norm_local.png +0 -0
  798. psychopy/tests/data/imageAndGauss_stencil_local.png +0 -0
  799. psychopy/tests/data/movFrame1_stencil_local.png +0 -0
  800. psychopy/tests/data/noiseAndRcos_height_local.png +0 -0
  801. psychopy/tests/data/noiseAndRcos_normAddBlend_local.png +0 -0
  802. psychopy/tests/data/noiseAndRcos_normHexbackground_local.png +0 -0
  803. psychopy/tests/data/noiseAndRcos_normNoShade_local.png +0 -0
  804. psychopy/tests/data/noiseAndRcos_norm_local.png +0 -0
  805. psychopy/tests/data/noiseAndRcos_stencil_local.png +0 -0
  806. psychopy/tests/data/noiseFiltersAndRcos_height_local.png +0 -0
  807. psychopy/tests/data/noiseFiltersAndRcos_normAddBlend_local.png +0 -0
  808. psychopy/tests/data/noiseFiltersAndRcos_normHexbackground_local.png +0 -0
  809. psychopy/tests/data/noiseFiltersAndRcos_normNoShade_local.png +0 -0
  810. psychopy/tests/data/noiseFiltersAndRcos_norm_local.png +0 -0
  811. psychopy/tests/data/noiseFiltersAndRcos_stencil_local.png +0 -0
  812. psychopy/tests/data/numpyImage_height_local.png +0 -0
  813. psychopy/tests/data/numpyImage_normAddBlend_local.png +0 -0
  814. psychopy/tests/data/numpyImage_normHexbackground_local.png +0 -0
  815. psychopy/tests/data/numpyImage_normNoShade_local.png +0 -0
  816. psychopy/tests/data/numpyImage_norm_local.png +0 -0
  817. psychopy/tests/data/numpyImage_stencil_local.png +0 -0
  818. psychopy/tests/data/shape2_1_normAddBlend_local.png +0 -0
  819. psychopy/tests/data/shape2_1_normHexbackground_local.png +0 -0
  820. psychopy/tests/data/shape2_1_normNoShade_local.png +0 -0
  821. psychopy/tests/data/shape2_1_norm_local.png +0 -0
  822. psychopy/tests/data/shape2_1_stencil_local.png +0 -0
  823. psychopy/tests/data/text1_height_local.png +0 -0
  824. psychopy/tests/data/text1_normAddBlend_local.png +0 -0
  825. psychopy/tests/data/text1_normHexbackground_local.png +0 -0
  826. psychopy/tests/data/text1_norm_local.png +0 -0
  827. psychopy/tests/data/text1_stencil_local.png +0 -0
  828. psychopy/tests/data/wedge1_height_local.png +0 -0
  829. psychopy/tests/data/wedge1_normAddBlend_local.png +0 -0
  830. psychopy/tests/data/wedge1_normHexbackground_local.png +0 -0
  831. psychopy/tests/data/wedge1_normNoShade_local.png +0 -0
  832. psychopy/tests/data/wedge1_norm_local.png +0 -0
  833. psychopy/tests/data/wedge1_stencil_local.png +0 -0
  834. psychopy/tests/test_app/.DS_Store +0 -0
  835. psychopy/tests/test_app/test_builder/.DS_Store +0 -0
  836. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.log +0 -177
  837. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.psydat +0 -0
  838. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.xlsx +0 -0
  839. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.log +0 -168
  840. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.psydat +0 -0
  841. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.xlsx +0 -0
  842. psychopy/tests/test_data/.DS_Store +0 -0
  843. psychopy/tests/test_hardware/test_CRS_BitsSharp.py +0 -67
  844. psychopy/tests/test_hardware/test_CRS_BitsSharp.py.orig +0 -68
  845. psychopy/tests/test_hardware/test_CRS_bitsShaders.py +0 -110
  846. psychopy/tests/test_visual/test_image.py.orig +0 -219
  847. psychopy/visual/basevisual.py.orig +0 -1723
  848. psychopy/visual/form.py.orig +0 -1181
  849. psychopy/visual/text.py.orig +0 -752
  850. psychopy/visual/textbox2/textbox2.py.orig +0 -1315
  851. psychopy/visual/windowwarp.py.orig +0 -463
  852. /psychopy/{app/cortex.log → alerts/alertsCatalogue/3600.yaml} +0 -0
  853. /psychopy/{app/Resources → assets}/fonts/Arvo-Bold.ttf +0 -0
  854. /psychopy/{app/Resources → assets}/fonts/Arvo-BoldItalic.ttf +0 -0
  855. /psychopy/{app/Resources → assets}/fonts/Arvo-Italic.ttf +0 -0
  856. /psychopy/{app/Resources → assets}/fonts/Arvo-Regular.ttf +0 -0
  857. /psychopy/{app/Resources → assets}/fonts/DejaVuSerif.ttf +0 -0
  858. /psychopy/{app/Resources → assets}/fonts/IndieFlower-Regular.ttf +0 -0
  859. /psychopy/{app/Resources → assets}/fonts/JetBrainsMono-Italic-VariableFont_wght.ttf +0 -0
  860. /psychopy/{app/Resources → assets}/fonts/JetBrainsMono-VariableFont_wght.ttf +0 -0
  861. /psychopy/demos/builder/Experiments/{GoNoGo → goNoGo}/readme.md +0 -0
  862. {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/entry_points.txt +0 -0
  863. {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,157 +1,206 @@
1
- <PsychoPy2experiment encoding="utf-8" version="2021.2.0">
1
+ <?xml version="1.0" ?>
2
+ <PsychoPy2experiment encoding="utf-8" version="2025.1.0">
2
3
  <Settings>
3
- <Param val="use prefs" valType="str" updates="None" name="Audio latency priority" />
4
- <Param val="use prefs" valType="str" updates="None" name="Audio lib" />
5
- <Param val="" valType="str" updates="None" name="Completed URL" />
6
- <Param val="auto" valType="str" updates="None" name="Data file delimiter" />
7
- <Param val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code" updates="None" name="Data filename" />
8
- <Param val="True" valType="bool" updates="None" name="Enable Escape" />
9
- <Param val="{'participant': '', 'session': '001'}" valType="code" updates="None" name="Experiment info" />
10
- <Param val="True" valType="bool" updates="None" name="Force stereo" />
11
- <Param val="False" valType="bool" updates="None" name="Full-screen window" />
12
- <Param val="" valType="str" updates="None" name="HTML path" />
13
- <Param val="" valType="str" updates="None" name="Incomplete URL" />
14
- <Param val="testMonitor" valType="str" updates="None" name="Monitor" />
15
- <Param val="[]" valType="fileList" updates="None" name="Resources" />
16
- <Param val="False" valType="bool" updates="None" name="Save csv file" />
17
- <Param val="False" valType="bool" updates="None" name="Save excel file" />
18
- <Param val="False" valType="bool" updates="None" name="Save hdf5 file" />
19
- <Param val="True" valType="bool" updates="None" name="Save log file" />
20
- <Param val="True" valType="bool" updates="None" name="Save psydat file" />
21
- <Param val="True" valType="bool" updates="None" name="Save wide csv file" />
22
- <Param val="1" valType="num" updates="None" name="Screen" />
23
- <Param val="False" valType="bool" updates="None" name="Show info dlg" />
24
- <Param val="False" valType="bool" updates="None" name="Show mouse" />
25
- <Param val="height" valType="str" updates="None" name="Units" />
26
- <Param val="" valType="str" updates="None" name="Use version" />
27
- <Param val="[1080, 720]" valType="code" updates="None" name="Window size (pixels)" />
28
- <Param val="avg" valType="str" updates="None" name="blendMode" />
29
- <Param val="$[0,0,0]" valType="str" updates="None" name="color" />
30
- <Param val="rgb" valType="str" updates="None" name="colorSpace" />
31
- <Param val="100.1.1.1" valType="str" updates="None" name="elAddress" />
32
- <Param val="FILTER_LEVEL_2" valType="str" updates="None" name="elDataFiltering" />
33
- <Param val="FILTER_LEVEL_OFF" valType="str" updates="None" name="elLiveFiltering" />
34
- <Param val="EYELINK 1000 DESKTOP" valType="str" updates="None" name="elModel" />
35
- <Param val="ELLIPSE_FIT" valType="str" updates="None" name="elPupilAlgorithm" />
36
- <Param val="PUPIL_AREA" valType="str" updates="None" name="elPupilMeasure" />
37
- <Param val="1000" valType="num" updates="None" name="elSampleRate" />
38
- <Param val="False" valType="bool" updates="None" name="elSimMode" />
39
- <Param val="RIGHT_EYE" valType="str" updates="None" name="elTrackEyes" />
40
- <Param val="PUPIL_CR_TRACKING" valType="str" updates="None" name="elTrackingMode" />
41
- <Param val="unitDemo2" valType="str" updates="None" name="expName" />
42
- <Param val="on Sync" valType="str" updates="None" name="exportHTML" />
43
- <Param val="None" valType="str" updates="None" name="eyetracker" />
44
- <Param val="127.0.0.1" valType="str" updates="None" name="gpAddress" />
45
- <Param val="4242" valType="num" updates="None" name="gpPort" />
46
- <Param val="debug" valType="code" updates="None" name="logging level" />
47
- <Param val="MIDDLE_BUTTON" valType="list" updates="None" name="mgBlink" />
48
- <Param val="CONTINUOUS" valType="str" updates="None" name="mgMove" />
49
- <Param val="0.5" valType="num" updates="None" name="mgSaccade" />
50
- <Param val="" valType="str" updates="None" name="tbLicenseFile" />
51
- <Param val="" valType="str" updates="None" name="tbModel" />
52
- <Param val="60" valType="num" updates="None" name="tbSampleRate" />
53
- <Param val="" valType="str" updates="None" name="tbSerialNo" />
54
- <Param val="0" valType="code" updates="constant" name="runMode" /></Settings>
4
+ <Param val="use prefs" valType="str" updates="None" name="Audio latency priority"/>
5
+ <Param val="use prefs" valType="str" updates="None" name="Audio lib"/>
6
+ <Param val="" valType="str" updates="None" name="Completed URL"/>
7
+ <Param val="auto" valType="str" updates="None" name="Data file delimiter"/>
8
+ <Param val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code" updates="None" name="Data filename"/>
9
+ <Param val="True" valType="bool" updates="None" name="Enable Escape"/>
10
+ <Param val="Thank you for your patience." valType="str" updates="None" name="End Message"/>
11
+ <Param val="{'participant': '', 'session': '001'}" valType="code" updates="None" name="Experiment info"/>
12
+ <Param val="True" valType="bool" updates="None" name="Force stereo"/>
13
+ <Param val="False" valType="bool" updates="None" name="Full-screen window"/>
14
+ <Param val="" valType="str" updates="None" name="HTML path"/>
15
+ <Param val="" valType="str" updates="None" name="Incomplete URL"/>
16
+ <Param val="testMonitor" valType="str" updates="None" name="Monitor"/>
17
+ <Param val="[]" valType="fileList" updates="None" name="Resources"/>
18
+ <Param val="False" valType="bool" updates="None" name="Save csv file"/>
19
+ <Param val="False" valType="bool" updates="None" name="Save excel file"/>
20
+ <Param val="False" valType="bool" updates="None" name="Save hdf5 file"/>
21
+ <Param val="True" valType="bool" updates="None" name="Save log file"/>
22
+ <Param val="True" valType="bool" updates="None" name="Save psydat file"/>
23
+ <Param val="True" valType="bool" updates="None" name="Save wide csv file"/>
24
+ <Param val="1" valType="num" updates="None" name="Screen"/>
25
+ <Param val="False" valType="bool" updates="None" name="Show info dlg"/>
26
+ <Param val="False" valType="bool" updates="None" name="Show mouse"/>
27
+ <Param val="height" valType="str" updates="None" name="Units"/>
28
+ <Param val="" valType="str" updates="None" name="Use version"/>
29
+ <Param val="[1080, 720]" valType="code" updates="None" name="Window size (pixels)"/>
30
+ <Param val="none" valType="str" updates="None" name="backgroundFit"/>
31
+ <Param val="" valType="str" updates="None" name="backgroundImg"/>
32
+ <Param val="avg" valType="str" updates="None" name="blendMode"/>
33
+ <Param val="float" valType="str" updates="None" name="clockFormat"/>
34
+ <Param val="{'thisRow.t': 'priority.CRITICAL', 'expName': 'priority.LOW'}" valType="dict" updates="None" name="colPriority"/>
35
+ <Param val="$[0,0,0]" valType="str" updates="None" name="color"/>
36
+ <Param val="rgb" valType="str" updates="None" name="colorSpace"/>
37
+ <Param val="warning" valType="code" updates="None" name="consoleLoggingLevel"/>
38
+ <Param val="default" valType="str" updates="None" name="ecSampleRate"/>
39
+ <Param val="100.1.1.1" valType="str" updates="None" name="elAddress"/>
40
+ <Param val="FILTER_LEVEL_2" valType="str" updates="None" name="elDataFiltering"/>
41
+ <Param val="FILTER_LEVEL_OFF" valType="str" updates="None" name="elLiveFiltering"/>
42
+ <Param val="EYELINK 1000 DESKTOP" valType="str" updates="None" name="elModel"/>
43
+ <Param val="ELLIPSE_FIT" valType="str" updates="None" name="elPupilAlgorithm"/>
44
+ <Param val="PUPIL_AREA" valType="str" updates="None" name="elPupilMeasure"/>
45
+ <Param val="1000" valType="num" updates="None" name="elSampleRate"/>
46
+ <Param val="False" valType="bool" updates="None" name="elSimMode"/>
47
+ <Param val="RIGHT_EYE" valType="str" updates="None" name="elTrackEyes"/>
48
+ <Param val="PUPIL_CR_TRACKING" valType="str" updates="None" name="elTrackingMode"/>
49
+ <Param val="unitDemo2" valType="str" updates="None" name="expName"/>
50
+ <Param val="" valType="str" updates="None" name="expVersion"/>
51
+ <Param val="on Sync" valType="str" updates="None" name="exportHTML"/>
52
+ <Param val="None" valType="str" updates="None" name="eyetracker"/>
53
+ <Param val="" valType="code" updates="None" name="frameRate"/>
54
+ <Param val="Attempting to measure frame rate of screen, please wait..." valType="str" updates="None" name="frameRateMsg"/>
55
+ <Param val="127.0.0.1" valType="str" updates="None" name="gpAddress"/>
56
+ <Param val="4242" valType="num" updates="None" name="gpPort"/>
57
+ <Param val="PsychToolbox" valType="str" updates="None" name="keyboardBackend"/>
58
+ <Param val="debug" valType="code" updates="None" name="logging level"/>
59
+ <Param val="True" valType="bool" updates="None" name="measureFrameRate"/>
60
+ <Param val="MIDDLE_BUTTON" valType="list" updates="None" name="mgBlink"/>
61
+ <Param val="CONTINUOUS" valType="str" updates="None" name="mgMove"/>
62
+ <Param val="0.5" valType="num" updates="None" name="mgSaccade"/>
63
+ <Param val="neon.local" valType="str" updates="None" name="plCompanionAddress"/>
64
+ <Param val="8080" valType="num" updates="None" name="plCompanionPort"/>
65
+ <Param val="0.6" valType="num" updates="None" name="plConfidenceThreshold"/>
66
+ <Param val="" valType="str" updates="None" name="plPupilCaptureRecordingLocation"/>
67
+ <Param val="127.0.0.1" valType="str" updates="None" name="plPupilRemoteAddress"/>
68
+ <Param val="50020" valType="num" updates="None" name="plPupilRemotePort"/>
69
+ <Param val="1000" valType="num" updates="None" name="plPupilRemoteTimeoutMs"/>
70
+ <Param val="False" valType="bool" updates="None" name="plPupillometryOnly"/>
71
+ <Param val="psychopy_iohub_surface" valType="str" updates="None" name="plSurfaceName"/>
72
+ <Param val="0" valType="code" updates="constant" name="runMode"/>
73
+ <Param val="False" valType="bool" updates="None" name="rush"/>
74
+ <Param val="time" valType="str" updates="None" name="sortColumns"/>
75
+ <Param val="" valType="str" updates="None" name="tbLicenseFile"/>
76
+ <Param val="" valType="str" updates="None" name="tbModel"/>
77
+ <Param val="60" valType="num" updates="None" name="tbSampleRate"/>
78
+ <Param val="" valType="str" updates="None" name="tbSerialNo"/>
79
+ <Param val="pyglet" valType="str" updates="None" name="winBackend"/>
80
+ </Settings>
55
81
  <Routines>
56
82
  <Routine name="rectMover">
57
- <CodeComponent name="code">
58
- <Param val="" valType="extendedCode" updates="constant" name="Before Experiment" />
59
- <Param val="" valType="extendedCode" updates="constant" name="Before JS Experiment" />
60
- <Param val="mags = {&amp;#10; 'height': 0.1,&amp;#10; 'norm': 0.1,&amp;#10; 'pix': 100,&amp;#10; 'cm': 1,&amp;#10; 'deg': pi/10,&amp;#10;}&amp;#10;unitCodes = {&amp;#10; 'h': 'height',&amp;#10; 'n': 'norm',&amp;#10; 'p': 'pix',&amp;#10; 'c': 'cm',&amp;#10; 'd': 'deg'&amp;#10;}" valType="extendedCode" updates="constant" name="Begin Experiment" />
61
- <Param val="mags = {&quot;height&quot;: 0.1, &quot;norm&quot;: 0.1, &quot;pix&quot;: 100, &quot;cm&quot;: 1, &quot;deg&quot;: (pi / 10)};&amp;#10;unitCodes = {&quot;h&quot;: &quot;height&quot;, &quot;n&quot;: &quot;norm&quot;, &quot;p&quot;: &quot;pix&quot;, &quot;c&quot;: &quot;cm&quot;, &quot;d&quot;: &quot;deg&quot;};&amp;#10;" valType="extendedCode" updates="constant" name="Begin JS Experiment" />
62
- <Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine" />
63
- <Param val="" valType="extendedCode" updates="constant" name="Begin Routine" />
64
- <Param val="Auto-&gt;JS" valType="str" updates="None" name="Code Type" />
65
- <Param val="keys = event.getKeys()&amp;#10;if keys:&amp;#10; # Get key&amp;#10; if 'escape' in keys:&amp;#10; continueRoutine = False&amp;#10; break&amp;#10; key = keys.pop()&amp;#10; pol = (key in ['right', 'up', 'equal'])*2-1 # Polarity: Whatever dimension, move up or down?&amp;#10; mag = mags[stim.units] # Magnitude to move by&amp;#10; if key in ['left', 'right']:&amp;#10; # Move along the x axis&amp;#10; stim.pos = (stim.pos[0] + mag*pol, &amp;#10; stim.pos[1])&amp;#10; if key in ['up', 'down']:&amp;#10; # Move along the y axis&amp;#10; stim.pos = (stim.pos[0], &amp;#10; stim.pos[1] + mag*pol)&amp;#10; if key in ['equal', 'minus']:&amp;#10; # Move along the size axis&amp;#10; if stim.size[0] + mag*pol&gt;=0: # only if size greater than 0&amp;#10; stim.size = (stim.size[0] + mag*pol,&amp;#10; stim.size[1] + mag*pol)&amp;#10; if key in ['h', 'p', 'n', 'c', 'd']:&amp;#10; # Set units&amp;#10; stim.units = unitCodes[key]&amp;#10; poslog.units = unitCodes[key]&amp;#10; if key in ['r']:&amp;#10; # Reset&amp;#10; stim.units = 'height'&amp;#10; stim.size = (0.1, 0.1)&amp;#10; stim.pos = (0, 0)" valType="extendedCode" updates="constant" name="Each Frame" />
66
- <Param val="var _pj;&amp;#10;function _pj_snippets(container) {&amp;#10; function in_es6(left, right) {&amp;#10; if (((right instanceof Array) || ((typeof right) === &quot;string&quot;))) {&amp;#10; return (right.indexOf(left) &gt; (- 1));&amp;#10; } else {&amp;#10; if (((right instanceof Map) || (right instanceof Set) || (right instanceof WeakMap) || (right instanceof WeakSet))) {&amp;#10; return right.has(left);&amp;#10; } else {&amp;#10; return (left in right);&amp;#10; }&amp;#10; }&amp;#10; }&amp;#10; container[&quot;in_es6&quot;] = in_es6;&amp;#10; return container;&amp;#10;}&amp;#10;_pj = {};&amp;#10;_pj_snippets(_pj);&amp;#10;keys = event.getKeys();&amp;#10;if (keys) {&amp;#10; if (_pj.in_es6(&quot;escape&quot;, keys)) {&amp;#10; continueRoutine = false;&amp;#10; break;&amp;#10; }&amp;#10; key = keys.pop();&amp;#10; pol = ((_pj.in_es6(key, [&quot;right&quot;, &quot;up&quot;, &quot;equal&quot;]) * 2) - 1);&amp;#10; mag = mags[stim.units];&amp;#10; if (_pj.in_es6(key, [&quot;left&quot;, &quot;right&quot;])) {&amp;#10; stim.pos = [(stim.pos[0] + (mag * pol)), stim.pos[1]];&amp;#10; }&amp;#10; if (_pj.in_es6(key, [&quot;up&quot;, &quot;down&quot;])) {&amp;#10; stim.pos = [stim.pos[0], (stim.pos[1] + (mag * pol))];&amp;#10; }&amp;#10; if (_pj.in_es6(key, [&quot;equal&quot;, &quot;minus&quot;])) {&amp;#10; if (((stim.size[0] + (mag * pol)) &gt;= 0)) {&amp;#10; stim.size = [(stim.size[0] + (mag * pol)), (stim.size[1] + (mag * pol))];&amp;#10; }&amp;#10; }&amp;#10; if (_pj.in_es6(key, [&quot;h&quot;, &quot;p&quot;, &quot;n&quot;, &quot;c&quot;, &quot;d&quot;])) {&amp;#10; stim.units = unitCodes[key];&amp;#10; poslog.units = unitCodes[key];&amp;#10; }&amp;#10; if (_pj.in_es6(key, [&quot;r&quot;])) {&amp;#10; stim.units = &quot;height&quot;;&amp;#10; stim.size = [0.1, 0.1];&amp;#10; stim.pos = [0, 0];&amp;#10; }&amp;#10;}&amp;#10;" valType="extendedCode" updates="constant" name="Each JS Frame" />
67
- <Param val="" valType="extendedCode" updates="constant" name="End Experiment" />
68
- <Param val="" valType="extendedCode" updates="constant" name="End JS Experiment" />
69
- <Param val="" valType="extendedCode" updates="constant" name="End JS Routine" />
70
- <Param val="" valType="extendedCode" updates="constant" name="End Routine" />
71
- <Param val="False" valType="bool" updates="None" name="disabled" />
72
- <Param val="code" valType="code" updates="None" name="name" />
83
+ <RoutineSettingsComponent name="rectMover" plugin="None">
84
+ <Param val="none" valType="str" updates="None" name="backgroundFit"/>
85
+ <Param val="" valType="str" updates="None" name="backgroundImg"/>
86
+ <Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
87
+ <Param val="rgb" valType="str" updates="None" name="colorSpace"/>
88
+ <Param val="" valType="str" updates="constant" name="desc"/>
89
+ <Param val="False" valType="bool" updates="None" name="disabled"/>
90
+ <Param val="" valType="code" updates="None" name="durationEstim"/>
91
+ <Param val="False" valType="code" updates="None" name="forceNonSlip"/>
92
+ <Param val="rectMover" valType="code" updates="None" name="name"/>
93
+ <Param val="True" valType="bool" updates="None" name="saveStartStop"/>
94
+ <Param val="" valType="code" updates="constant" name="skipIf"/>
95
+ <Param val="duration (s)" valType="str" updates="None" name="stopType"/>
96
+ <Param val="" valType="code" updates="constant" name="stopVal"/>
97
+ <Param val="False" valType="bool" updates="None" name="useWindowParams"/>
98
+ </RoutineSettingsComponent>
99
+ <CodeComponent name="code" plugin="None">
100
+ <Param val="" valType="extendedCode" updates="constant" name="Before Experiment"/>
101
+ <Param val="" valType="extendedCode" updates="constant" name="Before JS Experiment"/>
102
+ <Param val="mags = {&amp;#10; 'height': 0.1,&amp;#10; 'norm': 0.1,&amp;#10; 'pix': 100,&amp;#10; 'cm': 1,&amp;#10; 'deg': pi/10,&amp;#10;}&amp;#10;unitCodes = {&amp;#10; 'h': 'height',&amp;#10; 'n': 'norm',&amp;#10; 'p': 'pix',&amp;#10; 'c': 'cm',&amp;#10; 'd': 'deg'&amp;#10;}" valType="extendedCode" updates="constant" name="Begin Experiment"/>
103
+ <Param val="mags = {&quot;height&quot;: 0.1, &quot;norm&quot;: 0.1, &quot;pix&quot;: 100, &quot;cm&quot;: 1, &quot;deg&quot;: (pi / 10)};&amp;#10;unitCodes = {&quot;h&quot;: &quot;height&quot;, &quot;n&quot;: &quot;norm&quot;, &quot;p&quot;: &quot;pix&quot;, &quot;c&quot;: &quot;cm&quot;, &quot;d&quot;: &quot;deg&quot;};&amp;#10;" valType="extendedCode" updates="constant" name="Begin JS Experiment"/>
104
+ <Param val="" valType="extendedCode" updates="constant" name="Begin JS Routine"/>
105
+ <Param val="" valType="extendedCode" updates="constant" name="Begin Routine"/>
106
+ <Param val="Auto-&gt;JS" valType="str" updates="None" name="Code Type"/>
107
+ <Param val="keys = event.getKeys()&amp;#10;if keys:&amp;#10; # Get key&amp;#10; if 'escape' in keys:&amp;#10; continueRoutine = False&amp;#10; break&amp;#10; key = keys.pop()&amp;#10; pol = (key in ['right', 'up', 'equal'])*2-1 # Polarity: Whatever dimension, move up or down?&amp;#10; mag = mags[stim.units] # Magnitude to move by&amp;#10; if key in ['left', 'right']:&amp;#10; # Move along the x axis&amp;#10; stim.pos = (stim.pos[0] + mag*pol, &amp;#10; stim.pos[1])&amp;#10; if key in ['up', 'down']:&amp;#10; # Move along the y axis&amp;#10; stim.pos = (stim.pos[0], &amp;#10; stim.pos[1] + mag*pol)&amp;#10; if key in ['equal', 'minus']:&amp;#10; # Move along the size axis&amp;#10; if stim.size[0] + mag*pol&gt;=0: # only if size greater than 0&amp;#10; stim.size = (stim.size[0] + mag*pol,&amp;#10; stim.size[1] + mag*pol)&amp;#10; if key in ['h', 'p', 'n', 'c', 'd']:&amp;#10; # Set units&amp;#10; stim.units = unitCodes[key]&amp;#10; poslog.units = unitCodes[key]&amp;#10; if key in ['r']:&amp;#10; # Reset&amp;#10; stim.units = 'height'&amp;#10; stim.size = (0.1, 0.1)&amp;#10; stim.pos = (0, 0)" valType="extendedCode" updates="constant" name="Each Frame"/>
108
+ <Param val="var _pj;&amp;#10;function _pj_snippets(container) {&amp;#10; function in_es6(left, right) {&amp;#10; if (((right instanceof Array) || ((typeof right) === &quot;string&quot;))) {&amp;#10; return (right.indexOf(left) &gt; (- 1));&amp;#10; } else {&amp;#10; if (((right instanceof Map) || (right instanceof Set) || (right instanceof WeakMap) || (right instanceof WeakSet))) {&amp;#10; return right.has(left);&amp;#10; } else {&amp;#10; return (left in right);&amp;#10; }&amp;#10; }&amp;#10; }&amp;#10; container[&quot;in_es6&quot;] = in_es6;&amp;#10; return container;&amp;#10;}&amp;#10;_pj = {};&amp;#10;_pj_snippets(_pj);&amp;#10;keys = event.getKeys();&amp;#10;if (keys) {&amp;#10; if (_pj.in_es6(&quot;escape&quot;, keys)) {&amp;#10; continueRoutine = false;&amp;#10; break;&amp;#10; }&amp;#10; key = keys.pop();&amp;#10; pol = ((_pj.in_es6(key, [&quot;right&quot;, &quot;up&quot;, &quot;equal&quot;]) * 2) - 1);&amp;#10; mag = mags[stim.units];&amp;#10; if (_pj.in_es6(key, [&quot;left&quot;, &quot;right&quot;])) {&amp;#10; stim.pos = [(stim.pos[0] + (mag * pol)), stim.pos[1]];&amp;#10; }&amp;#10; if (_pj.in_es6(key, [&quot;up&quot;, &quot;down&quot;])) {&amp;#10; stim.pos = [stim.pos[0], (stim.pos[1] + (mag * pol))];&amp;#10; }&amp;#10; if (_pj.in_es6(key, [&quot;equal&quot;, &quot;minus&quot;])) {&amp;#10; if (((stim.size[0] + (mag * pol)) &gt;= 0)) {&amp;#10; stim.size = [(stim.size[0] + (mag * pol)), (stim.size[1] + (mag * pol))];&amp;#10; }&amp;#10; }&amp;#10; if (_pj.in_es6(key, [&quot;h&quot;, &quot;p&quot;, &quot;n&quot;, &quot;c&quot;, &quot;d&quot;])) {&amp;#10; stim.units = unitCodes[key];&amp;#10; poslog.units = unitCodes[key];&amp;#10; }&amp;#10; if (_pj.in_es6(key, [&quot;r&quot;])) {&amp;#10; stim.units = &quot;height&quot;;&amp;#10; stim.size = [0.1, 0.1];&amp;#10; stim.pos = [0, 0];&amp;#10; }&amp;#10;}&amp;#10;" valType="extendedCode" updates="constant" name="Each JS Frame"/>
109
+ <Param val="" valType="extendedCode" updates="constant" name="End Experiment"/>
110
+ <Param val="" valType="extendedCode" updates="constant" name="End JS Experiment"/>
111
+ <Param val="" valType="extendedCode" updates="constant" name="End JS Routine"/>
112
+ <Param val="" valType="extendedCode" updates="constant" name="End Routine"/>
113
+ <Param val="False" valType="bool" updates="None" name="disabled"/>
114
+ <Param val="code" valType="code" updates="None" name="name"/>
73
115
  </CodeComponent>
74
- <PolygonComponent name="stim">
75
- <Param val="rgb" valType="str" updates="constant" name="colorSpace" />
76
- <Param val="1" valType="num" updates="constant" name="contrast" />
77
- <Param val="False" valType="bool" updates="None" name="disabled" />
78
- <Param val="" valType="code" updates="None" name="durationEstim" />
79
- <Param val="$[1,1,1]" valType="str" updates="constant" name="fillColor" />
80
- <Param val="rgb" valType="str" updates="constant" name="fillColorSpace" />
81
- <Param val="linear" valType="str" updates="constant" name="interpolate" />
82
- <Param val="$[1,1,1]" valType="str" updates="constant" name="lineColor" />
83
- <Param val="rgb" valType="str" updates="constant" name="lineColorSpace" />
84
- <Param val="1" valType="code" updates="constant" name="lineWidth" />
85
- <Param val="4" valType="int" updates="constant" name="nVertices" />
86
- <Param val="stim" valType="code" updates="None" name="name" />
87
- <Param val="1" valType="code" updates="constant" name="opacity" />
88
- <Param val="0" valType="code" updates="constant" name="ori" />
89
- <Param val="(0, 0)" valType="code" updates="constant" name="pos" />
90
- <Param val="True" valType="bool" updates="None" name="saveStartStop" />
91
- <Param val="rectangle" valType="str" updates="constant" name="shape" />
92
- <Param val="(0.5, 0.5)" valType="code" updates="constant" name="size" />
93
- <Param val="" valType="code" updates="None" name="startEstim" />
94
- <Param val="time (s)" valType="str" updates="None" name="startType" />
95
- <Param val="0.0" valType="code" updates="None" name="startVal" />
96
- <Param val="duration (s)" valType="str" updates="None" name="stopType" />
97
- <Param val="" valType="code" updates="constant" name="stopVal" />
98
- <Param val="True" valType="bool" updates="None" name="syncScreenRefresh" />
99
- <Param val="from exp settings" valType="str" updates="None" name="units" />
100
- <Param val="" valType="list" updates="constant" name="vertices" />
116
+ <PolygonComponent name="stim" plugin="None">
117
+ <Param val="center" valType="str" updates="constant" name="anchor"/>
118
+ <Param val="rgb" valType="str" updates="constant" name="colorSpace"/>
119
+ <Param val="1" valType="num" updates="constant" name="contrast"/>
120
+ <Param val="False" valType="bool" updates="None" name="disabled"/>
121
+ <Param val="False" valType="code" updates="constant" name="draggable"/>
122
+ <Param val="" valType="code" updates="None" name="durationEstim"/>
123
+ <Param val="$[1,1,1]" valType="str" updates="constant" name="fillColor"/>
124
+ <Param val="rgb" valType="str" updates="constant" name="fillColorSpace"/>
125
+ <Param val="linear" valType="str" updates="constant" name="interpolate"/>
126
+ <Param val="$[1,1,1]" valType="str" updates="constant" name="lineColor"/>
127
+ <Param val="rgb" valType="str" updates="constant" name="lineColorSpace"/>
128
+ <Param val="1" valType="code" updates="constant" name="lineWidth"/>
129
+ <Param val="4" valType="int" updates="constant" name="nVertices"/>
130
+ <Param val="stim" valType="code" updates="None" name="name"/>
131
+ <Param val="1" valType="code" updates="constant" name="opacity"/>
132
+ <Param val="0" valType="code" updates="constant" name="ori"/>
133
+ <Param val="(0, 0)" valType="list" updates="constant" name="pos"/>
134
+ <Param val="True" valType="bool" updates="None" name="saveStartStop"/>
135
+ <Param val="rectangle" valType="str" updates="constant" name="shape"/>
136
+ <Param val="(0.5, 0.5)" valType="list" updates="constant" name="size"/>
137
+ <Param val="" valType="code" updates="None" name="startEstim"/>
138
+ <Param val="time (s)" valType="str" updates="None" name="startType"/>
139
+ <Param val="0.0" valType="code" updates="None" name="startVal"/>
140
+ <Param val="duration (s)" valType="str" updates="None" name="stopType"/>
141
+ <Param val="" valType="code" updates="constant" name="stopVal"/>
142
+ <Param val="True" valType="bool" updates="None" name="syncScreenRefresh"/>
143
+ <Param val="from exp settings" valType="str" updates="None" name="units"/>
144
+ <Param val="" valType="code" updates="None" name="validator"/>
145
+ <Param val="" valType="list" updates="constant" name="vertices"/>
101
146
  </PolygonComponent>
102
- <TextComponent name="inst">
103
- <Param val="black" valType="str" updates="constant" name="color" />
104
- <Param val="rgb" valType="str" updates="constant" name="colorSpace" />
105
- <Param val="1" valType="num" updates="constant" name="contrast" />
106
- <Param val="False" valType="bool" updates="None" name="disabled" />
107
- <Param val="" valType="code" updates="None" name="durationEstim" />
108
- <Param val="" valType="str" updates="constant" name="flip" />
109
- <Param val="Open Sans" valType="str" updates="constant" name="font" />
110
- <Param val="LTR" valType="str" updates="None" name="languageStyle" />
111
- <Param val="0.025" valType="code" updates="constant" name="letterHeight" />
112
- <Param val="inst" valType="code" updates="None" name="name" />
113
- <Param val="1" valType="code" updates="constant" name="opacity" />
114
- <Param val="0" valType="code" updates="constant" name="ori" />
115
- <Param val="(0, -0.4)" valType="code" updates="constant" name="pos" />
116
- <Param val="True" valType="bool" updates="None" name="saveStartStop" />
117
- <Param val="" valType="code" updates="None" name="startEstim" />
118
- <Param val="time (s)" valType="str" updates="None" name="startType" />
119
- <Param val="0.0" valType="code" updates="None" name="startVal" />
120
- <Param val="duration (s)" valType="str" updates="None" name="stopType" />
121
- <Param val="" valType="code" updates="constant" name="stopVal" />
122
- <Param val="True" valType="bool" updates="None" name="syncScreenRefresh" />
123
- <Param val="Move: up, down, left, right&amp;#10;Scale: minus = shrink, equals = grow&amp;#10;Units: p = pix, h = height, n = norm, c = cm, d = deg&amp;#10;Reset: r" valType="extendedStr" updates="constant" name="text" />
124
- <Param val="from exp settings" valType="str" updates="None" name="units" />
125
- <Param val="" valType="code" updates="constant" name="wrapWidth" />
147
+ <TextComponent name="inst" plugin="None">
148
+ <Param val="black" valType="str" updates="constant" name="color"/>
149
+ <Param val="rgb" valType="str" updates="constant" name="colorSpace"/>
150
+ <Param val="1" valType="num" updates="constant" name="contrast"/>
151
+ <Param val="False" valType="bool" updates="None" name="disabled"/>
152
+ <Param val="False" valType="code" updates="constant" name="draggable"/>
153
+ <Param val="" valType="code" updates="None" name="durationEstim"/>
154
+ <Param val="" valType="str" updates="constant" name="flip"/>
155
+ <Param val="Arial" valType="str" updates="constant" name="font"/>
156
+ <Param val="LTR" valType="str" updates="None" name="languageStyle"/>
157
+ <Param val="0.025" valType="code" updates="constant" name="letterHeight"/>
158
+ <Param val="inst" valType="code" updates="None" name="name"/>
159
+ <Param val="1" valType="code" updates="constant" name="opacity"/>
160
+ <Param val="0" valType="code" updates="constant" name="ori"/>
161
+ <Param val="(0, -0.4)" valType="list" updates="constant" name="pos"/>
162
+ <Param val="True" valType="bool" updates="None" name="saveStartStop"/>
163
+ <Param val="" valType="code" updates="None" name="startEstim"/>
164
+ <Param val="time (s)" valType="str" updates="None" name="startType"/>
165
+ <Param val="0.0" valType="code" updates="None" name="startVal"/>
166
+ <Param val="duration (s)" valType="str" updates="None" name="stopType"/>
167
+ <Param val="" valType="code" updates="constant" name="stopVal"/>
168
+ <Param val="True" valType="bool" updates="None" name="syncScreenRefresh"/>
169
+ <Param val="Move: up, down, left, right&amp;#10;Scale: minus = shrink, equals = grow&amp;#10;Units: p = pix, h = height, n = norm, c = cm, d = deg&amp;#10;Reset: r" valType="extendedStr" updates="constant" name="text"/>
170
+ <Param val="from exp settings" valType="str" updates="None" name="units"/>
171
+ <Param val="" valType="code" updates="None" name="validator"/>
172
+ <Param val="" valType="code" updates="constant" name="wrapWidth"/>
126
173
  </TextComponent>
127
- <TextComponent name="poslog">
128
- <Param val="black" valType="str" updates="constant" name="color" />
129
- <Param val="rgb" valType="str" updates="constant" name="colorSpace" />
130
- <Param val="1" valType="num" updates="constant" name="contrast" />
131
- <Param val="False" valType="bool" updates="None" name="disabled" />
132
- <Param val="" valType="code" updates="None" name="durationEstim" />
133
- <Param val="" valType="str" updates="constant" name="flip" />
134
- <Param val="Open Sans" valType="str" updates="constant" name="font" />
135
- <Param val="LTR" valType="str" updates="None" name="languageStyle" />
136
- <Param val="0.05" valType="code" updates="constant" name="letterHeight" />
137
- <Param val="poslog" valType="code" updates="None" name="name" />
138
- <Param val="1" valType="code" updates="constant" name="opacity" />
139
- <Param val="0" valType="code" updates="constant" name="ori" />
140
- <Param val="stim.pos" valType="code" updates="set every frame" name="pos" />
141
- <Param val="True" valType="bool" updates="None" name="saveStartStop" />
142
- <Param val="" valType="code" updates="None" name="startEstim" />
143
- <Param val="time (s)" valType="str" updates="None" name="startType" />
144
- <Param val="0.0" valType="code" updates="None" name="startVal" />
145
- <Param val="duration (s)" valType="str" updates="None" name="stopType" />
146
- <Param val="" valType="code" updates="constant" name="stopVal" />
147
- <Param val="True" valType="bool" updates="None" name="syncScreenRefresh" />
148
- <Param val="$f&quot;pos: ({stim.pos[0]:.2f}, {stim.pos[1]:.2f})\nsize: ({stim.size[0]:.2f}, {stim.size[1]:.2f})\nunits: {stim.units}&quot;" valType="extendedStr" updates="set every frame" name="text" />
149
- <Param val="from exp settings" valType="str" updates="None" name="units" />
150
- <Param val="" valType="code" updates="constant" name="wrapWidth" />
174
+ <TextComponent name="poslog" plugin="None">
175
+ <Param val="black" valType="str" updates="constant" name="color"/>
176
+ <Param val="rgb" valType="str" updates="constant" name="colorSpace"/>
177
+ <Param val="1" valType="num" updates="constant" name="contrast"/>
178
+ <Param val="False" valType="bool" updates="None" name="disabled"/>
179
+ <Param val="False" valType="code" updates="constant" name="draggable"/>
180
+ <Param val="" valType="code" updates="None" name="durationEstim"/>
181
+ <Param val="" valType="str" updates="constant" name="flip"/>
182
+ <Param val="Arial" valType="str" updates="constant" name="font"/>
183
+ <Param val="LTR" valType="str" updates="None" name="languageStyle"/>
184
+ <Param val="0.05" valType="code" updates="constant" name="letterHeight"/>
185
+ <Param val="poslog" valType="code" updates="None" name="name"/>
186
+ <Param val="1" valType="code" updates="constant" name="opacity"/>
187
+ <Param val="0" valType="code" updates="constant" name="ori"/>
188
+ <Param val="stim.pos" valType="list" updates="set every frame" name="pos"/>
189
+ <Param val="True" valType="bool" updates="None" name="saveStartStop"/>
190
+ <Param val="" valType="code" updates="None" name="startEstim"/>
191
+ <Param val="time (s)" valType="str" updates="None" name="startType"/>
192
+ <Param val="0.0" valType="code" updates="None" name="startVal"/>
193
+ <Param val="duration (s)" valType="str" updates="None" name="stopType"/>
194
+ <Param val="" valType="code" updates="constant" name="stopVal"/>
195
+ <Param val="True" valType="bool" updates="None" name="syncScreenRefresh"/>
196
+ <Param val="$f&quot;pos: ({stim.pos[0]:.2f}, {stim.pos[1]:.2f})\nsize: ({stim.size[0]:.2f}, {stim.size[1]:.2f})\nunits: {stim.units}&quot;" valType="extendedStr" updates="set every frame" name="text"/>
197
+ <Param val="from exp settings" valType="str" updates="None" name="units"/>
198
+ <Param val="" valType="code" updates="None" name="validator"/>
199
+ <Param val="" valType="code" updates="constant" name="wrapWidth"/>
151
200
  </TextComponent>
152
201
  </Routine>
153
202
  </Routines>
154
203
  <Flow>
155
- <Routine name="rectMover" />
204
+ <Routine name="rectMover"/>
156
205
  </Flow>
157
- </PsychoPy2experiment>
206
+ </PsychoPy2experiment>
@@ -25,7 +25,7 @@ logging.console.setLevel(logging.DEBUG)
25
25
  runInfo = psychopy.info.RunTimeInfo(
26
26
  # if you specify author and version here, it overrides the automatic detection of __author__ and __version__ in your script
27
27
  # author=' < your name goes here, plus whatever you like, e.g., your lab or contact info > ',
28
- # version=" < your experiment version info > ",
28
+ # version="2025.2.0",
29
29
  win=win, # # a psychopy.visual.Window() instance; None = default temp window used; False = no win, no win.flips()
30
30
  refreshTest='grating', # # None, True, or 'grating' (eye-candy to avoid a blank screen)
31
31
  verbose=True, # # True means report on everything
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  # Part of the PsychoPy library
5
- # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2024 Open Science Tools Ltd.
5
+ # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2025 Open Science Tools Ltd.
6
6
  # Distributed under the terms of the GNU General Public License (GPL).
7
7
 
8
8
  from psychopy.hardware.keyboard import Keyboard
psychopy/event.py CHANGED
@@ -6,7 +6,7 @@ pygame to be installed).
6
6
  See demo_mouse.py and i{demo_joystick.py} for examples
7
7
  """
8
8
  # Part of the PsychoPy library
9
- # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2024 Open Science Tools Ltd.
9
+ # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2025 Open Science Tools Ltd.
10
10
  # Distributed under the terms of the GNU General Public License (GPL).
11
11
 
12
12
  # 01/2011 modified by Dave Britton to get mouse event timing
psychopy/exceptions.py CHANGED
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  # Part of the PsychoPy library
5
- # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2024 Open Science Tools Ltd.
5
+ # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2025 Open Science Tools Ltd.
6
6
  # Distributed under the terms of the GNU General Public License (GPL).
7
7
 
8
8
 
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  # Part of the PsychoPy library
5
- # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2024 Open Science Tools Ltd.
5
+ # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2025 Open Science Tools Ltd.
6
6
  # Distributed under the terms of the GNU General Public License (GPL).
7
7
 
8
8
  """Experiment classes:
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  # Part of the PsychoPy library
5
- # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2024 Open Science Tools Ltd.
5
+ # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2025 Open Science Tools Ltd.
6
6
  # Distributed under the terms of the GNU General Public License (GPL).
7
7
 
8
8
  """Experiment classes:
@@ -146,6 +146,9 @@ class Experiment:
146
146
  self.requireImport(importName='keyboard',
147
147
  importFrom='psychopy.hardware')
148
148
 
149
+ # what online resources are needed? (PsychoJS only)
150
+ self.requiredResources = []
151
+
149
152
  _settingsComp = getComponents(fetchIcons=False)['SettingsComponent']
150
153
  self.settings = _settingsComp(parentName='', exp=self)
151
154
  # this will be the xml.dom.minidom.doc object for saving
@@ -172,6 +175,27 @@ class Experiment:
172
175
  else:
173
176
  # if neither, it's not the same
174
177
  return False
178
+
179
+ def requireOnlineResource(self, url, name=None):
180
+ """
181
+ Add a link to an online resource to be loaded at experiment start in PsychoJS.
182
+
183
+ Parameters
184
+ ----------
185
+ url : str
186
+ Link to the necessary resource
187
+ name : str
188
+ Name with which to refer to the resource later in the experiment. Leave as None to use
189
+ the url as its name.
190
+ """
191
+ # use url for name if none given
192
+ if name is None:
193
+ name = url
194
+ # add resource
195
+ self.requiredResources.append({
196
+ 'name': name,
197
+ 'rel': url,
198
+ })
175
199
 
176
200
  def requirePsychopyLibs(self, libs=()):
177
201
  """Add a list of top-level psychopy libs that the experiment
@@ -720,9 +744,10 @@ class Experiment:
720
744
  # don't warn people if we know it's OK (e.g. for params
721
745
  # that have been removed
722
746
  pass
723
- elif componentNode is not None and componentNode.get("plugin") not in ("None", None):
724
- # don't warn people if comp/routine is from a plugin
725
- pass
747
+ elif componentNode is not None and componentNode.get("plugin", False) not in (False, "", "None", None):
748
+ # is param unrecognised because it's from a plugin?
749
+ params[name].categ = "Plugin"
750
+ params[name].plugin = componentNode.get("plugin", False)
726
751
  elif paramNode.get('plugin', False):
727
752
  # load plugin name if param is from a plugin
728
753
  params[name].plugin = paramNode.get('plugin')
@@ -1173,10 +1198,6 @@ class Experiment:
1173
1198
  else:
1174
1199
  thisFile['rel'] = filePath
1175
1200
  thisFile['abs'] = os.path.normpath(join(srcRoot, filePath))
1176
- if "/" in filePath:
1177
- thisFile['name'] = filePath.split("/")[-1]
1178
- else:
1179
- thisFile['name'] = filePath
1180
1201
  if len(thisFile['abs']) <= 256 and os.path.isfile(thisFile['abs']):
1181
1202
  return thisFile
1182
1203
 
@@ -1333,7 +1354,7 @@ class Experiment:
1333
1354
  chosenResources.append(thisFile)
1334
1355
 
1335
1356
  # Check for any resources not in experiment path
1336
- resources = loopResources + compResources + chosenResources
1357
+ resources = loopResources + compResources + chosenResources + self.requiredResources
1337
1358
  resources = [res for res in resources if res is not None]
1338
1359
  for res in resources:
1339
1360
  if res in list(ft.defaultStim):
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  # Part of the PsychoPy library
5
- # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2024 Open Science Tools Ltd.
5
+ # Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2025 Open Science Tools Ltd.
6
6
  # Distributed under the terms of the GNU General Public License (GPL).
7
7
 
8
8
  """Extensible set of components for the PsychoPy Builder view.
@@ -64,11 +64,6 @@ def addComponent(compClass):
64
64
 
65
65
  # check type and attributes of the class
66
66
  if not issubclass(compClass, (BaseComponent, BaseVisualComponent)):
67
- logging.warning(
68
- "Component `{}` does not appear to be a subclass of "
69
- "`psychopy.experiment.components._base.BaseComponent`. This will be skipped."
70
- .format(compName)
71
- )
72
67
  return
73
68
  elif not hasattr(compClass, 'categories'):
74
69
  logging.warning(