psychopy 2025.2.4__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.
Files changed (3127) hide show
  1. psychopy/CHANGELOG.txt +3981 -0
  2. psychopy/GIT_SHA +1 -0
  3. psychopy/LICENSE.txt +11 -0
  4. psychopy/LICENSES.txt +55 -0
  5. psychopy/VERSION +1 -0
  6. psychopy/__init__.py +148 -0
  7. psychopy/alerts/__init__.py +65 -0
  8. psychopy/alerts/_alerts.py +224 -0
  9. psychopy/alerts/_errorHandler.py +50 -0
  10. psychopy/alerts/alertsCatalogue/1000.yaml +0 -0
  11. psychopy/alerts/alertsCatalogue/1100.yaml +0 -0
  12. psychopy/alerts/alertsCatalogue/1500.yaml +0 -0
  13. psychopy/alerts/alertsCatalogue/2000.yaml +0 -0
  14. psychopy/alerts/alertsCatalogue/2100.yaml +0 -0
  15. psychopy/alerts/alertsCatalogue/2110.yaml +0 -0
  16. psychopy/alerts/alertsCatalogue/2115.yaml +21 -0
  17. psychopy/alerts/alertsCatalogue/2120.yaml +22 -0
  18. psychopy/alerts/alertsCatalogue/2150.yaml +0 -0
  19. psychopy/alerts/alertsCatalogue/2155.yaml +21 -0
  20. psychopy/alerts/alertsCatalogue/2300.yaml +0 -0
  21. psychopy/alerts/alertsCatalogue/2500.yaml +0 -0
  22. psychopy/alerts/alertsCatalogue/3000.yaml +0 -0
  23. psychopy/alerts/alertsCatalogue/3100.yaml +0 -0
  24. psychopy/alerts/alertsCatalogue/3110.yaml +25 -0
  25. psychopy/alerts/alertsCatalogue/3115.yaml +24 -0
  26. psychopy/alerts/alertsCatalogue/3200.yaml +0 -0
  27. psychopy/alerts/alertsCatalogue/3210.yaml +27 -0
  28. psychopy/alerts/alertsCatalogue/3400.yaml +0 -0
  29. psychopy/alerts/alertsCatalogue/3600.yaml +0 -0
  30. psychopy/alerts/alertsCatalogue/3610.yaml +19 -0
  31. psychopy/alerts/alertsCatalogue/4000.yaml +0 -0
  32. psychopy/alerts/alertsCatalogue/4051.yaml +19 -0
  33. psychopy/alerts/alertsCatalogue/4052.yaml +19 -0
  34. psychopy/alerts/alertsCatalogue/4100.yaml +0 -0
  35. psychopy/alerts/alertsCatalogue/4105.yaml +18 -0
  36. psychopy/alerts/alertsCatalogue/4115.yaml +21 -0
  37. psychopy/alerts/alertsCatalogue/4120.yaml +19 -0
  38. psychopy/alerts/alertsCatalogue/4125.yaml +23 -0
  39. psychopy/alerts/alertsCatalogue/4130.yaml +19 -0
  40. psychopy/alerts/alertsCatalogue/4160.yaml +25 -0
  41. psychopy/alerts/alertsCatalogue/4200.yaml +0 -0
  42. psychopy/alerts/alertsCatalogue/4205.yaml +19 -0
  43. psychopy/alerts/alertsCatalogue/4210.yaml +19 -0
  44. psychopy/alerts/alertsCatalogue/4305.yaml +21 -0
  45. psychopy/alerts/alertsCatalogue/4310.yaml +21 -0
  46. psychopy/alerts/alertsCatalogue/4315.yaml +21 -0
  47. psychopy/alerts/alertsCatalogue/4320.yaml +19 -0
  48. psychopy/alerts/alertsCatalogue/4325.yaml +23 -0
  49. psychopy/alerts/alertsCatalogue/4330.yaml +19 -0
  50. psychopy/alerts/alertsCatalogue/4335.yaml +19 -0
  51. psychopy/alerts/alertsCatalogue/4340.yaml +19 -0
  52. psychopy/alerts/alertsCatalogue/4405.yaml +24 -0
  53. psychopy/alerts/alertsCatalogue/4505.yaml +22 -0
  54. psychopy/alerts/alertsCatalogue/4510.yaml +25 -0
  55. psychopy/alerts/alertsCatalogue/4520.yaml +26 -0
  56. psychopy/alerts/alertsCatalogue/4530.yaml +23 -0
  57. psychopy/alerts/alertsCatalogue/4540.yaml +19 -0
  58. psychopy/alerts/alertsCatalogue/4545.yaml +22 -0
  59. psychopy/alerts/alertsCatalogue/4550.yaml +19 -0
  60. psychopy/alerts/alertsCatalogue/4605.yaml +22 -0
  61. psychopy/alerts/alertsCatalogue/4610.yaml +22 -0
  62. psychopy/alerts/alertsCatalogue/4615.yaml +19 -0
  63. psychopy/alerts/alertsCatalogue/4705.yaml +19 -0
  64. psychopy/alerts/alertsCatalogue/4710.yaml +19 -0
  65. psychopy/alerts/alertsCatalogue/4810.yaml +19 -0
  66. psychopy/alerts/alertsCatalogue/5000.yaml +0 -0
  67. psychopy/alerts/alertsCatalogue/5055.yaml +25 -0
  68. psychopy/alerts/alertsCatalogue/6000.yaml +0 -0
  69. psychopy/alerts/alertsCatalogue/6105.yaml +18 -0
  70. psychopy/alerts/alertsCatalogue/7105.yaml +19 -0
  71. psychopy/alerts/alertsCatalogue/8105.yaml +21 -0
  72. psychopy/alerts/alertsCatalogue/8110.yaml +21 -0
  73. psychopy/alerts/alertsCatalogue/9998.yaml +19 -0
  74. psychopy/alerts/alertsCatalogue/9999.yaml +19 -0
  75. psychopy/alerts/alertsCatalogue/alertCategories.yaml +123 -0
  76. psychopy/alerts/alertsCatalogue/alertTemplate.yaml +19 -0
  77. psychopy/alerts/alertsCatalogue/alertmsg.py +173 -0
  78. psychopy/alerts/alertsCatalogue/generateAlertmsg.py +34 -0
  79. psychopy/alerts/alerttools.py +322 -0
  80. psychopy/app/Resources/README.md +12 -0
  81. psychopy/app/Resources/__init__.py +0 -0
  82. psychopy/app/Resources/betasplash.png +0 -0
  83. psychopy/app/Resources/betasplash@2x.png +0 -0
  84. psychopy/app/Resources/builder.ico +0 -0
  85. psychopy/app/Resources/classic/FlowBottom_CompLeft.png +0 -0
  86. psychopy/app/Resources/classic/FlowBottom_CompRight.png +0 -0
  87. psychopy/app/Resources/classic/FlowTop_CompLeft.png +0 -0
  88. psychopy/app/Resources/classic/FlowTop_CompRight.png +0 -0
  89. psychopy/app/Resources/classic/README.txt +9 -0
  90. psychopy/app/Resources/classic/__init__.py +0 -0
  91. psychopy/app/Resources/classic/_layouts.ai +1138 -1
  92. psychopy/app/Resources/classic/add.png +0 -0
  93. psychopy/app/Resources/classic/add@2x.png +0 -0
  94. psychopy/app/Resources/classic/addExp32.png +0 -0
  95. psychopy/app/Resources/classic/add_many.png +0 -0
  96. psychopy/app/Resources/classic/add_many@2x.png +0 -0
  97. psychopy/app/Resources/classic/alerts.png +0 -0
  98. psychopy/app/Resources/classic/beta.png +0 -0
  99. psychopy/app/Resources/classic/browser.png +0 -0
  100. psychopy/app/Resources/classic/browser@2x.png +0 -0
  101. psychopy/app/Resources/classic/bug16.png +0 -0
  102. psychopy/app/Resources/classic/case.png +0 -0
  103. psychopy/app/Resources/classic/case@2x.png +0 -0
  104. psychopy/app/Resources/classic/circle_mask.png +0 -0
  105. psychopy/app/Resources/classic/circle_mask@2x.png +0 -0
  106. psychopy/app/Resources/classic/clear.png +0 -0
  107. psychopy/app/Resources/classic/clear@2x.png +0 -0
  108. psychopy/app/Resources/classic/coderclass16.png +0 -0
  109. psychopy/app/Resources/classic/coderfunc16.png +0 -0
  110. psychopy/app/Resources/classic/coderimport16.png +0 -0
  111. psychopy/app/Resources/classic/coderjs16.png +0 -0
  112. psychopy/app/Resources/classic/coderpython16.png +0 -0
  113. psychopy/app/Resources/classic/codervar16.png +0 -0
  114. psychopy/app/Resources/classic/cogwindow32.png +0 -0
  115. psychopy/app/Resources/classic/color32.png +0 -0
  116. psychopy/app/Resources/classic/compile32.png +0 -0
  117. psychopy/app/Resources/classic/compile_js.png +0 -0
  118. psychopy/app/Resources/classic/compile_js@2x.png +0 -0
  119. psychopy/app/Resources/classic/compile_py.png +0 -0
  120. psychopy/app/Resources/classic/compile_py@2x.png +0 -0
  121. psychopy/app/Resources/classic/copy16.png +0 -0
  122. psychopy/app/Resources/classic/currentFile.png +0 -0
  123. psychopy/app/Resources/classic/currentFile@2x.png +0 -0
  124. psychopy/app/Resources/classic/delete16.png +0 -0
  125. psychopy/app/Resources/classic/desktop.png +0 -0
  126. psychopy/app/Resources/classic/desktop@2x.png +0 -0
  127. psychopy/app/Resources/classic/devices.png +0 -0
  128. psychopy/app/Resources/classic/devices@2x.png +0 -0
  129. psychopy/app/Resources/classic/dirup16.png +0 -0
  130. psychopy/app/Resources/classic/docclose16.png +0 -0
  131. psychopy/app/Resources/classic/download.png +0 -0
  132. psychopy/app/Resources/classic/edit.png +0 -0
  133. psychopy/app/Resources/classic/edit@2x.png +0 -0
  134. psychopy/app/Resources/classic/editbtn.png +0 -0
  135. psychopy/app/Resources/classic/editbtn16.png +0 -0
  136. psychopy/app/Resources/classic/editbtn16@2x.png +0 -0
  137. psychopy/app/Resources/classic/editbtn@2x.png +0 -0
  138. psychopy/app/Resources/classic/email.png +0 -0
  139. psychopy/app/Resources/classic/email@2x.png +0 -0
  140. psychopy/app/Resources/classic/experiment.png +0 -0
  141. psychopy/app/Resources/classic/experiment@2x.png +0 -0
  142. psychopy/app/Resources/classic/expsettings.png +0 -0
  143. psychopy/app/Resources/classic/expsettings@2x.png +0 -0
  144. psychopy/app/Resources/classic/file.png +0 -0
  145. psychopy/app/Resources/classic/file@2x.png +0 -0
  146. psychopy/app/Resources/classic/fileaudio.png +0 -0
  147. psychopy/app/Resources/classic/fileaudio@2x.png +0 -0
  148. psychopy/app/Resources/classic/filecss.png +0 -0
  149. psychopy/app/Resources/classic/filecss@2x.png +0 -0
  150. psychopy/app/Resources/classic/filecsv.png +0 -0
  151. psychopy/app/Resources/classic/filecsv@2x.png +0 -0
  152. psychopy/app/Resources/classic/filedesign.png +0 -0
  153. psychopy/app/Resources/classic/filedesign@2x.png +0 -0
  154. psychopy/app/Resources/classic/filefont.png +0 -0
  155. psychopy/app/Resources/classic/filefont@2x.png +0 -0
  156. psychopy/app/Resources/classic/filegit.png +0 -0
  157. psychopy/app/Resources/classic/filegit@2x.png +0 -0
  158. psychopy/app/Resources/classic/filehtml.png +0 -0
  159. psychopy/app/Resources/classic/filehtml@2x.png +0 -0
  160. psychopy/app/Resources/classic/fileimage.png +0 -0
  161. psychopy/app/Resources/classic/fileimage@2x.png +0 -0
  162. psychopy/app/Resources/classic/fileinfo.png +0 -0
  163. psychopy/app/Resources/classic/fileinfo@2x.png +0 -0
  164. psychopy/app/Resources/classic/filejs.png +0 -0
  165. psychopy/app/Resources/classic/filejs@2x.png +0 -0
  166. psychopy/app/Resources/classic/filejson.png +0 -0
  167. psychopy/app/Resources/classic/filejson@2x.png +0 -0
  168. psychopy/app/Resources/classic/filenew.png +0 -0
  169. psychopy/app/Resources/classic/filenew32.png +0 -0
  170. psychopy/app/Resources/classic/filenew@2x.png +0 -0
  171. psychopy/app/Resources/classic/fileopen.png +0 -0
  172. psychopy/app/Resources/classic/fileopen32.png +0 -0
  173. psychopy/app/Resources/classic/fileopen@2x.png +0 -0
  174. psychopy/app/Resources/classic/filepkg.png +0 -0
  175. psychopy/app/Resources/classic/filepkg@2x.png +0 -0
  176. psychopy/app/Resources/classic/filepsyexp.png +0 -0
  177. psychopy/app/Resources/classic/filepsyexp@2x.png +0 -0
  178. psychopy/app/Resources/classic/filepy.png +0 -0
  179. psychopy/app/Resources/classic/filepy@2x.png +0 -0
  180. psychopy/app/Resources/classic/filesave.png +0 -0
  181. psychopy/app/Resources/classic/filesave32.png +0 -0
  182. psychopy/app/Resources/classic/filesave@2x.png +0 -0
  183. psychopy/app/Resources/classic/filesaveas.png +0 -0
  184. psychopy/app/Resources/classic/filesaveas32.png +0 -0
  185. psychopy/app/Resources/classic/filesaveas@2x.png +0 -0
  186. psychopy/app/Resources/classic/filetxt.png +0 -0
  187. psychopy/app/Resources/classic/filetxt@2x.png +0 -0
  188. psychopy/app/Resources/classic/fileunknown.png +0 -0
  189. psychopy/app/Resources/classic/fileunknown@2x.png +0 -0
  190. psychopy/app/Resources/classic/filevideo.png +0 -0
  191. psychopy/app/Resources/classic/filevideo@2x.png +0 -0
  192. psychopy/app/Resources/classic/filter.png +0 -0
  193. psychopy/app/Resources/classic/filter@2x.png +0 -0
  194. psychopy/app/Resources/classic/find.png +0 -0
  195. psychopy/app/Resources/classic/find@2x.png +0 -0
  196. psychopy/app/Resources/classic/folder-open16.png +0 -0
  197. psychopy/app/Resources/classic/folder16.png +0 -0
  198. psychopy/app/Resources/classic/foldernew16.png +0 -0
  199. psychopy/app/Resources/classic/fork.png +0 -0
  200. psychopy/app/Resources/classic/fork@2x.png +0 -0
  201. psychopy/app/Resources/classic/github.png +0 -0
  202. psychopy/app/Resources/classic/github@2x.png +0 -0
  203. psychopy/app/Resources/classic/globe.png +0 -0
  204. psychopy/app/Resources/classic/globe@2x.png +0 -0
  205. psychopy/app/Resources/classic/globe_bug.png +0 -0
  206. psychopy/app/Resources/classic/globe_bug@2x.png +0 -0
  207. psychopy/app/Resources/classic/globe_greensync.png +0 -0
  208. psychopy/app/Resources/classic/globe_greensync@2x.png +0 -0
  209. psychopy/app/Resources/classic/globe_info.png +0 -0
  210. psychopy/app/Resources/classic/globe_info@2x.png +0 -0
  211. psychopy/app/Resources/classic/globe_magnifier.png +0 -0
  212. psychopy/app/Resources/classic/globe_magnifier@2x.png +0 -0
  213. psychopy/app/Resources/classic/globe_run.png +0 -0
  214. psychopy/app/Resources/classic/globe_run@2x.png +0 -0
  215. psychopy/app/Resources/classic/globe_user.png +0 -0
  216. psychopy/app/Resources/classic/globe_user@2x.png +0 -0
  217. psychopy/app/Resources/classic/goto16.png +0 -0
  218. psychopy/app/Resources/classic/greendot.png +0 -0
  219. psychopy/app/Resources/classic/greendot@2x.png +0 -0
  220. psychopy/app/Resources/classic/greenglobe.png +0 -0
  221. psychopy/app/Resources/classic/greenglobe@2x.png +0 -0
  222. psychopy/app/Resources/classic/greenglobe_bug.png +0 -0
  223. psychopy/app/Resources/classic/greenglobe_bug@2x.png +0 -0
  224. psychopy/app/Resources/classic/greenglobe_greensync.png +0 -0
  225. psychopy/app/Resources/classic/greenglobe_greensync@2x.png +0 -0
  226. psychopy/app/Resources/classic/greenglobe_info.png +0 -0
  227. psychopy/app/Resources/classic/greenglobe_info@2x.png +0 -0
  228. psychopy/app/Resources/classic/greenglobe_magnifier.png +0 -0
  229. psychopy/app/Resources/classic/greenglobe_magnifier@2x.png +0 -0
  230. psychopy/app/Resources/classic/greenglobe_run.png +0 -0
  231. psychopy/app/Resources/classic/greenglobe_run@2x.png +0 -0
  232. psychopy/app/Resources/classic/greenglobe_user.png +0 -0
  233. psychopy/app/Resources/classic/greenglobe_user@2x.png +0 -0
  234. psychopy/app/Resources/classic/greydot.png +0 -0
  235. psychopy/app/Resources/classic/greydot@2x.png +0 -0
  236. psychopy/app/Resources/classic/greytick.png +0 -0
  237. psychopy/app/Resources/classic/greytick@2x.png +0 -0
  238. psychopy/app/Resources/classic/invalid_img.png +0 -0
  239. psychopy/app/Resources/classic/jsPilot.png +0 -0
  240. psychopy/app/Resources/classic/jsPilot@2x.png +0 -0
  241. psychopy/app/Resources/classic/jsRun.png +0 -0
  242. psychopy/app/Resources/classic/jsRun@2x.png +0 -0
  243. psychopy/app/Resources/classic/libroot.png +0 -0
  244. psychopy/app/Resources/classic/libroot@2x.png +0 -0
  245. psychopy/app/Resources/classic/loop.png +0 -0
  246. psychopy/app/Resources/classic/loop@2x.png +0 -0
  247. psychopy/app/Resources/classic/monitor16.png +0 -0
  248. psychopy/app/Resources/classic/monitors.png +0 -0
  249. psychopy/app/Resources/classic/monitors16.png +0 -0
  250. psychopy/app/Resources/classic/monitors32.png +0 -0
  251. psychopy/app/Resources/classic/monitors@2x.png +0 -0
  252. psychopy/app/Resources/classic/orangedot.png +0 -0
  253. psychopy/app/Resources/classic/orangedot@2x.png +0 -0
  254. psychopy/app/Resources/classic/pavlovia.png +0 -0
  255. psychopy/app/Resources/classic/pavlovia16.png +0 -0
  256. psychopy/app/Resources/classic/pavlovia16@2x.png +0 -0
  257. psychopy/app/Resources/classic/pavlovia@2x.png +0 -0
  258. psychopy/app/Resources/classic/pavsync.png +0 -0
  259. psychopy/app/Resources/classic/pavsync@2x.png +0 -0
  260. psychopy/app/Resources/classic/person_off.png +0 -0
  261. psychopy/app/Resources/classic/person_off@2x.png +0 -0
  262. psychopy/app/Resources/classic/person_on.png +0 -0
  263. psychopy/app/Resources/classic/person_on@2x.png +0 -0
  264. psychopy/app/Resources/classic/photometer.png +0 -0
  265. psychopy/app/Resources/classic/photometer@2x.png +0 -0
  266. psychopy/app/Resources/classic/plugin16.png +0 -0
  267. psychopy/app/Resources/classic/plugin16@2x.png +0 -0
  268. psychopy/app/Resources/classic/plugins32.png +0 -0
  269. psychopy/app/Resources/classic/plus.png +0 -0
  270. psychopy/app/Resources/classic/plus@2x.png +0 -0
  271. psychopy/app/Resources/classic/preferences-app.png +0 -0
  272. psychopy/app/Resources/classic/preferences-app48.png +0 -0
  273. psychopy/app/Resources/classic/preferences-app@2x.png +0 -0
  274. psychopy/app/Resources/classic/preferences-conn.png +0 -0
  275. psychopy/app/Resources/classic/preferences-conn48.png +0 -0
  276. psychopy/app/Resources/classic/preferences-conn@2x.png +0 -0
  277. psychopy/app/Resources/classic/preferences-debug.png +0 -0
  278. psychopy/app/Resources/classic/preferences-debug@2x.png +0 -0
  279. psychopy/app/Resources/classic/preferences-general.png +0 -0
  280. psychopy/app/Resources/classic/preferences-general48.png +0 -0
  281. psychopy/app/Resources/classic/preferences-general@2x.png +0 -0
  282. psychopy/app/Resources/classic/preferences-hardware.png +0 -0
  283. psychopy/app/Resources/classic/preferences-hardware48.png +0 -0
  284. psychopy/app/Resources/classic/preferences-hardware@2x.png +0 -0
  285. psychopy/app/Resources/classic/preferences-keyboard.png +0 -0
  286. psychopy/app/Resources/classic/preferences-keyboard48.png +0 -0
  287. psychopy/app/Resources/classic/preferences-keyboard@2x.png +0 -0
  288. psychopy/app/Resources/classic/preferences-pilot.png +0 -0
  289. psychopy/app/Resources/classic/preferences-pilot@2x.png +0 -0
  290. psychopy/app/Resources/classic/preferences32.png +0 -0
  291. psychopy/app/Resources/classic/pyPilot.png +0 -0
  292. psychopy/app/Resources/classic/pyPilot@2x.png +0 -0
  293. psychopy/app/Resources/classic/pyRun.png +0 -0
  294. psychopy/app/Resources/classic/pyRun@2x.png +0 -0
  295. psychopy/app/Resources/classic/reddot.png +0 -0
  296. psychopy/app/Resources/classic/reddot@2x.png +0 -0
  297. psychopy/app/Resources/classic/redglobe.png +0 -0
  298. psychopy/app/Resources/classic/redglobe@2x.png +0 -0
  299. psychopy/app/Resources/classic/redglobe_bug.png +0 -0
  300. psychopy/app/Resources/classic/redglobe_bug@2x.png +0 -0
  301. psychopy/app/Resources/classic/redglobe_greensync.png +0 -0
  302. psychopy/app/Resources/classic/redglobe_greensync@2x.png +0 -0
  303. psychopy/app/Resources/classic/redglobe_info.png +0 -0
  304. psychopy/app/Resources/classic/redglobe_info@2x.png +0 -0
  305. psychopy/app/Resources/classic/redglobe_magnifier.png +0 -0
  306. psychopy/app/Resources/classic/redglobe_magnifier@2x.png +0 -0
  307. psychopy/app/Resources/classic/redglobe_run.png +0 -0
  308. psychopy/app/Resources/classic/redglobe_run@2x.png +0 -0
  309. psychopy/app/Resources/classic/redglobe_user.png +0 -0
  310. psychopy/app/Resources/classic/redglobe_user@2x.png +0 -0
  311. psychopy/app/Resources/classic/redo.png +0 -0
  312. psychopy/app/Resources/classic/redo32.png +0 -0
  313. psychopy/app/Resources/classic/redo@2x.png +0 -0
  314. psychopy/app/Resources/classic/regex.png +0 -0
  315. psychopy/app/Resources/classic/regex@2x.png +0 -0
  316. psychopy/app/Resources/classic/removeExp32.png +0 -0
  317. psychopy/app/Resources/classic/rename16.png +0 -0
  318. psychopy/app/Resources/classic/restart.png +0 -0
  319. psychopy/app/Resources/classic/restart@2x.png +0 -0
  320. psychopy/app/Resources/classic/run.png +0 -0
  321. psychopy/app/Resources/classic/run@2x.png +0 -0
  322. psychopy/app/Resources/classic/runner.png +0 -0
  323. psychopy/app/Resources/classic/runner@2x.png +0 -0
  324. psychopy/app/Resources/classic/runnerPilot.png +0 -0
  325. psychopy/app/Resources/classic/runnerPilot@2x.png +0 -0
  326. psychopy/app/Resources/classic/savebtn.png +0 -0
  327. psychopy/app/Resources/classic/savebtn16.png +0 -0
  328. psychopy/app/Resources/classic/savebtn16@2x.png +0 -0
  329. psychopy/app/Resources/classic/savebtn@2x.png +0 -0
  330. psychopy/app/Resources/classic/search.png +0 -0
  331. psychopy/app/Resources/classic/search@2x.png +0 -0
  332. psychopy/app/Resources/classic/showBuilder.png +0 -0
  333. psychopy/app/Resources/classic/showBuilder@2x.png +0 -0
  334. psychopy/app/Resources/classic/showCoder.png +0 -0
  335. psychopy/app/Resources/classic/showCoder@2x.png +0 -0
  336. psychopy/app/Resources/classic/showRunner.png +0 -0
  337. psychopy/app/Resources/classic/showRunner@2x.png +0 -0
  338. psychopy/app/Resources/classic/starred.png +0 -0
  339. psychopy/app/Resources/classic/starred@2x.png +0 -0
  340. psychopy/app/Resources/classic/start.png +0 -0
  341. psychopy/app/Resources/classic/start@2x.png +0 -0
  342. psychopy/app/Resources/classic/stdout.png +0 -0
  343. psychopy/app/Resources/classic/stop.png +0 -0
  344. psychopy/app/Resources/classic/stop32.png +0 -0
  345. psychopy/app/Resources/classic/stop@2x.png +0 -0
  346. psychopy/app/Resources/classic/switchCtrlBot.png +0 -0
  347. psychopy/app/Resources/classic/switchCtrlBot@2x.png +0 -0
  348. psychopy/app/Resources/classic/switchCtrlLeft.png +0 -0
  349. psychopy/app/Resources/classic/switchCtrlLeft@2x.png +0 -0
  350. psychopy/app/Resources/classic/switchCtrlRight.png +0 -0
  351. psychopy/app/Resources/classic/switchCtrlRight@2x.png +0 -0
  352. psychopy/app/Resources/classic/switchCtrlTop.png +0 -0
  353. psychopy/app/Resources/classic/switchCtrlTop@2x.png +0 -0
  354. psychopy/app/Resources/classic/tick.png +0 -0
  355. psychopy/app/Resources/classic/tick@2x.png +0 -0
  356. psychopy/app/Resources/classic/undo.png +0 -0
  357. psychopy/app/Resources/classic/undo32.png +0 -0
  358. psychopy/app/Resources/classic/undo@2x.png +0 -0
  359. psychopy/app/Resources/classic/unstarred.png +0 -0
  360. psychopy/app/Resources/classic/unstarred@2x.png +0 -0
  361. psychopy/app/Resources/classic/user_none.png +0 -0
  362. psychopy/app/Resources/classic/view-refresh16.png +0 -0
  363. psychopy/app/Resources/classic/viewbtn.png +0 -0
  364. psychopy/app/Resources/classic/viewbtn16.png +0 -0
  365. psychopy/app/Resources/classic/viewbtn16@2x.png +0 -0
  366. psychopy/app/Resources/classic/viewbtn@2x.png +0 -0
  367. psychopy/app/Resources/classic/windows16.png +0 -0
  368. psychopy/app/Resources/classic/windows16@2x.png +0 -0
  369. psychopy/app/Resources/coder.ico +0 -0
  370. psychopy/app/Resources/dark/FlowBottom_CompLeft.png +0 -0
  371. psychopy/app/Resources/dark/FlowBottom_CompRight.png +0 -0
  372. psychopy/app/Resources/dark/FlowTop_CompLeft.png +0 -0
  373. psychopy/app/Resources/dark/FlowTop_CompRight.png +0 -0
  374. psychopy/app/Resources/dark/README.txt +3 -0
  375. psychopy/app/Resources/dark/__init__.py +0 -0
  376. psychopy/app/Resources/dark/add.png +0 -0
  377. psychopy/app/Resources/dark/add@2x.png +0 -0
  378. psychopy/app/Resources/dark/addExp32.png +0 -0
  379. psychopy/app/Resources/dark/addExp32@2x.png +0 -0
  380. psychopy/app/Resources/dark/add_many.png +0 -0
  381. psychopy/app/Resources/dark/add_many@2x.png +0 -0
  382. psychopy/app/Resources/dark/alerts.png +0 -0
  383. psychopy/app/Resources/dark/alerts@2x.png +0 -0
  384. psychopy/app/Resources/dark/beta.png +0 -0
  385. psychopy/app/Resources/dark/beta@2x.png +0 -0
  386. psychopy/app/Resources/dark/browser.png +0 -0
  387. psychopy/app/Resources/dark/browser@2x.png +0 -0
  388. psychopy/app/Resources/dark/bug16.png +0 -0
  389. psychopy/app/Resources/dark/bug16@2x.png +0 -0
  390. psychopy/app/Resources/dark/case.png +0 -0
  391. psychopy/app/Resources/dark/case@2x.png +0 -0
  392. psychopy/app/Resources/dark/circle_mask.png +0 -0
  393. psychopy/app/Resources/dark/circle_mask@2x.png +0 -0
  394. psychopy/app/Resources/dark/clear.png +0 -0
  395. psychopy/app/Resources/dark/clear@2x.png +0 -0
  396. psychopy/app/Resources/dark/coderclass16.png +0 -0
  397. psychopy/app/Resources/dark/coderclass16@2x.png +0 -0
  398. psychopy/app/Resources/dark/coderfunc16.png +0 -0
  399. psychopy/app/Resources/dark/coderfunc16@2x.png +0 -0
  400. psychopy/app/Resources/dark/coderimport16.png +0 -0
  401. psychopy/app/Resources/dark/coderimport16@2x.png +0 -0
  402. psychopy/app/Resources/dark/coderjs.png +0 -0
  403. psychopy/app/Resources/dark/coderjs@2x.png +0 -0
  404. psychopy/app/Resources/dark/coderpython.png +0 -0
  405. psychopy/app/Resources/dark/coderpython@2x.png +0 -0
  406. psychopy/app/Resources/dark/codervar16.png +0 -0
  407. psychopy/app/Resources/dark/codervar16@2x.png +0 -0
  408. psychopy/app/Resources/dark/cogwindow32.png +0 -0
  409. psychopy/app/Resources/dark/cogwindow32@2x.png +0 -0
  410. psychopy/app/Resources/dark/color32.png +0 -0
  411. psychopy/app/Resources/dark/color32@2x.png +0 -0
  412. psychopy/app/Resources/dark/compile_js.png +0 -0
  413. psychopy/app/Resources/dark/compile_js@2x.png +0 -0
  414. psychopy/app/Resources/dark/compile_py.png +0 -0
  415. psychopy/app/Resources/dark/compile_py@2x.png +0 -0
  416. psychopy/app/Resources/dark/copy16.png +0 -0
  417. psychopy/app/Resources/dark/copy16@2x.png +0 -0
  418. psychopy/app/Resources/dark/currentFile16.png +0 -0
  419. psychopy/app/Resources/dark/currentFile16@2x.png +0 -0
  420. psychopy/app/Resources/dark/delete16.png +0 -0
  421. psychopy/app/Resources/dark/delete16@2x.png +0 -0
  422. psychopy/app/Resources/dark/desktop.png +0 -0
  423. psychopy/app/Resources/dark/desktop@2x.png +0 -0
  424. psychopy/app/Resources/dark/devices.png +0 -0
  425. psychopy/app/Resources/dark/devices@2x.png +0 -0
  426. psychopy/app/Resources/dark/dirup16.png +0 -0
  427. psychopy/app/Resources/dark/dirup16@2x.png +0 -0
  428. psychopy/app/Resources/dark/docclose16.png +0 -0
  429. psychopy/app/Resources/dark/docclose16@2x.png +0 -0
  430. psychopy/app/Resources/dark/download.png +0 -0
  431. psychopy/app/Resources/dark/download@2x.png +0 -0
  432. psychopy/app/Resources/dark/edit.png +0 -0
  433. psychopy/app/Resources/dark/edit@2x.png +0 -0
  434. psychopy/app/Resources/dark/editbtn16.png +0 -0
  435. psychopy/app/Resources/dark/editbtn16@2x.png +0 -0
  436. psychopy/app/Resources/dark/email.png +0 -0
  437. psychopy/app/Resources/dark/email@2x.png +0 -0
  438. psychopy/app/Resources/dark/experiment.png +0 -0
  439. psychopy/app/Resources/dark/experiment@2x.png +0 -0
  440. psychopy/app/Resources/dark/expsettings.png +0 -0
  441. psychopy/app/Resources/dark/expsettings@2x.png +0 -0
  442. psychopy/app/Resources/dark/file.png +0 -0
  443. psychopy/app/Resources/dark/file@16w.png +0 -0
  444. psychopy/app/Resources/dark/file@16w@2x.png +0 -0
  445. psychopy/app/Resources/dark/file@2x.png +0 -0
  446. psychopy/app/Resources/dark/fileaudio.png +0 -0
  447. psychopy/app/Resources/dark/fileaudio@2x.png +0 -0
  448. psychopy/app/Resources/dark/filecss.png +0 -0
  449. psychopy/app/Resources/dark/filecss@2x.png +0 -0
  450. psychopy/app/Resources/dark/filecsv.png +0 -0
  451. psychopy/app/Resources/dark/filecsv@2x.png +0 -0
  452. psychopy/app/Resources/dark/filedesign.png +0 -0
  453. psychopy/app/Resources/dark/filedesign@2x.png +0 -0
  454. psychopy/app/Resources/dark/filefont.png +0 -0
  455. psychopy/app/Resources/dark/filefont@2x.png +0 -0
  456. psychopy/app/Resources/dark/filegit.png +0 -0
  457. psychopy/app/Resources/dark/filegit@2x.png +0 -0
  458. psychopy/app/Resources/dark/filehtml.png +0 -0
  459. psychopy/app/Resources/dark/filehtml@2x.png +0 -0
  460. psychopy/app/Resources/dark/fileimage.png +0 -0
  461. psychopy/app/Resources/dark/fileimage@2x.png +0 -0
  462. psychopy/app/Resources/dark/fileinfo.png +0 -0
  463. psychopy/app/Resources/dark/fileinfo@2x.png +0 -0
  464. psychopy/app/Resources/dark/filejs.png +0 -0
  465. psychopy/app/Resources/dark/filejs@2x.png +0 -0
  466. psychopy/app/Resources/dark/filejson.png +0 -0
  467. psychopy/app/Resources/dark/filejson@2x.png +0 -0
  468. psychopy/app/Resources/dark/filenew.png +0 -0
  469. psychopy/app/Resources/dark/filenew32.png +0 -0
  470. psychopy/app/Resources/dark/filenew32@2x.png +0 -0
  471. psychopy/app/Resources/dark/filenew@2x.png +0 -0
  472. psychopy/app/Resources/dark/fileopen.png +0 -0
  473. psychopy/app/Resources/dark/fileopen32.png +0 -0
  474. psychopy/app/Resources/dark/fileopen32@2x.png +0 -0
  475. psychopy/app/Resources/dark/fileopen@2x.png +0 -0
  476. psychopy/app/Resources/dark/filepkg.png +0 -0
  477. psychopy/app/Resources/dark/filepkg@2x.png +0 -0
  478. psychopy/app/Resources/dark/filepsyexp.png +0 -0
  479. psychopy/app/Resources/dark/filepsyexp@2x.png +0 -0
  480. psychopy/app/Resources/dark/filepy.png +0 -0
  481. psychopy/app/Resources/dark/filepy@2x.png +0 -0
  482. psychopy/app/Resources/dark/filesave.png +0 -0
  483. psychopy/app/Resources/dark/filesave32.png +0 -0
  484. psychopy/app/Resources/dark/filesave32@2x.png +0 -0
  485. psychopy/app/Resources/dark/filesave@2x.png +0 -0
  486. psychopy/app/Resources/dark/filesaveas.png +0 -0
  487. psychopy/app/Resources/dark/filesaveas32.png +0 -0
  488. psychopy/app/Resources/dark/filesaveas32@2x.png +0 -0
  489. psychopy/app/Resources/dark/filesaveas@2x.png +0 -0
  490. psychopy/app/Resources/dark/filetxt.png +0 -0
  491. psychopy/app/Resources/dark/filetxt@2x.png +0 -0
  492. psychopy/app/Resources/dark/fileunknown.png +0 -0
  493. psychopy/app/Resources/dark/fileunknown@2x.png +0 -0
  494. psychopy/app/Resources/dark/filevideo.png +0 -0
  495. psychopy/app/Resources/dark/filevideo@2x.png +0 -0
  496. psychopy/app/Resources/dark/filter.png +0 -0
  497. psychopy/app/Resources/dark/filter@2x.png +0 -0
  498. psychopy/app/Resources/dark/find.png +0 -0
  499. psychopy/app/Resources/dark/find@2x.png +0 -0
  500. psychopy/app/Resources/dark/folder-open16.png +0 -0
  501. psychopy/app/Resources/dark/folder-open16@2x.png +0 -0
  502. psychopy/app/Resources/dark/folder16.png +0 -0
  503. psychopy/app/Resources/dark/folder16@2x.png +0 -0
  504. psychopy/app/Resources/dark/foldernew16.png +0 -0
  505. psychopy/app/Resources/dark/foldernew16@2x.png +0 -0
  506. psychopy/app/Resources/dark/fork.png +0 -0
  507. psychopy/app/Resources/dark/fork@2x.png +0 -0
  508. psychopy/app/Resources/dark/github.png +0 -0
  509. psychopy/app/Resources/dark/github@2x.png +0 -0
  510. psychopy/app/Resources/dark/globe.png +0 -0
  511. psychopy/app/Resources/dark/globe@2x.png +0 -0
  512. psychopy/app/Resources/dark/globe_bug.png +0 -0
  513. psychopy/app/Resources/dark/globe_bug@2x.png +0 -0
  514. psychopy/app/Resources/dark/globe_greensync.png +0 -0
  515. psychopy/app/Resources/dark/globe_greensync@2x.png +0 -0
  516. psychopy/app/Resources/dark/globe_info.png +0 -0
  517. psychopy/app/Resources/dark/globe_info@2x.png +0 -0
  518. psychopy/app/Resources/dark/globe_magnifier.png +0 -0
  519. psychopy/app/Resources/dark/globe_magnifier@2x.png +0 -0
  520. psychopy/app/Resources/dark/globe_run.png +0 -0
  521. psychopy/app/Resources/dark/globe_run@2x.png +0 -0
  522. psychopy/app/Resources/dark/globe_user.png +0 -0
  523. psychopy/app/Resources/dark/globe_user@2x.png +0 -0
  524. psychopy/app/Resources/dark/goto.png +0 -0
  525. psychopy/app/Resources/dark/goto@2x.png +0 -0
  526. psychopy/app/Resources/dark/greendot.png +0 -0
  527. psychopy/app/Resources/dark/greendot@2x.png +0 -0
  528. psychopy/app/Resources/dark/greenglobe.png +0 -0
  529. psychopy/app/Resources/dark/greenglobe@2x.png +0 -0
  530. psychopy/app/Resources/dark/greenglobe_bug.png +0 -0
  531. psychopy/app/Resources/dark/greenglobe_bug@2x.png +0 -0
  532. psychopy/app/Resources/dark/greenglobe_greensync.png +0 -0
  533. psychopy/app/Resources/dark/greenglobe_greensync@2x.png +0 -0
  534. psychopy/app/Resources/dark/greenglobe_info.png +0 -0
  535. psychopy/app/Resources/dark/greenglobe_info@2x.png +0 -0
  536. psychopy/app/Resources/dark/greenglobe_magnifier.png +0 -0
  537. psychopy/app/Resources/dark/greenglobe_magnifier@2x.png +0 -0
  538. psychopy/app/Resources/dark/greenglobe_run.png +0 -0
  539. psychopy/app/Resources/dark/greenglobe_run@2x.png +0 -0
  540. psychopy/app/Resources/dark/greenglobe_user.png +0 -0
  541. psychopy/app/Resources/dark/greenglobe_user@2x.png +0 -0
  542. psychopy/app/Resources/dark/greydot.png +0 -0
  543. psychopy/app/Resources/dark/greydot@2x.png +0 -0
  544. psychopy/app/Resources/dark/greytick.png +0 -0
  545. psychopy/app/Resources/dark/greytick@2x.png +0 -0
  546. psychopy/app/Resources/dark/invalid_img.png +0 -0
  547. psychopy/app/Resources/dark/jsPilot.png +0 -0
  548. psychopy/app/Resources/dark/jsPilot@2x.png +0 -0
  549. psychopy/app/Resources/dark/jsRun.png +0 -0
  550. psychopy/app/Resources/dark/jsRun@2x.png +0 -0
  551. psychopy/app/Resources/dark/libroot16.png +0 -0
  552. psychopy/app/Resources/dark/libroot16@2x.png +0 -0
  553. psychopy/app/Resources/dark/loop.png +0 -0
  554. psychopy/app/Resources/dark/loop@2x.png +0 -0
  555. psychopy/app/Resources/dark/monitor16.png +0 -0
  556. psychopy/app/Resources/dark/monitor16@2x.png +0 -0
  557. psychopy/app/Resources/dark/monitors.png +0 -0
  558. psychopy/app/Resources/dark/monitors32.png +0 -0
  559. psychopy/app/Resources/dark/monitors32@2x.png +0 -0
  560. psychopy/app/Resources/dark/monitors@2x.png +0 -0
  561. psychopy/app/Resources/dark/orangedot.png +0 -0
  562. psychopy/app/Resources/dark/orangedot@2x.png +0 -0
  563. psychopy/app/Resources/dark/pavlovia.png +0 -0
  564. psychopy/app/Resources/dark/pavlovia16.png +0 -0
  565. psychopy/app/Resources/dark/pavlovia16@2x.png +0 -0
  566. psychopy/app/Resources/dark/pavlovia@2x.png +0 -0
  567. psychopy/app/Resources/dark/pavsync.png +0 -0
  568. psychopy/app/Resources/dark/pavsync@2x.png +0 -0
  569. psychopy/app/Resources/dark/person_off.png +0 -0
  570. psychopy/app/Resources/dark/person_off@2x.png +0 -0
  571. psychopy/app/Resources/dark/person_on.png +0 -0
  572. psychopy/app/Resources/dark/person_on@2x.png +0 -0
  573. psychopy/app/Resources/dark/photometer.png +0 -0
  574. psychopy/app/Resources/dark/photometer@2x.png +0 -0
  575. psychopy/app/Resources/dark/plugin16.png +0 -0
  576. psychopy/app/Resources/dark/plugin16@2x.png +0 -0
  577. psychopy/app/Resources/dark/plugins32.png +0 -0
  578. psychopy/app/Resources/dark/plugins32@2x.png +0 -0
  579. psychopy/app/Resources/dark/plus.png +0 -0
  580. psychopy/app/Resources/dark/plus@2x.png +0 -0
  581. psychopy/app/Resources/dark/preferences-app.png +0 -0
  582. psychopy/app/Resources/dark/preferences-app48.png +0 -0
  583. psychopy/app/Resources/dark/preferences-app48@2x.png +0 -0
  584. psychopy/app/Resources/dark/preferences-app@2x.png +0 -0
  585. psychopy/app/Resources/dark/preferences-conn.png +0 -0
  586. psychopy/app/Resources/dark/preferences-conn48.png +0 -0
  587. psychopy/app/Resources/dark/preferences-conn48@2x.png +0 -0
  588. psychopy/app/Resources/dark/preferences-conn@2x.png +0 -0
  589. psychopy/app/Resources/dark/preferences-debug.png +0 -0
  590. psychopy/app/Resources/dark/preferences-debug@2x.png +0 -0
  591. psychopy/app/Resources/dark/preferences-general.png +0 -0
  592. psychopy/app/Resources/dark/preferences-general48.png +0 -0
  593. psychopy/app/Resources/dark/preferences-general48@2x.png +0 -0
  594. psychopy/app/Resources/dark/preferences-general@2x.png +0 -0
  595. psychopy/app/Resources/dark/preferences-hardware.png +0 -0
  596. psychopy/app/Resources/dark/preferences-hardware48.png +0 -0
  597. psychopy/app/Resources/dark/preferences-hardware48@2x.png +0 -0
  598. psychopy/app/Resources/dark/preferences-hardware@2x.png +0 -0
  599. psychopy/app/Resources/dark/preferences-keyboard.png +0 -0
  600. psychopy/app/Resources/dark/preferences-keyboard48.png +0 -0
  601. psychopy/app/Resources/dark/preferences-keyboard48@2x.png +0 -0
  602. psychopy/app/Resources/dark/preferences-keyboard@2x.png +0 -0
  603. psychopy/app/Resources/dark/preferences-pilot.png +0 -0
  604. psychopy/app/Resources/dark/preferences-pilot@2x.png +0 -0
  605. psychopy/app/Resources/dark/preferences32.png +0 -0
  606. psychopy/app/Resources/dark/preferences32@2x.png +0 -0
  607. psychopy/app/Resources/dark/pyPilot.png +0 -0
  608. psychopy/app/Resources/dark/pyPilot@2x.png +0 -0
  609. psychopy/app/Resources/dark/pyRun.png +0 -0
  610. psychopy/app/Resources/dark/pyRun@2x.png +0 -0
  611. psychopy/app/Resources/dark/reddot.png +0 -0
  612. psychopy/app/Resources/dark/reddot@2x.png +0 -0
  613. psychopy/app/Resources/dark/redglobe.png +0 -0
  614. psychopy/app/Resources/dark/redglobe@2x.png +0 -0
  615. psychopy/app/Resources/dark/redglobe_bug.png +0 -0
  616. psychopy/app/Resources/dark/redglobe_bug@2x.png +0 -0
  617. psychopy/app/Resources/dark/redglobe_greensync.png +0 -0
  618. psychopy/app/Resources/dark/redglobe_greensync@2x.png +0 -0
  619. psychopy/app/Resources/dark/redglobe_info.png +0 -0
  620. psychopy/app/Resources/dark/redglobe_info@2x.png +0 -0
  621. psychopy/app/Resources/dark/redglobe_magnifier.png +0 -0
  622. psychopy/app/Resources/dark/redglobe_magnifier@2x.png +0 -0
  623. psychopy/app/Resources/dark/redglobe_run.png +0 -0
  624. psychopy/app/Resources/dark/redglobe_run@2x.png +0 -0
  625. psychopy/app/Resources/dark/redglobe_user.png +0 -0
  626. psychopy/app/Resources/dark/redglobe_user@2x.png +0 -0
  627. psychopy/app/Resources/dark/redo.png +0 -0
  628. psychopy/app/Resources/dark/redo32.png +0 -0
  629. psychopy/app/Resources/dark/redo32@2x.png +0 -0
  630. psychopy/app/Resources/dark/redo@2x.png +0 -0
  631. psychopy/app/Resources/dark/regex.png +0 -0
  632. psychopy/app/Resources/dark/regex@2x.png +0 -0
  633. psychopy/app/Resources/dark/removeExp32.png +0 -0
  634. psychopy/app/Resources/dark/removeExp32@2x.png +0 -0
  635. psychopy/app/Resources/dark/rename16.png +0 -0
  636. psychopy/app/Resources/dark/rename16@2x.png +0 -0
  637. psychopy/app/Resources/dark/restart.png +0 -0
  638. psychopy/app/Resources/dark/restart@2x.png +0 -0
  639. psychopy/app/Resources/dark/runner.png +0 -0
  640. psychopy/app/Resources/dark/runner@2x.png +0 -0
  641. psychopy/app/Resources/dark/runnerPilot.png +0 -0
  642. psychopy/app/Resources/dark/runnerPilot@2x.png +0 -0
  643. psychopy/app/Resources/dark/savebtn16.png +0 -0
  644. psychopy/app/Resources/dark/savebtn16@2x.png +0 -0
  645. psychopy/app/Resources/dark/search.png +0 -0
  646. psychopy/app/Resources/dark/search@2x.png +0 -0
  647. psychopy/app/Resources/dark/showBuilder.png +0 -0
  648. psychopy/app/Resources/dark/showBuilder@2x.png +0 -0
  649. psychopy/app/Resources/dark/showCoder.png +0 -0
  650. psychopy/app/Resources/dark/showCoder@2x.png +0 -0
  651. psychopy/app/Resources/dark/showRunner.png +0 -0
  652. psychopy/app/Resources/dark/showRunner@2x.png +0 -0
  653. psychopy/app/Resources/dark/starred.png +0 -0
  654. psychopy/app/Resources/dark/starred@2x.png +0 -0
  655. psychopy/app/Resources/dark/start.png +0 -0
  656. psychopy/app/Resources/dark/start@2x.png +0 -0
  657. psychopy/app/Resources/dark/stdout.png +0 -0
  658. psychopy/app/Resources/dark/stdout@2x.png +0 -0
  659. psychopy/app/Resources/dark/stop.png +0 -0
  660. psychopy/app/Resources/dark/stop32.png +0 -0
  661. psychopy/app/Resources/dark/stop32@2x.png +0 -0
  662. psychopy/app/Resources/dark/stop@2x.png +0 -0
  663. psychopy/app/Resources/dark/switchCtrlBot.png +0 -0
  664. psychopy/app/Resources/dark/switchCtrlBot@2x.png +0 -0
  665. psychopy/app/Resources/dark/switchCtrlLeft.png +0 -0
  666. psychopy/app/Resources/dark/switchCtrlLeft@2x.png +0 -0
  667. psychopy/app/Resources/dark/switchCtrlRight.png +0 -0
  668. psychopy/app/Resources/dark/switchCtrlRight@2x.png +0 -0
  669. psychopy/app/Resources/dark/switchCtrlTop.png +0 -0
  670. psychopy/app/Resources/dark/switchCtrlTop@2x.png +0 -0
  671. psychopy/app/Resources/dark/tick.png +0 -0
  672. psychopy/app/Resources/dark/tick@2x.png +0 -0
  673. psychopy/app/Resources/dark/undo.png +0 -0
  674. psychopy/app/Resources/dark/undo32.png +0 -0
  675. psychopy/app/Resources/dark/undo32@2x.png +0 -0
  676. psychopy/app/Resources/dark/undo@2x.png +0 -0
  677. psychopy/app/Resources/dark/unstarred.png +0 -0
  678. psychopy/app/Resources/dark/unstarred@2x.png +0 -0
  679. psychopy/app/Resources/dark/user_none.png +0 -0
  680. psychopy/app/Resources/dark/view-refresh16.png +0 -0
  681. psychopy/app/Resources/dark/view-refresh16@2x.png +0 -0
  682. psychopy/app/Resources/dark/viewbtn16.png +0 -0
  683. psychopy/app/Resources/dark/viewbtn16@2x.png +0 -0
  684. psychopy/app/Resources/dark/windows16.png +0 -0
  685. psychopy/app/Resources/dark/windows16@2x.png +0 -0
  686. psychopy/app/Resources/light/FlowBottom_CompLeft.png +0 -0
  687. psychopy/app/Resources/light/FlowBottom_CompRight.png +0 -0
  688. psychopy/app/Resources/light/FlowTop_CompLeft.png +0 -0
  689. psychopy/app/Resources/light/FlowTop_CompRight.png +0 -0
  690. psychopy/app/Resources/light/README.txt +3 -0
  691. psychopy/app/Resources/light/__init__.py +0 -0
  692. psychopy/app/Resources/light/add.png +0 -0
  693. psychopy/app/Resources/light/add@2x.png +0 -0
  694. psychopy/app/Resources/light/addExp32.png +0 -0
  695. psychopy/app/Resources/light/addExp32@2x.png +0 -0
  696. psychopy/app/Resources/light/add_many.png +0 -0
  697. psychopy/app/Resources/light/add_many@2x.png +0 -0
  698. psychopy/app/Resources/light/alerts.png +0 -0
  699. psychopy/app/Resources/light/alerts@2x.png +0 -0
  700. psychopy/app/Resources/light/beta.png +0 -0
  701. psychopy/app/Resources/light/beta@2x.png +0 -0
  702. psychopy/app/Resources/light/browser.png +0 -0
  703. psychopy/app/Resources/light/browser@2x.png +0 -0
  704. psychopy/app/Resources/light/bug16.png +0 -0
  705. psychopy/app/Resources/light/bug16@2x.png +0 -0
  706. psychopy/app/Resources/light/case.png +0 -0
  707. psychopy/app/Resources/light/case@2x.png +0 -0
  708. psychopy/app/Resources/light/circle_mask.png +0 -0
  709. psychopy/app/Resources/light/circle_mask@2x.png +0 -0
  710. psychopy/app/Resources/light/clear.png +0 -0
  711. psychopy/app/Resources/light/clear@2x.png +0 -0
  712. psychopy/app/Resources/light/coderclass16.png +0 -0
  713. psychopy/app/Resources/light/coderclass16@2x.png +0 -0
  714. psychopy/app/Resources/light/coderfunc16.png +0 -0
  715. psychopy/app/Resources/light/coderfunc16@2x.png +0 -0
  716. psychopy/app/Resources/light/coderimport16.png +0 -0
  717. psychopy/app/Resources/light/coderimport16@2x.png +0 -0
  718. psychopy/app/Resources/light/coderjs.png +0 -0
  719. psychopy/app/Resources/light/coderjs@2x.png +0 -0
  720. psychopy/app/Resources/light/coderpython.png +0 -0
  721. psychopy/app/Resources/light/coderpython@2x.png +0 -0
  722. psychopy/app/Resources/light/codervar16.png +0 -0
  723. psychopy/app/Resources/light/codervar16@2x.png +0 -0
  724. psychopy/app/Resources/light/cogwindow32.png +0 -0
  725. psychopy/app/Resources/light/cogwindow32@2x.png +0 -0
  726. psychopy/app/Resources/light/color16.png +0 -0
  727. psychopy/app/Resources/light/color16@2x.png +0 -0
  728. psychopy/app/Resources/light/color32.png +0 -0
  729. psychopy/app/Resources/light/color32@2x.png +0 -0
  730. psychopy/app/Resources/light/compile_js.png +0 -0
  731. psychopy/app/Resources/light/compile_js@2x.png +0 -0
  732. psychopy/app/Resources/light/compile_py.png +0 -0
  733. psychopy/app/Resources/light/compile_py@2x.png +0 -0
  734. psychopy/app/Resources/light/copy16.png +0 -0
  735. psychopy/app/Resources/light/copy16@2x.png +0 -0
  736. psychopy/app/Resources/light/currentFile16.png +0 -0
  737. psychopy/app/Resources/light/currentFile16@2x.png +0 -0
  738. psychopy/app/Resources/light/delete16.png +0 -0
  739. psychopy/app/Resources/light/delete16@2x.png +0 -0
  740. psychopy/app/Resources/light/delete8.png +0 -0
  741. psychopy/app/Resources/light/desktop.png +0 -0
  742. psychopy/app/Resources/light/desktop@2x.png +0 -0
  743. psychopy/app/Resources/light/devices.png +0 -0
  744. psychopy/app/Resources/light/devices@2x.png +0 -0
  745. psychopy/app/Resources/light/dirup16.png +0 -0
  746. psychopy/app/Resources/light/dirup16@2x.png +0 -0
  747. psychopy/app/Resources/light/docclose16.png +0 -0
  748. psychopy/app/Resources/light/docclose16@2x.png +0 -0
  749. psychopy/app/Resources/light/download.png +0 -0
  750. psychopy/app/Resources/light/download@2x.png +0 -0
  751. psychopy/app/Resources/light/edit.png +0 -0
  752. psychopy/app/Resources/light/edit@2x.png +0 -0
  753. psychopy/app/Resources/light/editbtn16.png +0 -0
  754. psychopy/app/Resources/light/editbtn16@2x.png +0 -0
  755. psychopy/app/Resources/light/email.png +0 -0
  756. psychopy/app/Resources/light/email@2x.png +0 -0
  757. psychopy/app/Resources/light/experiment.png +0 -0
  758. psychopy/app/Resources/light/experiment@2x.png +0 -0
  759. psychopy/app/Resources/light/expsettings.png +0 -0
  760. psychopy/app/Resources/light/expsettings@2x.png +0 -0
  761. psychopy/app/Resources/light/file.png +0 -0
  762. psychopy/app/Resources/light/file@2x.png +0 -0
  763. psychopy/app/Resources/light/fileaudio.png +0 -0
  764. psychopy/app/Resources/light/fileaudio@2x.png +0 -0
  765. psychopy/app/Resources/light/filecss.png +0 -0
  766. psychopy/app/Resources/light/filecss@2x.png +0 -0
  767. psychopy/app/Resources/light/filecsv.png +0 -0
  768. psychopy/app/Resources/light/filecsv@2x.png +0 -0
  769. psychopy/app/Resources/light/filedesign.png +0 -0
  770. psychopy/app/Resources/light/filedesign@2x.png +0 -0
  771. psychopy/app/Resources/light/filefont.png +0 -0
  772. psychopy/app/Resources/light/filefont@2x.png +0 -0
  773. psychopy/app/Resources/light/filegit.png +0 -0
  774. psychopy/app/Resources/light/filegit@2x.png +0 -0
  775. psychopy/app/Resources/light/filehtml.png +0 -0
  776. psychopy/app/Resources/light/filehtml@2x.png +0 -0
  777. psychopy/app/Resources/light/fileimage.png +0 -0
  778. psychopy/app/Resources/light/fileimage@2x.png +0 -0
  779. psychopy/app/Resources/light/fileinfo.png +0 -0
  780. psychopy/app/Resources/light/fileinfo@2x.png +0 -0
  781. psychopy/app/Resources/light/filejs.png +0 -0
  782. psychopy/app/Resources/light/filejs@2x.png +0 -0
  783. psychopy/app/Resources/light/filejson.png +0 -0
  784. psychopy/app/Resources/light/filejson@2x.png +0 -0
  785. psychopy/app/Resources/light/filenew.png +0 -0
  786. psychopy/app/Resources/light/filenew32.png +0 -0
  787. psychopy/app/Resources/light/filenew32@2x.png +0 -0
  788. psychopy/app/Resources/light/filenew@2x.png +0 -0
  789. psychopy/app/Resources/light/fileopen.png +0 -0
  790. psychopy/app/Resources/light/fileopen32.png +0 -0
  791. psychopy/app/Resources/light/fileopen32@2x.png +0 -0
  792. psychopy/app/Resources/light/fileopen@2x.png +0 -0
  793. psychopy/app/Resources/light/filepkg.png +0 -0
  794. psychopy/app/Resources/light/filepkg@2x.png +0 -0
  795. psychopy/app/Resources/light/filepsyexp.png +0 -0
  796. psychopy/app/Resources/light/filepsyexp@2x.png +0 -0
  797. psychopy/app/Resources/light/filepy.png +0 -0
  798. psychopy/app/Resources/light/filepy@2x.png +0 -0
  799. psychopy/app/Resources/light/filesave.png +0 -0
  800. psychopy/app/Resources/light/filesave32.png +0 -0
  801. psychopy/app/Resources/light/filesave32@2x.png +0 -0
  802. psychopy/app/Resources/light/filesave@2x.png +0 -0
  803. psychopy/app/Resources/light/filesaveas.png +0 -0
  804. psychopy/app/Resources/light/filesaveas32.png +0 -0
  805. psychopy/app/Resources/light/filesaveas32@2x.png +0 -0
  806. psychopy/app/Resources/light/filesaveas@2x.png +0 -0
  807. psychopy/app/Resources/light/filetxt.png +0 -0
  808. psychopy/app/Resources/light/filetxt@2x.png +0 -0
  809. psychopy/app/Resources/light/fileunknown.png +0 -0
  810. psychopy/app/Resources/light/fileunknown@2x.png +0 -0
  811. psychopy/app/Resources/light/filevideo.png +0 -0
  812. psychopy/app/Resources/light/filevideo@2x.png +0 -0
  813. psychopy/app/Resources/light/filter.png +0 -0
  814. psychopy/app/Resources/light/filter@2x.png +0 -0
  815. psychopy/app/Resources/light/find.png +0 -0
  816. psychopy/app/Resources/light/find@2x.png +0 -0
  817. psychopy/app/Resources/light/folder-open16.png +0 -0
  818. psychopy/app/Resources/light/folder-open16@2x.png +0 -0
  819. psychopy/app/Resources/light/folder16.png +0 -0
  820. psychopy/app/Resources/light/folder16@2x.png +0 -0
  821. psychopy/app/Resources/light/foldernew16.png +0 -0
  822. psychopy/app/Resources/light/foldernew16@2x.png +0 -0
  823. psychopy/app/Resources/light/fork.png +0 -0
  824. psychopy/app/Resources/light/fork@2x.png +0 -0
  825. psychopy/app/Resources/light/github.png +0 -0
  826. psychopy/app/Resources/light/github@2x.png +0 -0
  827. psychopy/app/Resources/light/globe.png +0 -0
  828. psychopy/app/Resources/light/globe@2x.png +0 -0
  829. psychopy/app/Resources/light/globe_bug.png +0 -0
  830. psychopy/app/Resources/light/globe_bug@2x.png +0 -0
  831. psychopy/app/Resources/light/globe_greensync.png +0 -0
  832. psychopy/app/Resources/light/globe_greensync@2x.png +0 -0
  833. psychopy/app/Resources/light/globe_info.png +0 -0
  834. psychopy/app/Resources/light/globe_info@2x.png +0 -0
  835. psychopy/app/Resources/light/globe_magnifier.png +0 -0
  836. psychopy/app/Resources/light/globe_magnifier@2x.png +0 -0
  837. psychopy/app/Resources/light/globe_run.png +0 -0
  838. psychopy/app/Resources/light/globe_run@2x.png +0 -0
  839. psychopy/app/Resources/light/globe_user.png +0 -0
  840. psychopy/app/Resources/light/globe_user@2x.png +0 -0
  841. psychopy/app/Resources/light/goto16.png +0 -0
  842. psychopy/app/Resources/light/goto16@2x.png +0 -0
  843. psychopy/app/Resources/light/greendot.png +0 -0
  844. psychopy/app/Resources/light/greendot@2x.png +0 -0
  845. psychopy/app/Resources/light/greenglobe.png +0 -0
  846. psychopy/app/Resources/light/greenglobe@2x.png +0 -0
  847. psychopy/app/Resources/light/greenglobe_bug.png +0 -0
  848. psychopy/app/Resources/light/greenglobe_bug@2x.png +0 -0
  849. psychopy/app/Resources/light/greenglobe_greensync.png +0 -0
  850. psychopy/app/Resources/light/greenglobe_greensync@2x.png +0 -0
  851. psychopy/app/Resources/light/greenglobe_info.png +0 -0
  852. psychopy/app/Resources/light/greenglobe_info@2x.png +0 -0
  853. psychopy/app/Resources/light/greenglobe_magnifier.png +0 -0
  854. psychopy/app/Resources/light/greenglobe_magnifier@2x.png +0 -0
  855. psychopy/app/Resources/light/greenglobe_run.png +0 -0
  856. psychopy/app/Resources/light/greenglobe_run@2x.png +0 -0
  857. psychopy/app/Resources/light/greenglobe_user.png +0 -0
  858. psychopy/app/Resources/light/greenglobe_user@2x.png +0 -0
  859. psychopy/app/Resources/light/greydot.png +0 -0
  860. psychopy/app/Resources/light/greydot@2x.png +0 -0
  861. psychopy/app/Resources/light/greytick.png +0 -0
  862. psychopy/app/Resources/light/greytick@2x.png +0 -0
  863. psychopy/app/Resources/light/invalid_img.png +0 -0
  864. psychopy/app/Resources/light/jsPilot.png +0 -0
  865. psychopy/app/Resources/light/jsPilot@2x.png +0 -0
  866. psychopy/app/Resources/light/jsRun.png +0 -0
  867. psychopy/app/Resources/light/jsRun@2x.png +0 -0
  868. psychopy/app/Resources/light/libroot16.png +0 -0
  869. psychopy/app/Resources/light/libroot16@2x.png +0 -0
  870. psychopy/app/Resources/light/loop.png +0 -0
  871. psychopy/app/Resources/light/loop@2x.png +0 -0
  872. psychopy/app/Resources/light/monitor16.png +0 -0
  873. psychopy/app/Resources/light/monitor16@2x.png +0 -0
  874. psychopy/app/Resources/light/monitors.png +0 -0
  875. psychopy/app/Resources/light/monitors32.png +0 -0
  876. psychopy/app/Resources/light/monitors32@2x.png +0 -0
  877. psychopy/app/Resources/light/monitors@2x.png +0 -0
  878. psychopy/app/Resources/light/orangedot.png +0 -0
  879. psychopy/app/Resources/light/orangedot@2x.png +0 -0
  880. psychopy/app/Resources/light/pavlovia.png +0 -0
  881. psychopy/app/Resources/light/pavlovia16.png +0 -0
  882. psychopy/app/Resources/light/pavlovia16@2x.png +0 -0
  883. psychopy/app/Resources/light/pavlovia@2x.png +0 -0
  884. psychopy/app/Resources/light/pavsync.png +0 -0
  885. psychopy/app/Resources/light/pavsync@2x.png +0 -0
  886. psychopy/app/Resources/light/person_off.png +0 -0
  887. psychopy/app/Resources/light/person_off@2x.png +0 -0
  888. psychopy/app/Resources/light/person_on.png +0 -0
  889. psychopy/app/Resources/light/person_on@2x.png +0 -0
  890. psychopy/app/Resources/light/photometer.png +0 -0
  891. psychopy/app/Resources/light/photometer@2x.png +0 -0
  892. psychopy/app/Resources/light/plugin16.png +0 -0
  893. psychopy/app/Resources/light/plugin16@2x.png +0 -0
  894. psychopy/app/Resources/light/plugins32.png +0 -0
  895. psychopy/app/Resources/light/plugins32@2x.png +0 -0
  896. psychopy/app/Resources/light/plus.png +0 -0
  897. psychopy/app/Resources/light/plus@2x.png +0 -0
  898. psychopy/app/Resources/light/preferences-app.png +0 -0
  899. psychopy/app/Resources/light/preferences-app48.png +0 -0
  900. psychopy/app/Resources/light/preferences-app48@2x.png +0 -0
  901. psychopy/app/Resources/light/preferences-app@2x.png +0 -0
  902. psychopy/app/Resources/light/preferences-conn.png +0 -0
  903. psychopy/app/Resources/light/preferences-conn48.png +0 -0
  904. psychopy/app/Resources/light/preferences-conn48@2x.png +0 -0
  905. psychopy/app/Resources/light/preferences-conn@2x.png +0 -0
  906. psychopy/app/Resources/light/preferences-general.png +0 -0
  907. psychopy/app/Resources/light/preferences-general48.png +0 -0
  908. psychopy/app/Resources/light/preferences-general48@2x.png +0 -0
  909. psychopy/app/Resources/light/preferences-general@2x.png +0 -0
  910. psychopy/app/Resources/light/preferences-hardware.png +0 -0
  911. psychopy/app/Resources/light/preferences-hardware48.png +0 -0
  912. psychopy/app/Resources/light/preferences-hardware48@2x.png +0 -0
  913. psychopy/app/Resources/light/preferences-hardware@2x.png +0 -0
  914. psychopy/app/Resources/light/preferences-keyboard.png +0 -0
  915. psychopy/app/Resources/light/preferences-keyboard48.png +0 -0
  916. psychopy/app/Resources/light/preferences-keyboard48@2x.png +0 -0
  917. psychopy/app/Resources/light/preferences-keyboard@2x.png +0 -0
  918. psychopy/app/Resources/light/preferences-pilot.png +0 -0
  919. psychopy/app/Resources/light/preferences-pilot@2x.png +0 -0
  920. psychopy/app/Resources/light/preferences32.png +0 -0
  921. psychopy/app/Resources/light/preferences32@2x.png +0 -0
  922. psychopy/app/Resources/light/pyPilot.png +0 -0
  923. psychopy/app/Resources/light/pyPilot@2x.png +0 -0
  924. psychopy/app/Resources/light/pyRun.png +0 -0
  925. psychopy/app/Resources/light/pyRun@2x.png +0 -0
  926. psychopy/app/Resources/light/reddot.png +0 -0
  927. psychopy/app/Resources/light/reddot@2x.png +0 -0
  928. psychopy/app/Resources/light/redglobe.png +0 -0
  929. psychopy/app/Resources/light/redglobe@2x.png +0 -0
  930. psychopy/app/Resources/light/redglobe_bug.png +0 -0
  931. psychopy/app/Resources/light/redglobe_bug@2x.png +0 -0
  932. psychopy/app/Resources/light/redglobe_greensync.png +0 -0
  933. psychopy/app/Resources/light/redglobe_greensync@2x.png +0 -0
  934. psychopy/app/Resources/light/redglobe_info.png +0 -0
  935. psychopy/app/Resources/light/redglobe_info@2x.png +0 -0
  936. psychopy/app/Resources/light/redglobe_magnifier.png +0 -0
  937. psychopy/app/Resources/light/redglobe_magnifier@2x.png +0 -0
  938. psychopy/app/Resources/light/redglobe_run.png +0 -0
  939. psychopy/app/Resources/light/redglobe_run@2x.png +0 -0
  940. psychopy/app/Resources/light/redglobe_user.png +0 -0
  941. psychopy/app/Resources/light/redglobe_user@2x.png +0 -0
  942. psychopy/app/Resources/light/redo.png +0 -0
  943. psychopy/app/Resources/light/redo32.png +0 -0
  944. psychopy/app/Resources/light/redo32@2x.png +0 -0
  945. psychopy/app/Resources/light/redo@2x.png +0 -0
  946. psychopy/app/Resources/light/regex.png +0 -0
  947. psychopy/app/Resources/light/regex@2x.png +0 -0
  948. psychopy/app/Resources/light/removeExp32.png +0 -0
  949. psychopy/app/Resources/light/removeExp32@2x.png +0 -0
  950. psychopy/app/Resources/light/rename16.png +0 -0
  951. psychopy/app/Resources/light/rename16@2x.png +0 -0
  952. psychopy/app/Resources/light/restart.png +0 -0
  953. psychopy/app/Resources/light/restart@2x.png +0 -0
  954. psychopy/app/Resources/light/runner.png +0 -0
  955. psychopy/app/Resources/light/runner@2x.png +0 -0
  956. psychopy/app/Resources/light/runnerPilot.png +0 -0
  957. psychopy/app/Resources/light/runnerPilot@2x.png +0 -0
  958. psychopy/app/Resources/light/savebtn16.png +0 -0
  959. psychopy/app/Resources/light/savebtn16@2x.png +0 -0
  960. psychopy/app/Resources/light/search.png +0 -0
  961. psychopy/app/Resources/light/search@2x.png +0 -0
  962. psychopy/app/Resources/light/showBuilder.png +0 -0
  963. psychopy/app/Resources/light/showBuilder@2x.png +0 -0
  964. psychopy/app/Resources/light/showCoder.png +0 -0
  965. psychopy/app/Resources/light/showCoder@2x.png +0 -0
  966. psychopy/app/Resources/light/showRunner.png +0 -0
  967. psychopy/app/Resources/light/showRunner@2x.png +0 -0
  968. psychopy/app/Resources/light/starred.png +0 -0
  969. psychopy/app/Resources/light/starred@2x.png +0 -0
  970. psychopy/app/Resources/light/start.png +0 -0
  971. psychopy/app/Resources/light/start@2x.png +0 -0
  972. psychopy/app/Resources/light/stdout.png +0 -0
  973. psychopy/app/Resources/light/stdout@2x.png +0 -0
  974. psychopy/app/Resources/light/stop.png +0 -0
  975. psychopy/app/Resources/light/stop32.png +0 -0
  976. psychopy/app/Resources/light/stop32@2x.png +0 -0
  977. psychopy/app/Resources/light/stop@2x.png +0 -0
  978. psychopy/app/Resources/light/switchCtrlBot.png +0 -0
  979. psychopy/app/Resources/light/switchCtrlBot@2x.png +0 -0
  980. psychopy/app/Resources/light/switchCtrlLeft.png +0 -0
  981. psychopy/app/Resources/light/switchCtrlLeft@2x.png +0 -0
  982. psychopy/app/Resources/light/switchCtrlRight.png +0 -0
  983. psychopy/app/Resources/light/switchCtrlRight@2x.png +0 -0
  984. psychopy/app/Resources/light/switchCtrlTop.png +0 -0
  985. psychopy/app/Resources/light/switchCtrlTop@2x.png +0 -0
  986. psychopy/app/Resources/light/tick.png +0 -0
  987. psychopy/app/Resources/light/tick@2x.png +0 -0
  988. psychopy/app/Resources/light/undo.png +0 -0
  989. psychopy/app/Resources/light/undo32.png +0 -0
  990. psychopy/app/Resources/light/undo32@2x.png +0 -0
  991. psychopy/app/Resources/light/undo@2x.png +0 -0
  992. psychopy/app/Resources/light/unstarred.png +0 -0
  993. psychopy/app/Resources/light/unstarred@2x.png +0 -0
  994. psychopy/app/Resources/light/user_none.png +0 -0
  995. psychopy/app/Resources/light/view-refresh16.png +0 -0
  996. psychopy/app/Resources/light/view-refresh16@2x.png +0 -0
  997. psychopy/app/Resources/light/viewbtn16.png +0 -0
  998. psychopy/app/Resources/light/viewbtn16@2x.png +0 -0
  999. psychopy/app/Resources/light/windows16.png +0 -0
  1000. psychopy/app/Resources/light/windows16@2x.png +0 -0
  1001. psychopy/app/Resources/moveComponentIcons.py +50 -0
  1002. psychopy/app/Resources/psychopy.desktop +13 -0
  1003. psychopy/app/Resources/psychopy.icns +0 -0
  1004. psychopy/app/Resources/psychopy.ico +0 -0
  1005. psychopy/app/Resources/psychopy.png +0 -0
  1006. psychopy/app/Resources/psychopy.xml +9 -0
  1007. psychopy/app/Resources/psychopy@2x.png +0 -0
  1008. psychopy/app/Resources/routine_templates/Basic.psyexp +344 -0
  1009. psychopy/app/Resources/routine_templates/Misc.psyexp +228 -0
  1010. psychopy/app/Resources/routine_templates/Online.psyexp +200 -0
  1011. psychopy/app/Resources/routine_templates/Trials.psyexp +735 -0
  1012. psychopy/app/Resources/routine_templates/readme.md +14 -0
  1013. psychopy/app/Resources/runner.ico +0 -0
  1014. psychopy/app/Resources/splash.png +0 -0
  1015. psychopy/app/Resources/splash@2x.png +0 -0
  1016. psychopy/app/Resources/tips.txt +45 -0
  1017. psychopy/app/Resources/tips_ar_001.txt +45 -0
  1018. psychopy/app/Resources/tips_fr_FR.txt +45 -0
  1019. psychopy/app/Resources/tips_ja_JP.txt +42 -0
  1020. psychopy/app/Resources/tips_zh_CN.txt +45 -0
  1021. psychopy/app/Resources/window.ico +0 -0
  1022. psychopy/app/__init__.py +339 -0
  1023. psychopy/app/__main__.py +3 -0
  1024. psychopy/app/_psychopyApp.py +1298 -0
  1025. psychopy/app/appData.spec +58 -0
  1026. psychopy/app/builder/__init__.py +5 -0
  1027. psychopy/app/builder/builder.py +4738 -0
  1028. psychopy/app/builder/dialogs/__init__.py +1910 -0
  1029. psychopy/app/builder/dialogs/dlgsCode.py +631 -0
  1030. psychopy/app/builder/dialogs/dlgsConditions.py +669 -0
  1031. psychopy/app/builder/dialogs/findDlg.py +275 -0
  1032. psychopy/app/builder/dialogs/paramCtrls.py +1802 -0
  1033. psychopy/app/builder/validators.py +589 -0
  1034. psychopy/app/coder/__init__.py +8 -0
  1035. psychopy/app/coder/codeEditorBase.py +460 -0
  1036. psychopy/app/coder/coder.py +3100 -0
  1037. psychopy/app/coder/fileBrowser.py +714 -0
  1038. psychopy/app/coder/folding.py +128 -0
  1039. psychopy/app/coder/psychoParser.py +139 -0
  1040. psychopy/app/coder/repl.py +496 -0
  1041. psychopy/app/coder/sourceTree.py +302 -0
  1042. psychopy/app/colorpicker/__init__.py +594 -0
  1043. psychopy/app/colorpicker/ui.py +336 -0
  1044. psychopy/app/connections/__init__.py +10 -0
  1045. psychopy/app/connections/news.py +104 -0
  1046. psychopy/app/connections/sendusage.py +61 -0
  1047. psychopy/app/connections/updates.py +642 -0
  1048. psychopy/app/console.py +164 -0
  1049. psychopy/app/deviceManager/__init__.py +1 -0
  1050. psychopy/app/deviceManager/addDialog.py +218 -0
  1051. psychopy/app/deviceManager/dialog.py +185 -0
  1052. psychopy/app/deviceManager/panel.py +191 -0
  1053. psychopy/app/deviceManager/utils.py +60 -0
  1054. psychopy/app/dialogs.py +664 -0
  1055. psychopy/app/errorDlg.py +238 -0
  1056. psychopy/app/frametracker.py +8 -0
  1057. psychopy/app/idle.py +181 -0
  1058. psychopy/app/jobs.py +676 -0
  1059. psychopy/app/linuxconfig/__init__.py +153 -0
  1060. psychopy/app/linuxconfig/ui.py +88 -0
  1061. psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo +0 -0
  1062. psychopy/app/locale/ar_001/LC_MESSAGE/messages.po +12695 -0
  1063. psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.mo +0 -0
  1064. psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.po +10199 -0
  1065. psychopy/app/locale/da_DK/LC_MESSAGE/messages.mo +0 -0
  1066. psychopy/app/locale/da_DK/LC_MESSAGE/messages.po +10199 -0
  1067. psychopy/app/locale/de_DE/LC_MESSAGE/messages.mo +0 -0
  1068. psychopy/app/locale/de_DE/LC_MESSAGE/messages.po +11221 -0
  1069. psychopy/app/locale/el_GR/LC_MESSAGE/messages.mo +0 -0
  1070. psychopy/app/locale/el_GR/LC_MESSAGE/messages.po +10200 -0
  1071. psychopy/app/locale/en_NZ/LC_MESSAGE/messages.mo +0 -0
  1072. psychopy/app/locale/en_NZ/LC_MESSAGE/messages.po +10200 -0
  1073. psychopy/app/locale/en_US/LC_MESSAGE/messages.mo +0 -0
  1074. psychopy/app/locale/en_US/LC_MESSAGE/messages.po +10195 -0
  1075. psychopy/app/locale/es_CO/LC_MESSAGE/messages.mo +0 -0
  1076. psychopy/app/locale/es_CO/LC_MESSAGE/messages.po +11917 -0
  1077. psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo +0 -0
  1078. psychopy/app/locale/es_ES/LC_MESSAGE/messages.po +11924 -0
  1079. psychopy/app/locale/es_US/LC_MESSAGE/messages.mo +0 -0
  1080. psychopy/app/locale/es_US/LC_MESSAGE/messages.po +11917 -0
  1081. psychopy/app/locale/et_EE/LC_MESSAGE/messages.mo +0 -0
  1082. psychopy/app/locale/et_EE/LC_MESSAGE/messages.po +11084 -0
  1083. psychopy/app/locale/fa_IR/LC_MESSAGE/messages.mo +0 -0
  1084. psychopy/app/locale/fa_IR/LC_MESSAGE/messages.po +11590 -0
  1085. psychopy/app/locale/fi_FI/LC_MESSAGE/messages.mo +0 -0
  1086. psychopy/app/locale/fi_FI/LC_MESSAGE/messages.po +10199 -0
  1087. psychopy/app/locale/fr_FR/LC_MESSAGE/messages.mo +0 -0
  1088. psychopy/app/locale/fr_FR/LC_MESSAGE/messages.po +11091 -0
  1089. psychopy/app/locale/he_IL/LC_MESSAGE/messages.mo +0 -0
  1090. psychopy/app/locale/he_IL/LC_MESSAGE/messages.po +11072 -0
  1091. psychopy/app/locale/hi_IN/LC_MESSAGE/messages.mo +0 -0
  1092. psychopy/app/locale/hi_IN/LC_MESSAGE/messages.po +11071 -0
  1093. psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo +0 -0
  1094. psychopy/app/locale/hu_HU/LC_MESSAGE/messages.po +10200 -0
  1095. psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo +0 -0
  1096. psychopy/app/locale/it_IT/LC_MESSAGE/messages.po +11072 -0
  1097. psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo +0 -0
  1098. psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po +11268 -0
  1099. psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo +0 -0
  1100. psychopy/app/locale/ko_KR/LC_MESSAGE/messages.po +10199 -0
  1101. psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo +0 -0
  1102. psychopy/app/locale/ms_MY/LC_MESSAGE/messages.po +11463 -0
  1103. psychopy/app/locale/nl_NL/LC_MESSAGE/messages.mo +0 -0
  1104. psychopy/app/locale/nl_NL/LC_MESSAGE/messages.po +10200 -0
  1105. psychopy/app/locale/nn_NO/LC_MESSAGE/messages.mo +0 -0
  1106. psychopy/app/locale/nn_NO/LC_MESSAGE/messages.po +10200 -0
  1107. psychopy/app/locale/pl_PL/LC_MESSAGE/messages.mo +0 -0
  1108. psychopy/app/locale/pl_PL/LC_MESSAGE/messages.po +10200 -0
  1109. psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo +0 -0
  1110. psychopy/app/locale/pt_PT/LC_MESSAGE/messages.po +11288 -0
  1111. psychopy/app/locale/ro_RO/LC_MESSAGE/messages.mo +0 -0
  1112. psychopy/app/locale/ro_RO/LC_MESSAGE/messages.po +10200 -0
  1113. psychopy/app/locale/ru_RU/LC_MESSAGE/messages.mo +0 -0
  1114. psychopy/app/locale/ru_RU/LC_MESSAGE/messages.po +10199 -0
  1115. psychopy/app/locale/sv_SE/LC_MESSAGE/messages.mo +0 -0
  1116. psychopy/app/locale/sv_SE/LC_MESSAGE/messages.po +11441 -0
  1117. psychopy/app/locale/tr_TR/LC_MESSAGE/messages.mo +0 -0
  1118. psychopy/app/locale/tr_TR/LC_MESSAGE/messages.po +11069 -0
  1119. psychopy/app/locale/zh_CN/LC_MESSAGE/messages.mo +0 -0
  1120. psychopy/app/locale/zh_CN/LC_MESSAGE/messages.po +12085 -0
  1121. psychopy/app/locale/zh_TW/LC_MESSAGE/messages.mo +0 -0
  1122. psychopy/app/locale/zh_TW/LC_MESSAGE/messages.po +11929 -0
  1123. psychopy/app/localizedStrings.py +386 -0
  1124. psychopy/app/pavlovia_ui/__init__.py +22 -0
  1125. psychopy/app/pavlovia_ui/_base.py +268 -0
  1126. psychopy/app/pavlovia_ui/functions.py +176 -0
  1127. psychopy/app/pavlovia_ui/menu.py +140 -0
  1128. psychopy/app/pavlovia_ui/project.py +943 -0
  1129. psychopy/app/pavlovia_ui/search.py +444 -0
  1130. psychopy/app/pavlovia_ui/sync.py +137 -0
  1131. psychopy/app/pavlovia_ui/user.py +264 -0
  1132. psychopy/app/plugin_manager/__init__.py +5 -0
  1133. psychopy/app/plugin_manager/dialog.py +402 -0
  1134. psychopy/app/plugin_manager/output.py +132 -0
  1135. psychopy/app/plugin_manager/packageIndex.py +303 -0
  1136. psychopy/app/plugin_manager/packages.py +643 -0
  1137. psychopy/app/plugin_manager/plugins.py +1363 -0
  1138. psychopy/app/plugin_manager/utils.py +115 -0
  1139. psychopy/app/preferencesDlg.py +771 -0
  1140. psychopy/app/psychopyApp.py +207 -0
  1141. psychopy/app/ribbon.py +1019 -0
  1142. psychopy/app/runner/__init__.py +1 -0
  1143. psychopy/app/runner/runner.py +1299 -0
  1144. psychopy/app/runner/scriptProcess.py +363 -0
  1145. psychopy/app/stdout/__init__.py +1 -0
  1146. psychopy/app/stdout/stdOutRich.py +410 -0
  1147. psychopy/app/sysInfoDlg.py +242 -0
  1148. psychopy/app/themes/__init__.py +78 -0
  1149. psychopy/app/themes/colors.py +201 -0
  1150. psychopy/app/themes/css/contrast_black.css +112 -0
  1151. psychopy/app/themes/css/contrast_white.css +115 -0
  1152. psychopy/app/themes/css/dark.css +112 -0
  1153. psychopy/app/themes/css/light.css +115 -0
  1154. psychopy/app/themes/fonts.py +629 -0
  1155. psychopy/app/themes/handlers.py +321 -0
  1156. psychopy/app/themes/icons.py +267 -0
  1157. psychopy/app/themes/spec/Classic.json +154 -0
  1158. psychopy/app/themes/spec/ClassicDark.json +154 -0
  1159. psychopy/app/themes/spec/GitHub.json +154 -0
  1160. psychopy/app/themes/spec/HiVisDark.json +153 -0
  1161. psychopy/app/themes/spec/HiVisLight.json +154 -0
  1162. psychopy/app/themes/spec/MinimalDark.json +154 -0
  1163. psychopy/app/themes/spec/MinimalLight.json +153 -0
  1164. psychopy/app/themes/spec/PsychopyDark.json +231 -0
  1165. psychopy/app/themes/spec/PsychopyLight.json +236 -0
  1166. psychopy/app/themes/ui.py +74 -0
  1167. psychopy/app/ui/__init__.py +184 -0
  1168. psychopy/app/urls.py +31 -0
  1169. psychopy/app/utils.py +1741 -0
  1170. psychopy/app/viewer/__init__.py +0 -0
  1171. psychopy/assets/Psychopy Window Favicon@16w.png +0 -0
  1172. psychopy/assets/Psychopy Window Favicon@32w.png +0 -0
  1173. psychopy/assets/USB-C.png +0 -0
  1174. psychopy/assets/USB.png +0 -0
  1175. psychopy/assets/__init__.py +0 -0
  1176. psychopy/assets/click.png +0 -0
  1177. psychopy/assets/clicknext.png +0 -0
  1178. psychopy/assets/creditCard.png +0 -0
  1179. psychopy/assets/default.mp3 +0 -0
  1180. psychopy/assets/default.mp4 +0 -0
  1181. psychopy/assets/default.png +0 -0
  1182. psychopy/assets/fonts/Arvo-Bold.ttf +0 -0
  1183. psychopy/assets/fonts/Arvo-BoldItalic.ttf +0 -0
  1184. psychopy/assets/fonts/Arvo-Italic.ttf +0 -0
  1185. psychopy/assets/fonts/Arvo-Regular.ttf +0 -0
  1186. psychopy/assets/fonts/DejaVuSerif.ttf +0 -0
  1187. psychopy/assets/fonts/IndieFlower-Regular.ttf +0 -0
  1188. psychopy/assets/fonts/JetBrainsMono-Italic-VariableFont_wght.ttf +0 -0
  1189. psychopy/assets/fonts/JetBrainsMono-VariableFont_wght.ttf +0 -0
  1190. psychopy/assets/fonts/NotoSans-Bold.ttf +0 -0
  1191. psychopy/assets/fonts/NotoSans-BoldItalic.ttf +0 -0
  1192. psychopy/assets/fonts/NotoSans-Italic.ttf +0 -0
  1193. psychopy/assets/fonts/NotoSans-Regular.ttf +0 -0
  1194. psychopy/assets/next.png +0 -0
  1195. psychopy/assets/psychopy.ico +0 -0
  1196. psychopy/assets/psychopy.png +0 -0
  1197. psychopy/assets/templates/__init__.py +0 -0
  1198. psychopy/assets/templates/instruct1.png +0 -0
  1199. psychopy/assets/templates/instruct2.png +0 -0
  1200. psychopy/assets/touch.png +0 -0
  1201. psychopy/assets/touchnext.png +0 -0
  1202. psychopy/assets/voicekeyThresholdStim.wav +0 -0
  1203. psychopy/assets/window.ico +0 -0
  1204. psychopy/changes/2023.1.0.md +9 -0
  1205. psychopy/changes/2024.1.0.md +16 -0
  1206. psychopy/changes/__init__.py +0 -0
  1207. psychopy/clock.py +619 -0
  1208. psychopy/colors.py +1058 -0
  1209. psychopy/compatibility.py +147 -0
  1210. psychopy/constants.py +87 -0
  1211. psychopy/contrib/__init__.py +0 -0
  1212. psychopy/contrib/configobj/LICENSE +39 -0
  1213. psychopy/contrib/configobj/__init__.py +2455 -0
  1214. psychopy/contrib/configobj/_version.py +2 -0
  1215. psychopy/contrib/configobj/validate.py +1458 -0
  1216. psychopy/contrib/lazy_import.py +402 -0
  1217. psychopy/contrib/mseq.py +273 -0
  1218. psychopy/contrib/mseqSearch.py +183 -0
  1219. psychopy/contrib/psi.py +100 -0
  1220. psychopy/contrib/quest.py +484 -0
  1221. psychopy/contrib/tesselate.py +188 -0
  1222. psychopy/core.py +167 -0
  1223. psychopy/data/__init__.py +45 -0
  1224. psychopy/data/base.py +566 -0
  1225. psychopy/data/counterbalance.py +210 -0
  1226. psychopy/data/experiment.py +1049 -0
  1227. psychopy/data/fit.py +248 -0
  1228. psychopy/data/routine.py +94 -0
  1229. psychopy/data/shelf.py +237 -0
  1230. psychopy/data/staircase.py +2270 -0
  1231. psychopy/data/trial.py +2505 -0
  1232. psychopy/data/utils.py +858 -0
  1233. psychopy/demos/__init__.py +0 -0
  1234. psychopy/demos/builder/Design Templates/branchedExperiment/README.md +5 -0
  1235. psychopy/demos/builder/Design Templates/branchedExperiment/branchedExperiment.psyexp +354 -0
  1236. psychopy/demos/builder/Design Templates/branchedExperiment/trialTypes.xlsx +0 -0
  1237. psychopy/demos/builder/Design Templates/psychophysicsStaircase/README.md +20 -0
  1238. psychopy/demos/builder/Design Templates/psychophysicsStaircase/psychophysicsStaircase.psyexp +286 -0
  1239. psychopy/demos/builder/Design Templates/psychophysicsStairsInterleaved/README.md +14 -0
  1240. psychopy/demos/builder/Design Templates/psychophysicsStairsInterleaved/psychophysicsStaircaseInterleaved.psyexp +340 -0
  1241. psychopy/demos/builder/Design Templates/psychophysicsStairsInterleaved/stairDefinitions.xlsx +0 -0
  1242. psychopy/demos/builder/Design Templates/randomisedBlocks/README.md +18 -0
  1243. psychopy/demos/builder/Design Templates/randomisedBlocks/chooseBlock.xlsx +0 -0
  1244. psychopy/demos/builder/Design Templates/randomisedBlocks/facesBlock.xlsx +0 -0
  1245. psychopy/demos/builder/Design Templates/randomisedBlocks/housesBlock.xlsx +0 -0
  1246. psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks.psyexp +219 -0
  1247. psychopy/demos/builder/Design Templates/randomisedBlocks/stims/face01.jpg +0 -0
  1248. psychopy/demos/builder/Design Templates/randomisedBlocks/stims/face02.jpg +0 -0
  1249. psychopy/demos/builder/Design Templates/randomisedBlocks/stims/face03.jpg +0 -0
  1250. psychopy/demos/builder/Design Templates/randomisedBlocks/stims/house01.jpg +0 -0
  1251. psychopy/demos/builder/Design Templates/randomisedBlocks/stims/house02.jpg +0 -0
  1252. psychopy/demos/builder/Design Templates/randomisedBlocks/stims/house03.jpg +0 -0
  1253. psychopy/demos/builder/Experiments/BART/README.md +30 -0
  1254. psychopy/demos/builder/Experiments/BART/assets/background.jpg +0 -0
  1255. psychopy/demos/builder/Experiments/BART/assets/background.png +0 -0
  1256. psychopy/demos/builder/Experiments/BART/assets/bang.mp3 +0 -0
  1257. psychopy/demos/builder/Experiments/BART/assets/bang.wav +0 -0
  1258. psychopy/demos/builder/Experiments/BART/assets/blueBalloon.png +0 -0
  1259. psychopy/demos/builder/Experiments/BART/assets/greenBalloon.png +0 -0
  1260. psychopy/demos/builder/Experiments/BART/assets/redBalloon.png +0 -0
  1261. psychopy/demos/builder/Experiments/BART/bart.psyexp +844 -0
  1262. psychopy/demos/builder/Experiments/BART/spreadsheets/conditions.xlsx +0 -0
  1263. psychopy/demos/builder/Experiments/BigFiveInventory/BFI.psyexp +255 -0
  1264. psychopy/demos/builder/Experiments/BigFiveInventory/README.md +23 -0
  1265. psychopy/demos/builder/Experiments/BigFiveInventory/TIPI.xlsx +0 -0
  1266. psychopy/demos/builder/Experiments/BigFiveInventory/bigFiveItems.xlsx +0 -0
  1267. psychopy/demos/builder/Experiments/BigFiveInventory/demographics.xlsx +0 -0
  1268. psychopy/demos/builder/Experiments/BigFiveInventory/mini_IPIP.xlsx +0 -0
  1269. psychopy/demos/builder/Experiments/GoNoGo/conditions.xlsx +0 -0
  1270. psychopy/demos/builder/Experiments/GoNoGo/gng.psyexp +462 -0
  1271. psychopy/demos/builder/Experiments/GoNoGo/go.png +0 -0
  1272. psychopy/demos/builder/Experiments/GoNoGo/nogo.png +0 -0
  1273. psychopy/demos/builder/Experiments/dragAndDrop/README.md +5 -0
  1274. psychopy/demos/builder/Experiments/dragAndDrop/drag_and_drop.psyexp +494 -0
  1275. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/blank_grid.png +0 -0
  1276. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/make_shapes.psyexp +221 -0
  1277. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/readme.md +4 -0
  1278. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_1.png +0 -0
  1279. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_10.png +0 -0
  1280. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_2.png +0 -0
  1281. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_3.png +0 -0
  1282. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_4.png +0 -0
  1283. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_5.png +0 -0
  1284. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_6.png +0 -0
  1285. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_7.png +0 -0
  1286. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_8.png +0 -0
  1287. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_9.png +0 -0
  1288. psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solutions.xlsx +0 -0
  1289. psychopy/demos/builder/Experiments/goNoGo/readme.md +14 -0
  1290. psychopy/demos/builder/Experiments/mentalRotation/F.png +0 -0
  1291. psychopy/demos/builder/Experiments/mentalRotation/FR.png +0 -0
  1292. psychopy/demos/builder/Experiments/mentalRotation/MentalRot.csv +33 -0
  1293. psychopy/demos/builder/Experiments/mentalRotation/MentalRotation.psyexp +646 -0
  1294. psychopy/demos/builder/Experiments/mentalRotation/README.md +23 -0
  1295. psychopy/demos/builder/Experiments/navon/NavonTask.psyexp +509 -0
  1296. psychopy/demos/builder/Experiments/navon/README.md +26 -0
  1297. psychopy/demos/builder/Experiments/navon/bigHsmallH.png +0 -0
  1298. psychopy/demos/builder/Experiments/navon/bigHsmallS.png +0 -0
  1299. psychopy/demos/builder/Experiments/navon/bigSsmallH.png +0 -0
  1300. psychopy/demos/builder/Experiments/navon/bigSsmallS.png +0 -0
  1301. psychopy/demos/builder/Experiments/navon/mask.png +0 -0
  1302. psychopy/demos/builder/Experiments/navon/stimuli.pptx +0 -0
  1303. psychopy/demos/builder/Experiments/navon/trialTypes.xlsx +0 -0
  1304. psychopy/demos/builder/Experiments/sternberg/README.md +14 -0
  1305. psychopy/demos/builder/Experiments/sternberg/mainTrials.xlsx +0 -0
  1306. psychopy/demos/builder/Experiments/sternberg/pracTrials.xlsx +0 -0
  1307. psychopy/demos/builder/Experiments/sternberg/sternberg.psyexp +649 -0
  1308. psychopy/demos/builder/Experiments/stroop/README.md +15 -0
  1309. psychopy/demos/builder/Experiments/stroop/stroop.psyexp +321 -0
  1310. psychopy/demos/builder/Experiments/stroop/trialTypes.csv +7 -0
  1311. psychopy/demos/builder/Experiments/stroopExtended/README.md +14 -0
  1312. psychopy/demos/builder/Experiments/stroopExtended/stroop.psyexp +418 -0
  1313. psychopy/demos/builder/Experiments/stroopExtended/stroopReverse.psyexp +418 -0
  1314. psychopy/demos/builder/Experiments/stroopExtended/trialTypes.xlsx +0 -0
  1315. psychopy/demos/builder/Experiments/stroopExtended/trialTypesReverse.xlsx +0 -0
  1316. psychopy/demos/builder/Experiments/stroopVoice/README.md +27 -0
  1317. psychopy/demos/builder/Experiments/stroopVoice/conditions.xlsx +0 -0
  1318. psychopy/demos/builder/Experiments/stroopVoice/stroopVoice.psyexp +382 -0
  1319. psychopy/demos/builder/Feature Demos/buttonBox/buttonBoxDemo.psyexp +371 -0
  1320. psychopy/demos/builder/Feature Demos/buttonBox/readme.md +5 -0
  1321. psychopy/demos/builder/Feature Demos/counterbalance/counterbalance.psyexp +308 -0
  1322. psychopy/demos/builder/Feature Demos/gratings/gratings.psyexp +391 -0
  1323. psychopy/demos/builder/Feature Demos/gratings/readme.md +8 -0
  1324. psychopy/demos/builder/Feature Demos/movies/movie.psyexp +220 -0
  1325. psychopy/demos/builder/Feature Demos/movies/readme.md +3 -0
  1326. psychopy/demos/builder/Feature Demos/noise/face.jpg +0 -0
  1327. psychopy/demos/builder/Feature Demos/noise/noise.psyexp +477 -0
  1328. psychopy/demos/builder/Feature Demos/noise/readme.md +3 -0
  1329. psychopy/demos/builder/Feature Demos/panorama/panImg.jpg +0 -0
  1330. psychopy/demos/builder/Feature Demos/panorama/panorama.psyexp +177 -0
  1331. psychopy/demos/builder/Feature Demos/pilotMode/pilotMode.psyexp +434 -0
  1332. psychopy/demos/builder/Feature Demos/pilotMode/readme.md +7 -0
  1333. psychopy/demos/builder/Feature Demos/progress/progressBar.psyexp +451 -0
  1334. psychopy/demos/builder/Feature Demos/progress/readme.md +1 -0
  1335. psychopy/demos/builder/Feature Demos/sliders/README.md +8 -0
  1336. psychopy/demos/builder/Feature Demos/sliders/fruitConditions.xlsx +0 -0
  1337. psychopy/demos/builder/Feature Demos/sliders/sliders.psyexp +984 -0
  1338. psychopy/demos/builder/Feature Demos/visualValidator/readme.md +7 -0
  1339. psychopy/demos/builder/Feature Demos/visualValidator/visualValidator.psyexp +199 -0
  1340. psychopy/demos/builder/Hardware/EEG_parallel_component/EEG_triggers_parallel_comp.psyexp +639 -0
  1341. psychopy/demos/builder/Hardware/EEG_serial_code/EEG_triggers_serial_code.psyexp +415 -0
  1342. psychopy/demos/builder/Hardware/EEG_serial_component/EEG_triggers_serial_comp.psyexp +659 -0
  1343. psychopy/demos/builder/Hardware/EGI_netstation/README.md +17 -0
  1344. psychopy/demos/builder/Hardware/EGI_netstation/stroop.psyexp +339 -0
  1345. psychopy/demos/builder/Hardware/EGI_netstation/trialTypesEEG.csv +7 -0
  1346. psychopy/demos/builder/Hardware/Eyetracking_visual_search/readme.md +19 -0
  1347. psychopy/demos/builder/Hardware/Eyetracking_visual_search/trials_params.xlsx +0 -0
  1348. psychopy/demos/builder/Hardware/Eyetracking_visual_search/visualSearch.psyexp +830 -0
  1349. psychopy/demos/builder/Hardware/camera/camera.psyexp +330 -0
  1350. psychopy/demos/builder/Hardware/camera/readme.md +6 -0
  1351. psychopy/demos/builder/Hardware/eyetracking/eyetracking.psyexp +459 -0
  1352. psychopy/demos/builder/Hardware/eyetracking/readme.md +7 -0
  1353. psychopy/demos/builder/Hardware/eyetracking_custom_cal/Bullseye_grey.mov +0 -0
  1354. psychopy/demos/builder/Hardware/eyetracking_custom_cal/eyetracking_custom_cal.psyexp +468 -0
  1355. psychopy/demos/builder/Hardware/eyetracking_custom_cal/readme.md +7 -0
  1356. psychopy/demos/builder/Hardware/fMRI/fMRI_demo.psyexp +211 -0
  1357. psychopy/demos/builder/Hardware/fMRI/readme.md +7 -0
  1358. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo.psyexp +360 -0
  1359. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo_legacy.psyexp +360 -0
  1360. psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo_legacy_legacy.psyexp +312 -0
  1361. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy.psyexp +360 -0
  1362. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy_legacy.psyexp +360 -0
  1363. psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy_legacy_legacy.psyexp +312 -0
  1364. psychopy/demos/builder/Hardware/microphone/microphone.psyexp +484 -0
  1365. psychopy/demos/builder/Hardware/microphone/phrases.xlsx +0 -0
  1366. psychopy/demos/builder/Hardware/microphone/readme.md +9 -0
  1367. psychopy/demos/builder/Hardware/pump/README.md +19 -0
  1368. psychopy/demos/builder/Hardware/pump/pump.psyexp +646 -0
  1369. psychopy/demos/builder/Helper Tools/achorVSalignment/FlowCircular-Regular.ttf +0 -0
  1370. psychopy/demos/builder/Helper Tools/achorVSalignment/anchorAlignment.psyexp +350 -0
  1371. psychopy/demos/builder/Helper Tools/achorVSalignment/readme.md +5 -0
  1372. psychopy/demos/builder/Helper Tools/clockFace/README.md +3 -0
  1373. psychopy/demos/builder/Helper Tools/clockFace/clockFace.psyexp +211 -0
  1374. psychopy/demos/builder/Helper Tools/colors/README.md +5 -0
  1375. psychopy/demos/builder/Helper Tools/colors/colors.psyexp +321 -0
  1376. psychopy/demos/builder/Helper Tools/drawPolygon/README.md +5 -0
  1377. psychopy/demos/builder/Helper Tools/drawPolygon/drawPolygon.psyexp +704 -0
  1378. psychopy/demos/builder/Helper Tools/keyNameFinder/README.md +14 -0
  1379. psychopy/demos/builder/Helper Tools/keyNameFinder/keyNameFinder.psyexp +225 -0
  1380. psychopy/demos/builder/Helper Tools/spatialUnits/README.md +6 -0
  1381. psychopy/demos/builder/Helper Tools/spatialUnits/unitDemo.psyexp +206 -0
  1382. psychopy/demos/builder/README.txt +43 -0
  1383. psychopy/demos/builder/__init__.py +0 -0
  1384. psychopy/demos/coder/__init__.py +0 -0
  1385. psychopy/demos/coder/basic/hello_world.py +37 -0
  1386. psychopy/demos/coder/csvFromPsydat.py +29 -0
  1387. psychopy/demos/coder/experiment control/JND_staircase_analysis.py +85 -0
  1388. psychopy/demos/coder/experiment control/JND_staircase_exp.py +110 -0
  1389. psychopy/demos/coder/experiment control/TrialHandler.py +64 -0
  1390. psychopy/demos/coder/experiment control/TrialHandler2.py +42 -0
  1391. psychopy/demos/coder/experiment control/__init__.py +0 -0
  1392. psychopy/demos/coder/experiment control/autoDraw_autoLog.py +50 -0
  1393. psychopy/demos/coder/experiment control/experimentHandler.py +57 -0
  1394. psychopy/demos/coder/experiment control/fMRI_launchScan.py +74 -0
  1395. psychopy/demos/coder/experiment control/gammaMotionAnalysis.py +68 -0
  1396. psychopy/demos/coder/experiment control/gammaMotionNull.py +169 -0
  1397. psychopy/demos/coder/experiment control/logFiles.py +55 -0
  1398. psychopy/demos/coder/experiment control/piloting.py +65 -0
  1399. psychopy/demos/coder/experiment control/runtimeInfo.py +79 -0
  1400. psychopy/demos/coder/hardware/CRS_BitsBox.py +75 -0
  1401. psychopy/demos/coder/hardware/CRS_BitsPlusPlus.py +73 -0
  1402. psychopy/demos/coder/hardware/RiftHeadTrackingExample.py +95 -0
  1403. psychopy/demos/coder/hardware/RiftMinimal.py +44 -0
  1404. psychopy/demos/coder/hardware/VSHD_Distortion.py +49 -0
  1405. psychopy/demos/coder/hardware/__init__.py +0 -0
  1406. psychopy/demos/coder/hardware/camera.py +90 -0
  1407. psychopy/demos/coder/hardware/cedrusRB730.py +38 -0
  1408. psychopy/demos/coder/hardware/crsBitsAdvancedDemo.py +780 -0
  1409. psychopy/demos/coder/hardware/egi_netstation.py +45 -0
  1410. psychopy/demos/coder/hardware/hdf5_extract.py +133 -0
  1411. psychopy/demos/coder/hardware/ioLab_bbox.py +62 -0
  1412. psychopy/demos/coder/hardware/labjack_u3.py +61 -0
  1413. psychopy/demos/coder/hardware/monitorDemo.py +28 -0
  1414. psychopy/demos/coder/hardware/parallelPortOutput.py +49 -0
  1415. psychopy/demos/coder/hardware/qmixPump.py +79 -0
  1416. psychopy/demos/coder/hardware/testSoundLatency.py +127 -0
  1417. psychopy/demos/coder/input/GUI.py +52 -0
  1418. psychopy/demos/coder/input/__init__.py +0 -0
  1419. psychopy/demos/coder/input/customMouse.py +51 -0
  1420. psychopy/demos/coder/input/joystick_universal.py +84 -0
  1421. psychopy/demos/coder/input/keyNameFinder.py +39 -0
  1422. psychopy/demos/coder/input/mic.png +0 -0
  1423. psychopy/demos/coder/input/mouse.py +66 -0
  1424. psychopy/demos/coder/iohub/delaytest.py +231 -0
  1425. psychopy/demos/coder/iohub/eyetracking/gcCursor/images/canal.jpg +0 -0
  1426. psychopy/demos/coder/iohub/eyetracking/gcCursor/images/fall.jpg +0 -0
  1427. psychopy/demos/coder/iohub/eyetracking/gcCursor/images/lake.jpg +0 -0
  1428. psychopy/demos/coder/iohub/eyetracking/gcCursor/images/party.jpg +0 -0
  1429. psychopy/demos/coder/iohub/eyetracking/gcCursor/images/swimming.jpg +0 -0
  1430. psychopy/demos/coder/iohub/eyetracking/gcCursor/readTrialEventsByConditionVariables.py +67 -0
  1431. psychopy/demos/coder/iohub/eyetracking/gcCursor/readTrialEventsByMessages.py +34 -0
  1432. psychopy/demos/coder/iohub/eyetracking/gcCursor/run.py +323 -0
  1433. psychopy/demos/coder/iohub/eyetracking/gcCursor/trial_conditions.xlsx +0 -0
  1434. psychopy/demos/coder/iohub/eyetracking/simple.py +147 -0
  1435. psychopy/demos/coder/iohub/eyetracking/validation.py +251 -0
  1436. psychopy/demos/coder/iohub/iodatastore/saveEventReport.py +56 -0
  1437. psychopy/demos/coder/iohub/keyboard.py +189 -0
  1438. psychopy/demos/coder/iohub/keyboardreactiontime.py +88 -0
  1439. psychopy/demos/coder/iohub/launchHub.py +160 -0
  1440. psychopy/demos/coder/iohub/mouse.py +112 -0
  1441. psychopy/demos/coder/iohub/mouse_multi_window.py +124 -0
  1442. psychopy/demos/coder/iohub/serial/_parseserial.py +53 -0
  1443. psychopy/demos/coder/iohub/serial/customparser.py +84 -0
  1444. psychopy/demos/coder/iohub/serial/pstbox.py +166 -0
  1445. psychopy/demos/coder/iohub/wintab/_wintabgraphics.py +281 -0
  1446. psychopy/demos/coder/iohub/wintab/pen_demo.py +260 -0
  1447. psychopy/demos/coder/misc/encrypt_data.py +48 -0
  1448. psychopy/demos/coder/misc/hdf5_2_csv +33 -0
  1449. psychopy/demos/coder/misc/makeMovie.py +28 -0
  1450. psychopy/demos/coder/misc/rigidBodyTransform.py +76 -0
  1451. psychopy/demos/coder/stimuli/Campaign.ttf +0 -0
  1452. psychopy/demos/coder/stimuli/MovieStim.py +65 -0
  1453. psychopy/demos/coder/stimuli/__init__.py +0 -0
  1454. psychopy/demos/coder/stimuli/aperture.py +37 -0
  1455. psychopy/demos/coder/stimuli/beach.jpg +0 -0
  1456. psychopy/demos/coder/stimuli/bufferImageStim.py +78 -0
  1457. psychopy/demos/coder/stimuli/clockface.py +43 -0
  1458. psychopy/demos/coder/stimuli/colorPalette.py +134 -0
  1459. psychopy/demos/coder/stimuli/compare_text_timing.py +193 -0
  1460. psychopy/demos/coder/stimuli/counterphase.py +43 -0
  1461. psychopy/demos/coder/stimuli/customTextures.py +57 -0
  1462. psychopy/demos/coder/stimuli/dot_gabors.py +35 -0
  1463. psychopy/demos/coder/stimuli/dots.py +35 -0
  1464. psychopy/demos/coder/stimuli/elementArrays.py +92 -0
  1465. psychopy/demos/coder/stimuli/embeddedOpenGL.py +35 -0
  1466. psychopy/demos/coder/stimuli/face.jpg +0 -0
  1467. psychopy/demos/coder/stimuli/face_jpg.py +48 -0
  1468. psychopy/demos/coder/stimuli/gabor.py +30 -0
  1469. psychopy/demos/coder/stimuli/imagesAndPatches.py +51 -0
  1470. psychopy/demos/coder/stimuli/jwpIntro.mp4 +0 -0
  1471. psychopy/demos/coder/stimuli/kanizsa.py +41 -0
  1472. psychopy/demos/coder/stimuli/maskReveal.py +63 -0
  1473. psychopy/demos/coder/stimuli/plaid.py +43 -0
  1474. psychopy/demos/coder/stimuli/ratingScale.py +183 -0
  1475. psychopy/demos/coder/stimuli/rotatingFlashingWedge.py +37 -0
  1476. psychopy/demos/coder/stimuli/screensAndWindows.py +58 -0
  1477. psychopy/demos/coder/stimuli/secondOrderGratings.py +66 -0
  1478. psychopy/demos/coder/stimuli/shapeContains.py +50 -0
  1479. psychopy/demos/coder/stimuli/shapes.py +63 -0
  1480. psychopy/demos/coder/stimuli/soundStimuli.py +49 -0
  1481. psychopy/demos/coder/stimuli/starField.py +48 -0
  1482. psychopy/demos/coder/stimuli/stim3d.py +107 -0
  1483. psychopy/demos/coder/stimuli/textBoxStim/textbox_glyph_placement.py +93 -0
  1484. psychopy/demos/coder/stimuli/textBoxStim/textbox_simple.py +71 -0
  1485. psychopy/demos/coder/stimuli/textStimuli.py +106 -0
  1486. psychopy/demos/coder/stimuli/textbox_editable.py +64 -0
  1487. psychopy/demos/coder/stimuli/variousVisualStims.py +47 -0
  1488. psychopy/demos/coder/stimuli/visual_noise.py +31 -0
  1489. psychopy/demos/coder/sysInfo.py +56 -0
  1490. psychopy/demos/coder/timing/__init__.py +0 -0
  1491. psychopy/demos/coder/timing/callOnFlip.py +39 -0
  1492. psychopy/demos/coder/timing/clocksAndTimers.py +46 -0
  1493. psychopy/demos/coder/timing/millikeyKeyboardTimingTest.py +323 -0
  1494. psychopy/demos/coder/timing/timeByFrames.py +80 -0
  1495. psychopy/demos/coder/timing/timeByFramesEx.py +107 -0
  1496. psychopy/demos/coder/understanding psychopy/colors.py +70 -0
  1497. psychopy/demos/coder/understanding psychopy/fontLayout.py +69 -0
  1498. psychopy/demos/demo_migration.py +214 -0
  1499. psychopy/demos/modernizeDemos.py +16 -0
  1500. psychopy/demos/test_demo_migration.py +155 -0
  1501. psychopy/devices/__init__.py +8 -0
  1502. psychopy/event.py +1339 -0
  1503. psychopy/exceptions.py +59 -0
  1504. psychopy/experiment/__init__.py +51 -0
  1505. psychopy/experiment/_experiment.py +1514 -0
  1506. psychopy/experiment/blankTemplate.xltx +0 -0
  1507. psychopy/experiment/components/__init__.py +402 -0
  1508. psychopy/experiment/components/_base.py +1689 -0
  1509. psychopy/experiment/components/aperture/__init__.py +153 -0
  1510. psychopy/experiment/components/aperture/classic/aperture.png +0 -0
  1511. psychopy/experiment/components/aperture/classic/aperture@2x.png +0 -0
  1512. psychopy/experiment/components/aperture/dark/aperture.png +0 -0
  1513. psychopy/experiment/components/aperture/dark/aperture@2x.png +0 -0
  1514. psychopy/experiment/components/aperture/light/aperture.png +0 -0
  1515. psychopy/experiment/components/aperture/light/aperture@2x.png +0 -0
  1516. psychopy/experiment/components/brush/__init__.py +165 -0
  1517. psychopy/experiment/components/brush/classic/brush.png +0 -0
  1518. psychopy/experiment/components/brush/classic/brush@2x.png +0 -0
  1519. psychopy/experiment/components/brush/dark/brush.png +0 -0
  1520. psychopy/experiment/components/brush/dark/brush@2x.png +0 -0
  1521. psychopy/experiment/components/brush/light/brush.png +0 -0
  1522. psychopy/experiment/components/brush/light/brush@2x.png +0 -0
  1523. psychopy/experiment/components/button/__init__.py +493 -0
  1524. psychopy/experiment/components/button/classic/button.png +0 -0
  1525. psychopy/experiment/components/button/classic/button@2x.png +0 -0
  1526. psychopy/experiment/components/button/dark/button.png +0 -0
  1527. psychopy/experiment/components/button/dark/button@2x.png +0 -0
  1528. psychopy/experiment/components/button/light/button.png +0 -0
  1529. psychopy/experiment/components/button/light/button@2x.png +0 -0
  1530. psychopy/experiment/components/buttonBox/__init__.py +322 -0
  1531. psychopy/experiment/components/buttonBox/classic/buttonBox.png +0 -0
  1532. psychopy/experiment/components/buttonBox/classic/buttonBox@2x.png +0 -0
  1533. psychopy/experiment/components/buttonBox/dark/buttonBox.png +0 -0
  1534. psychopy/experiment/components/buttonBox/dark/buttonBox@2x.png +0 -0
  1535. psychopy/experiment/components/buttonBox/light/buttonBox.png +0 -0
  1536. psychopy/experiment/components/buttonBox/light/buttonBox@2x.png +0 -0
  1537. psychopy/experiment/components/camera/__init__.py +381 -0
  1538. psychopy/experiment/components/camera/classic/webcam.png +0 -0
  1539. psychopy/experiment/components/camera/classic/webcam@2x.png +0 -0
  1540. psychopy/experiment/components/camera/dark/webcam.png +0 -0
  1541. psychopy/experiment/components/camera/dark/webcam@2x.png +0 -0
  1542. psychopy/experiment/components/camera/light/webcam.png +0 -0
  1543. psychopy/experiment/components/camera/light/webcam@2x.png +0 -0
  1544. psychopy/experiment/components/code/__init__.py +299 -0
  1545. psychopy/experiment/components/code/classic/code.png +0 -0
  1546. psychopy/experiment/components/code/classic/code@2x.png +0 -0
  1547. psychopy/experiment/components/code/dark/code.png +0 -0
  1548. psychopy/experiment/components/code/dark/code@2x.png +0 -0
  1549. psychopy/experiment/components/code/light/code.png +0 -0
  1550. psychopy/experiment/components/code/light/code@2x.png +0 -0
  1551. psychopy/experiment/components/dots/__init__.py +199 -0
  1552. psychopy/experiment/components/dots/classic/dots.png +0 -0
  1553. psychopy/experiment/components/dots/classic/dots@2x.png +0 -0
  1554. psychopy/experiment/components/dots/dark/dots.png +0 -0
  1555. psychopy/experiment/components/dots/dark/dots@2x.png +0 -0
  1556. psychopy/experiment/components/dots/dots.xcf +0 -0
  1557. psychopy/experiment/components/dots/light/dots.png +0 -0
  1558. psychopy/experiment/components/dots/light/dots@2x.png +0 -0
  1559. psychopy/experiment/components/eyetracker_record/__init__.py +194 -0
  1560. psychopy/experiment/components/eyetracker_record/classic/eyetracker_record.png +0 -0
  1561. psychopy/experiment/components/eyetracker_record/classic/eyetracker_record@2x.png +0 -0
  1562. psychopy/experiment/components/eyetracker_record/dark/eyetracker_record.png +0 -0
  1563. psychopy/experiment/components/eyetracker_record/dark/eyetracker_record@2x.png +0 -0
  1564. psychopy/experiment/components/eyetracker_record/light/eyetracker_record.png +0 -0
  1565. psychopy/experiment/components/eyetracker_record/light/eyetracker_record@2x.png +0 -0
  1566. psychopy/experiment/components/form/__init__.py +227 -0
  1567. psychopy/experiment/components/form/classic/form.png +0 -0
  1568. psychopy/experiment/components/form/classic/form@2x.png +0 -0
  1569. psychopy/experiment/components/form/dark/form.png +0 -0
  1570. psychopy/experiment/components/form/dark/form@2x.png +0 -0
  1571. psychopy/experiment/components/form/formItems.xltx +0 -0
  1572. psychopy/experiment/components/form/light/form.png +0 -0
  1573. psychopy/experiment/components/form/light/form@2x.png +0 -0
  1574. psychopy/experiment/components/grating/__init__.py +203 -0
  1575. psychopy/experiment/components/grating/classic/grating.png +0 -0
  1576. psychopy/experiment/components/grating/classic/grating@2x.png +0 -0
  1577. psychopy/experiment/components/grating/dark/grating.png +0 -0
  1578. psychopy/experiment/components/grating/dark/grating@2x.png +0 -0
  1579. psychopy/experiment/components/grating/light/grating.png +0 -0
  1580. psychopy/experiment/components/grating/light/grating@2x.png +0 -0
  1581. psychopy/experiment/components/image/__init__.py +195 -0
  1582. psychopy/experiment/components/image/classic/image.png +0 -0
  1583. psychopy/experiment/components/image/classic/image@2x.png +0 -0
  1584. psychopy/experiment/components/image/dark/image.png +0 -0
  1585. psychopy/experiment/components/image/dark/image@2x.png +0 -0
  1586. psychopy/experiment/components/image/light/image.png +0 -0
  1587. psychopy/experiment/components/image/light/image@2x.png +0 -0
  1588. psychopy/experiment/components/joyButtons/__init__.py +453 -0
  1589. psychopy/experiment/components/joyButtons/classic/joyButtons.png +0 -0
  1590. psychopy/experiment/components/joyButtons/classic/joybuttons@2x.png +0 -0
  1591. psychopy/experiment/components/joyButtons/dark/joyButtons.png +0 -0
  1592. psychopy/experiment/components/joyButtons/dark/joyButtons@2x.png +0 -0
  1593. psychopy/experiment/components/joyButtons/light/joyButtons.png +0 -0
  1594. psychopy/experiment/components/joyButtons/light/joyButtons@2x.png +0 -0
  1595. psychopy/experiment/components/joyButtons/virtualJoyButtons.py +34 -0
  1596. psychopy/experiment/components/joystick/__init__.py +572 -0
  1597. psychopy/experiment/components/joystick/classic/joystick.png +0 -0
  1598. psychopy/experiment/components/joystick/classic/joystick@2x.png +0 -0
  1599. psychopy/experiment/components/joystick/dark/joystick.png +0 -0
  1600. psychopy/experiment/components/joystick/dark/joystick@2x.png +0 -0
  1601. psychopy/experiment/components/joystick/light/joystick.png +0 -0
  1602. psychopy/experiment/components/joystick/light/joystick@2x.png +0 -0
  1603. psychopy/experiment/components/joystick/virtualJoystick.py +40 -0
  1604. psychopy/experiment/components/keyboard/__init__.py +568 -0
  1605. psychopy/experiment/components/keyboard/classic/keyboard.png +0 -0
  1606. psychopy/experiment/components/keyboard/classic/keyboard@2x.png +0 -0
  1607. psychopy/experiment/components/keyboard/dark/keyboard.png +0 -0
  1608. psychopy/experiment/components/keyboard/dark/keyboard@2x.png +0 -0
  1609. psychopy/experiment/components/keyboard/light/keyboard.png +0 -0
  1610. psychopy/experiment/components/keyboard/light/keyboard@2x.png +0 -0
  1611. psychopy/experiment/components/keyboard.xcf +0 -0
  1612. psychopy/experiment/components/microphone/__init__.py +600 -0
  1613. psychopy/experiment/components/microphone/classic/microphone.png +0 -0
  1614. psychopy/experiment/components/microphone/classic/microphone@2x.png +0 -0
  1615. psychopy/experiment/components/microphone/dark/microphone.png +0 -0
  1616. psychopy/experiment/components/microphone/dark/microphone@2x.png +0 -0
  1617. psychopy/experiment/components/microphone/light/microphone.png +0 -0
  1618. psychopy/experiment/components/microphone/light/microphone@2x.png +0 -0
  1619. psychopy/experiment/components/mouse/__init__.py +773 -0
  1620. psychopy/experiment/components/mouse/classic/mouse.png +0 -0
  1621. psychopy/experiment/components/mouse/classic/mouse@2x.png +0 -0
  1622. psychopy/experiment/components/mouse/dark/mouse.png +0 -0
  1623. psychopy/experiment/components/mouse/dark/mouse@2x.png +0 -0
  1624. psychopy/experiment/components/mouse/light/mouse.png +0 -0
  1625. psychopy/experiment/components/mouse/light/mouse@2x.png +0 -0
  1626. psychopy/experiment/components/movie/__init__.py +348 -0
  1627. psychopy/experiment/components/movie/classic/movie.png +0 -0
  1628. psychopy/experiment/components/movie/classic/movie@2x.png +0 -0
  1629. psychopy/experiment/components/movie/dark/movie.png +0 -0
  1630. psychopy/experiment/components/movie/dark/movie@2x.png +0 -0
  1631. psychopy/experiment/components/movie/light/movie.png +0 -0
  1632. psychopy/experiment/components/movie/light/movie@2x.png +0 -0
  1633. psychopy/experiment/components/panorama/__init__.py +456 -0
  1634. psychopy/experiment/components/panorama/classic/panorama.png +0 -0
  1635. psychopy/experiment/components/panorama/classic/panorama@2x.png +0 -0
  1636. psychopy/experiment/components/panorama/dark/panorama.png +0 -0
  1637. psychopy/experiment/components/panorama/dark/panorama@2x.png +0 -0
  1638. psychopy/experiment/components/panorama/light/panorama.png +0 -0
  1639. psychopy/experiment/components/panorama/light/panorama@2x.png +0 -0
  1640. psychopy/experiment/components/parallelOut/__init__.py +178 -0
  1641. psychopy/experiment/components/parallelOut/classic/parallel.png +0 -0
  1642. psychopy/experiment/components/parallelOut/classic/parallel@2x.png +0 -0
  1643. psychopy/experiment/components/parallelOut/dark/parallel.png +0 -0
  1644. psychopy/experiment/components/parallelOut/dark/parallel@2x.png +0 -0
  1645. psychopy/experiment/components/parallelOut/light/parallel.png +0 -0
  1646. psychopy/experiment/components/parallelOut/light/parallel@2x.png +0 -0
  1647. psychopy/experiment/components/polygon/__init__.py +332 -0
  1648. psychopy/experiment/components/polygon/classic/polygon.png +0 -0
  1649. psychopy/experiment/components/polygon/classic/polygon@2x.png +0 -0
  1650. psychopy/experiment/components/polygon/dark/polygon.png +0 -0
  1651. psychopy/experiment/components/polygon/dark/polygon@2x.png +0 -0
  1652. psychopy/experiment/components/polygon/light/polygon.png +0 -0
  1653. psychopy/experiment/components/polygon/light/polygon@2x.png +0 -0
  1654. psychopy/experiment/components/progress/__init__.py +130 -0
  1655. psychopy/experiment/components/progress/classic/progress.png +0 -0
  1656. psychopy/experiment/components/progress/classic/progress@2x.png +0 -0
  1657. psychopy/experiment/components/progress/dark/progress.png +0 -0
  1658. psychopy/experiment/components/progress/dark/progress@2x.png +0 -0
  1659. psychopy/experiment/components/progress/light/progress.png +0 -0
  1660. psychopy/experiment/components/progress/light/progress@2x.png +0 -0
  1661. psychopy/experiment/components/resourceManager/__init__.py +176 -0
  1662. psychopy/experiment/components/resourceManager/classic/resource_manager.png +0 -0
  1663. psychopy/experiment/components/resourceManager/classic/resource_manager@2x.png +0 -0
  1664. psychopy/experiment/components/resourceManager/dark/resource_manager.png +0 -0
  1665. psychopy/experiment/components/resourceManager/dark/resource_manager@2x.png +0 -0
  1666. psychopy/experiment/components/resourceManager/light/resource_manager.png +0 -0
  1667. psychopy/experiment/components/resourceManager/light/resource_manager@2x.png +0 -0
  1668. psychopy/experiment/components/roi/__init__.py +316 -0
  1669. psychopy/experiment/components/roi/classic/eyetracker_roi.png +0 -0
  1670. psychopy/experiment/components/roi/classic/eyetracker_roi@2x.png +0 -0
  1671. psychopy/experiment/components/roi/dark/eyetracker_roi.png +0 -0
  1672. psychopy/experiment/components/roi/dark/eyetracker_roi@2X.png +0 -0
  1673. psychopy/experiment/components/roi/light/eyetracker_roi.png +0 -0
  1674. psychopy/experiment/components/roi/light/eyetracker_roi@2X.png +0 -0
  1675. psychopy/experiment/components/routineSettings/__init__.py +387 -0
  1676. psychopy/experiment/components/routineSettings/classic/routineSettings.png +0 -0
  1677. psychopy/experiment/components/routineSettings/classic/routineSettings@2x.png +0 -0
  1678. psychopy/experiment/components/routineSettings/dark/routineSettings.png +0 -0
  1679. psychopy/experiment/components/routineSettings/dark/routineSettings@2x.png +0 -0
  1680. psychopy/experiment/components/routineSettings/light/routineSettings.png +0 -0
  1681. psychopy/experiment/components/routineSettings/light/routineSettings@2x.png +0 -0
  1682. psychopy/experiment/components/serialOut/__init__.py +304 -0
  1683. psychopy/experiment/components/serialOut/classic/serial.png +0 -0
  1684. psychopy/experiment/components/serialOut/classic/serial@2x.png +0 -0
  1685. psychopy/experiment/components/serialOut/dark/serial.png +0 -0
  1686. psychopy/experiment/components/serialOut/dark/serial@2x.png +0 -0
  1687. psychopy/experiment/components/serialOut/light/serial.png +0 -0
  1688. psychopy/experiment/components/serialOut/light/serial@2x.png +0 -0
  1689. psychopy/experiment/components/settings/JS_htmlHeader.tmpl +23 -0
  1690. psychopy/experiment/components/settings/JS_setupExp.tmpl +28 -0
  1691. psychopy/experiment/components/settings/__init__.py +2254 -0
  1692. psychopy/experiment/components/settings/classic/settings.png +0 -0
  1693. psychopy/experiment/components/settings/classic/settings@2x.png +0 -0
  1694. psychopy/experiment/components/settings/dark/settings.png +0 -0
  1695. psychopy/experiment/components/settings/dark/settings@2x.png +0 -0
  1696. psychopy/experiment/components/settings/eyetracking.py +108 -0
  1697. psychopy/experiment/components/settings/light/settings.png +0 -0
  1698. psychopy/experiment/components/settings/light/settings@2x.png +0 -0
  1699. psychopy/experiment/components/slider/__init__.py +410 -0
  1700. psychopy/experiment/components/slider/classic/slider.png +0 -0
  1701. psychopy/experiment/components/slider/classic/slider@2x.png +0 -0
  1702. psychopy/experiment/components/slider/dark/slider.png +0 -0
  1703. psychopy/experiment/components/slider/dark/slider@2x.png +0 -0
  1704. psychopy/experiment/components/slider/light/slider.png +0 -0
  1705. psychopy/experiment/components/slider/light/slider@2x.png +0 -0
  1706. psychopy/experiment/components/sound/__init__.py +441 -0
  1707. psychopy/experiment/components/sound/classic/sound.png +0 -0
  1708. psychopy/experiment/components/sound/classic/sound@2x.png +0 -0
  1709. psychopy/experiment/components/sound/dark/sound.png +0 -0
  1710. psychopy/experiment/components/sound/dark/sound@2x.png +0 -0
  1711. psychopy/experiment/components/sound/light/sound.png +0 -0
  1712. psychopy/experiment/components/sound/light/sound@2x.png +0 -0
  1713. psychopy/experiment/components/soundsensor/__init__.py +324 -0
  1714. psychopy/experiment/components/soundsensor/classic/soundsensor.png +0 -0
  1715. psychopy/experiment/components/soundsensor/classic/soundsensor@2x.png +0 -0
  1716. psychopy/experiment/components/soundsensor/dark/soundsensor.png +0 -0
  1717. psychopy/experiment/components/soundsensor/dark/soundsensor@2x.png +0 -0
  1718. psychopy/experiment/components/soundsensor/light/soundsensor.png +0 -0
  1719. psychopy/experiment/components/soundsensor/light/soundsensor@2x.png +0 -0
  1720. psychopy/experiment/components/static/__init__.py +293 -0
  1721. psychopy/experiment/components/static/classic/static.png +0 -0
  1722. psychopy/experiment/components/static/classic/static@2x.png +0 -0
  1723. psychopy/experiment/components/static/dark/static.png +0 -0
  1724. psychopy/experiment/components/static/dark/static@2x.png +0 -0
  1725. psychopy/experiment/components/static/light/static.png +0 -0
  1726. psychopy/experiment/components/static/light/static@2x.png +0 -0
  1727. psychopy/experiment/components/text/__init__.py +190 -0
  1728. psychopy/experiment/components/text/classic/text.png +0 -0
  1729. psychopy/experiment/components/text/classic/text@2x.png +0 -0
  1730. psychopy/experiment/components/text/dark/text.png +0 -0
  1731. psychopy/experiment/components/text/dark/text@2x.png +0 -0
  1732. psychopy/experiment/components/text/light/text.png +0 -0
  1733. psychopy/experiment/components/text/light/text@2x.png +0 -0
  1734. psychopy/experiment/components/textbox/__init__.py +336 -0
  1735. psychopy/experiment/components/textbox/classic/textbox.png +0 -0
  1736. psychopy/experiment/components/textbox/classic/textbox@2x.png +0 -0
  1737. psychopy/experiment/components/textbox/dark/textbox.png +0 -0
  1738. psychopy/experiment/components/textbox/dark/textbox@2x.png +0 -0
  1739. psychopy/experiment/components/textbox/light/textbox.png +0 -0
  1740. psychopy/experiment/components/textbox/light/textbox@2x.png +0 -0
  1741. psychopy/experiment/components/unknown/__init__.py +87 -0
  1742. psychopy/experiment/components/unknown/classic/unknown.png +0 -0
  1743. psychopy/experiment/components/unknown/classic/unknown@2x.png +0 -0
  1744. psychopy/experiment/components/unknown/dark/unknown.png +0 -0
  1745. psychopy/experiment/components/unknown/dark/unknown@2x.png +0 -0
  1746. psychopy/experiment/components/unknown/light/unknown.png +0 -0
  1747. psychopy/experiment/components/unknown/light/unknown@2x.png +0 -0
  1748. psychopy/experiment/components/unknownPlugin/__init__.py +86 -0
  1749. psychopy/experiment/components/unknownPlugin/classic/unknownPlugin.png +0 -0
  1750. psychopy/experiment/components/unknownPlugin/classic/unknownPlugin@2x.png +0 -0
  1751. psychopy/experiment/components/unknownPlugin/dark/unknownPlugin.png +0 -0
  1752. psychopy/experiment/components/unknownPlugin/dark/unknownPlugin@2x.png +0 -0
  1753. psychopy/experiment/components/unknownPlugin/light/unknownPlugin.png +0 -0
  1754. psychopy/experiment/components/unknownPlugin/light/unknownPlugin@2x.png +0 -0
  1755. psychopy/experiment/components/utils.py +0 -0
  1756. psychopy/experiment/components/variable/__init__.py +184 -0
  1757. psychopy/experiment/components/variable/classic/variable.png +0 -0
  1758. psychopy/experiment/components/variable/classic/variable@2x.png +0 -0
  1759. psychopy/experiment/components/variable/dark/variable.png +0 -0
  1760. psychopy/experiment/components/variable/dark/variable@2x.png +0 -0
  1761. psychopy/experiment/components/variable/light/variable.png +0 -0
  1762. psychopy/experiment/components/variable/light/variable@2x.png +0 -0
  1763. psychopy/experiment/devices.py +303 -0
  1764. psychopy/experiment/experiment.xsd +223 -0
  1765. psychopy/experiment/exports.py +390 -0
  1766. psychopy/experiment/flow.py +547 -0
  1767. psychopy/experiment/localization.py +11 -0
  1768. psychopy/experiment/loopTemplate.xltx +0 -0
  1769. psychopy/experiment/loops.py +1051 -0
  1770. psychopy/experiment/monitor.py +74 -0
  1771. psychopy/experiment/params.py +541 -0
  1772. psychopy/experiment/plugins.py +42 -0
  1773. psychopy/experiment/py2js.py +183 -0
  1774. psychopy/experiment/py2js_transpiler.py +613 -0
  1775. psychopy/experiment/questPlusTemplate.xltx +0 -0
  1776. psychopy/experiment/questTemplate.xltx +0 -0
  1777. psychopy/experiment/routines/__init__.py +108 -0
  1778. psychopy/experiment/routines/_base.py +1172 -0
  1779. psychopy/experiment/routines/audioValidator/__init__.py +229 -0
  1780. psychopy/experiment/routines/audioValidator/classic/audio_validator.png +0 -0
  1781. psychopy/experiment/routines/audioValidator/classic/audio_validator@2x.png +0 -0
  1782. psychopy/experiment/routines/audioValidator/dark/audio_validator.png +0 -0
  1783. psychopy/experiment/routines/audioValidator/dark/audio_validator@2x.png +0 -0
  1784. psychopy/experiment/routines/audioValidator/light/audio_validator.png +0 -0
  1785. psychopy/experiment/routines/audioValidator/light/audio_validator@2x.png +0 -0
  1786. psychopy/experiment/routines/counterbalance/__init__.py +320 -0
  1787. psychopy/experiment/routines/counterbalance/classic/counterbalance.png +0 -0
  1788. psychopy/experiment/routines/counterbalance/classic/counterbalance@2x.png +0 -0
  1789. psychopy/experiment/routines/counterbalance/counterbalanceItems.xltx +0 -0
  1790. psychopy/experiment/routines/counterbalance/dark/counterbalance.png +0 -0
  1791. psychopy/experiment/routines/counterbalance/dark/counterbalance@2x.png +0 -0
  1792. psychopy/experiment/routines/counterbalance/light/counterbalance.png +0 -0
  1793. psychopy/experiment/routines/counterbalance/light/counterbalance@2x.png +0 -0
  1794. psychopy/experiment/routines/eyetracker_calibrate/__init__.py +334 -0
  1795. psychopy/experiment/routines/eyetracker_calibrate/classic/eyetracker_calib.png +0 -0
  1796. psychopy/experiment/routines/eyetracker_calibrate/dark/eyetracker_calib.png +0 -0
  1797. psychopy/experiment/routines/eyetracker_calibrate/dark/eyetracker_calib@2x.png +0 -0
  1798. psychopy/experiment/routines/eyetracker_calibrate/light/eyetracker_calib.png +0 -0
  1799. psychopy/experiment/routines/eyetracker_calibrate/light/eyetracker_calib@2x.png +0 -0
  1800. psychopy/experiment/routines/eyetracker_validate/__init__.py +354 -0
  1801. psychopy/experiment/routines/eyetracker_validate/classic/eyetracker_valid.png +0 -0
  1802. psychopy/experiment/routines/eyetracker_validate/dark/eyetracker_valid.png +0 -0
  1803. psychopy/experiment/routines/eyetracker_validate/dark/eyetracker_valid@2x.png +0 -0
  1804. psychopy/experiment/routines/eyetracker_validate/light/eyetracker_valid.png +0 -0
  1805. psychopy/experiment/routines/eyetracker_validate/light/eyetracker_valid@2x.png +0 -0
  1806. psychopy/experiment/routines/pavlovia_survey/__init__.py +236 -0
  1807. psychopy/experiment/routines/pavlovia_survey/classic/survey.png +0 -0
  1808. psychopy/experiment/routines/pavlovia_survey/classic/survey@2x.png +0 -0
  1809. psychopy/experiment/routines/pavlovia_survey/dark/survey.png +0 -0
  1810. psychopy/experiment/routines/pavlovia_survey/dark/survey@2x.png +0 -0
  1811. psychopy/experiment/routines/pavlovia_survey/light/survey.png +0 -0
  1812. psychopy/experiment/routines/pavlovia_survey/light/survey@2x.png +0 -0
  1813. psychopy/experiment/routines/unknown/__init__.py +30 -0
  1814. psychopy/experiment/routines/unknown/classic/eyetracker_record.png +0 -0
  1815. psychopy/experiment/routines/unknown/classic/unknown.png +0 -0
  1816. psychopy/experiment/routines/unknown/dark/eyetracker_record.png +0 -0
  1817. psychopy/experiment/routines/unknown/dark/eyetracker_record@2x.png +0 -0
  1818. psychopy/experiment/routines/unknown/dark/unknown.png +0 -0
  1819. psychopy/experiment/routines/unknown/dark/unknown@2x.png +0 -0
  1820. psychopy/experiment/routines/unknown/light/eyetracker_record.png +0 -0
  1821. psychopy/experiment/routines/unknown/light/eyetracker_record@2x.png +0 -0
  1822. psychopy/experiment/routines/unknown/light/unknown.png +0 -0
  1823. psychopy/experiment/routines/unknown/light/unknown@2x.png +0 -0
  1824. psychopy/experiment/routines/utils.py +0 -0
  1825. psychopy/experiment/routines/visualValidator/__init__.py +395 -0
  1826. psychopy/experiment/routines/visualValidator/classic/visual_validator.png +0 -0
  1827. psychopy/experiment/routines/visualValidator/classic/visual_validator@2x.png +0 -0
  1828. psychopy/experiment/routines/visualValidator/dark/visual_validator.png +0 -0
  1829. psychopy/experiment/routines/visualValidator/dark/visual_validator@2x.png +0 -0
  1830. psychopy/experiment/routines/visualValidator/light/visual_validator.png +0 -0
  1831. psychopy/experiment/routines/visualValidator/light/visual_validator@2x.png +0 -0
  1832. psychopy/experiment/staircaseTemplate.xltx +0 -0
  1833. psychopy/experiment/utils.py +44 -0
  1834. psychopy/filters.py +11 -0
  1835. psychopy/gamma.py +9 -0
  1836. psychopy/gui/__init__.py +47 -0
  1837. psychopy/gui/qtgui.py +882 -0
  1838. psychopy/gui/util.py +74 -0
  1839. psychopy/gui/wxgui.py +420 -0
  1840. psychopy/hardware/__init__.py +178 -0
  1841. psychopy/hardware/base.py +466 -0
  1842. psychopy/hardware/bbtk/__init__.py +24 -0
  1843. psychopy/hardware/brainproducts.py +25 -0
  1844. psychopy/hardware/button.py +238 -0
  1845. psychopy/hardware/buttonbox/__init__.py +122 -0
  1846. psychopy/hardware/camera/__init__.py +3657 -0
  1847. psychopy/hardware/cedrus.py +24 -0
  1848. psychopy/hardware/crs/__init__.py +46 -0
  1849. psychopy/hardware/crs/bits.py +37 -0
  1850. psychopy/hardware/crs/colorcal.py +18 -0
  1851. psychopy/hardware/crs/optical.py +33 -0
  1852. psychopy/hardware/crs/shaders.py +34 -0
  1853. psychopy/hardware/emotiv.py +33 -0
  1854. psychopy/hardware/emulator.py +46 -0
  1855. psychopy/hardware/exceptions.py +86 -0
  1856. psychopy/hardware/eyetracker.py +132 -0
  1857. psychopy/hardware/forp.py +37 -0
  1858. psychopy/hardware/gammasci.py +26 -0
  1859. psychopy/hardware/iolab.py +24 -0
  1860. psychopy/hardware/joystick/__init__.py +1196 -0
  1861. psychopy/hardware/joystick/_base.py +251 -0
  1862. psychopy/hardware/joystick/backend_glfw.py +306 -0
  1863. psychopy/hardware/joystick/backend_pyglet.py +309 -0
  1864. psychopy/hardware/joystick/mappings.py +287 -0
  1865. psychopy/hardware/keyboard.py +975 -0
  1866. psychopy/hardware/knownDevices.json +52 -0
  1867. psychopy/hardware/labhackers.py +27 -0
  1868. psychopy/hardware/labjacks.py +26 -0
  1869. psychopy/hardware/lightsensor.py +789 -0
  1870. psychopy/hardware/listener.py +330 -0
  1871. psychopy/hardware/manager.py +992 -0
  1872. psychopy/hardware/microphone.py +1630 -0
  1873. psychopy/hardware/minolta.py +33 -0
  1874. psychopy/hardware/monitor.py +144 -0
  1875. psychopy/hardware/mouse/__init__.py +885 -0
  1876. psychopy/hardware/photometer/__init__.py +207 -0
  1877. psychopy/hardware/pr.py +33 -0
  1878. psychopy/hardware/qmix.py +32 -0
  1879. psychopy/hardware/serialdevice.py +387 -0
  1880. psychopy/hardware/soundsensor.py +476 -0
  1881. psychopy/hardware/spatial/__init__.py +231 -0
  1882. psychopy/hardware/speaker.py +351 -0
  1883. psychopy/hardware/triggerbox/__init__.py +56 -0
  1884. psychopy/hardware/triggerbox/base.py +170 -0
  1885. psychopy/hardware/triggerbox/parallel.py +362 -0
  1886. psychopy/info.py +719 -0
  1887. psychopy/iohub/__init__.py +50 -0
  1888. psychopy/iohub/client/__init__.py +1481 -0
  1889. psychopy/iohub/client/connect.py +260 -0
  1890. psychopy/iohub/client/eyetracker/__init__.py +4 -0
  1891. psychopy/iohub/client/eyetracker/validation/__init__.py +8 -0
  1892. psychopy/iohub/client/eyetracker/validation/posgrid.py +274 -0
  1893. psychopy/iohub/client/eyetracker/validation/procedure.py +1292 -0
  1894. psychopy/iohub/client/eyetracker/validation/trigger.py +240 -0
  1895. psychopy/iohub/client/keyboard.py +513 -0
  1896. psychopy/iohub/client/wintab.py +378 -0
  1897. psychopy/iohub/constants.py +1176 -0
  1898. psychopy/iohub/datastore/__init__.py +439 -0
  1899. psychopy/iohub/datastore/default_datastore.yaml +8 -0
  1900. psychopy/iohub/datastore/util.py +868 -0
  1901. psychopy/iohub/default_config.yaml +17 -0
  1902. psychopy/iohub/devices/__init__.py +1047 -0
  1903. psychopy/iohub/devices/computer.py +607 -0
  1904. psychopy/iohub/devices/default_device.yaml +15 -0
  1905. psychopy/iohub/devices/deviceConfigValidation.py +519 -0
  1906. psychopy/iohub/devices/display/__init__.py +755 -0
  1907. psychopy/iohub/devices/display/default_display.yaml +118 -0
  1908. psychopy/iohub/devices/display/supported_config_settings.yaml +69 -0
  1909. psychopy/iohub/devices/eventfilters.py +3572 -0
  1910. psychopy/iohub/devices/experiment/__init__.py +316 -0
  1911. psychopy/iohub/devices/experiment/default_experiment.yaml +74 -0
  1912. psychopy/iohub/devices/experiment/supported_config_settings.yaml +26 -0
  1913. psychopy/iohub/devices/eyetracker/__init__.py +474 -0
  1914. psychopy/iohub/devices/eyetracker/calibration/__init__.py +1 -0
  1915. psychopy/iohub/devices/eyetracker/calibration/procedure.py +391 -0
  1916. psychopy/iohub/devices/eyetracker/default_eyetracker.yaml +18 -0
  1917. psychopy/iohub/devices/eyetracker/eye_events.py +1751 -0
  1918. psychopy/iohub/devices/eyetracker/filters/__init__.py +4 -0
  1919. psychopy/iohub/devices/eyetracker/filters/parser.py +913 -0
  1920. psychopy/iohub/devices/eyetracker/hw/__init__.py +4 -0
  1921. psychopy/iohub/devices/eyetracker/hw/gazepoint/__init__.py +29 -0
  1922. psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/__init__.py +29 -0
  1923. psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/calibration.py +18 -0
  1924. psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/eyetracker.py +31 -0
  1925. psychopy/iohub/devices/eyetracker/hw/mouse/__init__.py +8 -0
  1926. psychopy/iohub/devices/eyetracker/hw/mouse/calibration.py +10 -0
  1927. psychopy/iohub/devices/eyetracker/hw/mouse/default_eyetracker.yaml +102 -0
  1928. psychopy/iohub/devices/eyetracker/hw/mouse/eyetracker.py +443 -0
  1929. psychopy/iohub/devices/eyetracker/hw/mouse/supported_config_settings.yaml +110 -0
  1930. psychopy/iohub/devices/eyetracker/hw/pupil_labs/__init__.py +4 -0
  1931. psychopy/iohub/devices/eyetracker/hw/pupil_labs/neon/__init__.py +27 -0
  1932. psychopy/iohub/devices/eyetracker/hw/pupil_labs/neon/eyetracker.py +18 -0
  1933. psychopy/iohub/devices/eyetracker/hw/pupil_labs/pupil_core/__init__.py +29 -0
  1934. psychopy/iohub/devices/eyetracker/hw/pupil_labs/pupil_core/bisector.py +20 -0
  1935. psychopy/iohub/devices/eyetracker/hw/pupil_labs/pupil_core/constants.py +19 -0
  1936. psychopy/iohub/devices/eyetracker/hw/pupil_labs/pupil_core/data_parse.py +22 -0
  1937. psychopy/iohub/devices/eyetracker/hw/pupil_labs/pupil_core/eyetracker.py +18 -0
  1938. psychopy/iohub/devices/eyetracker/hw/pupil_labs/pupil_core/pupil_remote.py +18 -0
  1939. psychopy/iohub/devices/eyetracker/hw/sr_research/__init__.py +4 -0
  1940. psychopy/iohub/devices/eyetracker/hw/sr_research/eyelink/__init__.py +28 -0
  1941. psychopy/iohub/devices/eyetracker/hw/sr_research/eyelink/calibration.py +22 -0
  1942. psychopy/iohub/devices/eyetracker/hw/sr_research/eyelink/eyetracker.py +38 -0
  1943. psychopy/iohub/devices/eyetracker/hw/tobii/__init__.py +29 -0
  1944. psychopy/iohub/devices/eyetracker/hw/tobii/calibration.py +19 -0
  1945. psychopy/iohub/devices/eyetracker/hw/tobii/eyetracker.py +17 -0
  1946. psychopy/iohub/devices/eyetracker/hw/tobii/tobiiwrapper.py +19 -0
  1947. psychopy/iohub/devices/eyetracker/supported_config_settings.yaml +44 -0
  1948. psychopy/iohub/devices/keyboard/__init__.py +309 -0
  1949. psychopy/iohub/devices/keyboard/darwin.py +431 -0
  1950. psychopy/iohub/devices/keyboard/darwinkey.py +94 -0
  1951. psychopy/iohub/devices/keyboard/default_keyboard.yaml +94 -0
  1952. psychopy/iohub/devices/keyboard/linux2.py +102 -0
  1953. psychopy/iohub/devices/keyboard/supported_config_settings.yaml +39 -0
  1954. psychopy/iohub/devices/keyboard/win32.py +356 -0
  1955. psychopy/iohub/devices/mouse/__init__.py +709 -0
  1956. psychopy/iohub/devices/mouse/darwin.py +414 -0
  1957. psychopy/iohub/devices/mouse/default_mouse.yaml +92 -0
  1958. psychopy/iohub/devices/mouse/linux2.py +172 -0
  1959. psychopy/iohub/devices/mouse/supported_config_settings.yaml +39 -0
  1960. psychopy/iohub/devices/mouse/win32.py +284 -0
  1961. psychopy/iohub/devices/pyXHook.py +619 -0
  1962. psychopy/iohub/devices/serial/__init__.py +779 -0
  1963. psychopy/iohub/devices/serial/default_pstbox.yaml +108 -0
  1964. psychopy/iohub/devices/serial/default_serial.yaml +108 -0
  1965. psychopy/iohub/devices/serial/supported_config_settings.yaml +85 -0
  1966. psychopy/iohub/devices/serial/supported_config_settings_pstbox.yaml +85 -0
  1967. psychopy/iohub/devices/supported_config_settings.yaml +36 -0
  1968. psychopy/iohub/devices/wintab/__init__.py +580 -0
  1969. psychopy/iohub/devices/wintab/default_wintab.yaml +89 -0
  1970. psychopy/iohub/devices/wintab/supported_config_settings.yaml +42 -0
  1971. psychopy/iohub/devices/wintab/win32.py +722 -0
  1972. psychopy/iohub/devices/xlib.py +6795 -0
  1973. psychopy/iohub/errors.py +61 -0
  1974. psychopy/iohub/lazy_import.py +582 -0
  1975. psychopy/iohub/net.py +349 -0
  1976. psychopy/iohub/server.py +1075 -0
  1977. psychopy/iohub/start_iohub_process.py +121 -0
  1978. psychopy/iohub/util/__init__.py +832 -0
  1979. psychopy/iohub/util/visualangle.py +126 -0
  1980. psychopy/layout.py +916 -0
  1981. psychopy/liaison.py +471 -0
  1982. psychopy/locale_setup.py +41 -0
  1983. psychopy/localization/__init__.py +22 -0
  1984. psychopy/localization/_localization.py +155 -0
  1985. psychopy/localization/generateTranslationTemplate.py +257 -0
  1986. psychopy/localization/mappings.txt +170 -0
  1987. psychopy/localization/messages.pot +9950 -0
  1988. psychopy/localization/readme.txt +68 -0
  1989. psychopy/logging.py +415 -0
  1990. psychopy/microphone.py +28 -0
  1991. psychopy/misc.py +40 -0
  1992. psychopy/monitors/MonitorCenter.py +1354 -0
  1993. psychopy/monitors/__init__.py +30 -0
  1994. psychopy/monitors/calibData.py +78 -0
  1995. psychopy/monitors/calibTools.py +1301 -0
  1996. psychopy/monitors/getLumSeries.py +50 -0
  1997. psychopy/monitors/psychopy-icon.svg +395 -0
  1998. psychopy/monitors/psychopy.ico +0 -0
  1999. psychopy/parallel/__init__.py +206 -0
  2000. psychopy/parallel/_dlportio.py +150 -0
  2001. psychopy/parallel/_inpout.py +120 -0
  2002. psychopy/parallel/_linux.py +105 -0
  2003. psychopy/piloting.py +61 -0
  2004. psychopy/platform_specific/__init__.py +46 -0
  2005. psychopy/platform_specific/darwin.py +326 -0
  2006. psychopy/platform_specific/linux.py +77 -0
  2007. psychopy/platform_specific/win32.py +124 -0
  2008. psychopy/plugins/__init__.py +1397 -0
  2009. psychopy/plugins/util.py +104 -0
  2010. psychopy/preferences/Darwin.spec +294 -0
  2011. psychopy/preferences/FreeBSD.spec +294 -0
  2012. psychopy/preferences/Linux.spec +294 -0
  2013. psychopy/preferences/Windows.spec +294 -0
  2014. psychopy/preferences/__init__.py +20 -0
  2015. psychopy/preferences/baseNoArch.spec +290 -0
  2016. psychopy/preferences/devices.py +80 -0
  2017. psychopy/preferences/generateHints.py +93 -0
  2018. psychopy/preferences/generateSpec.py +80 -0
  2019. psychopy/preferences/hints.py +367 -0
  2020. psychopy/preferences/preferences.py +448 -0
  2021. psychopy/projects/__init__.py +11 -0
  2022. psychopy/projects/gitignore.py +45 -0
  2023. psychopy/projects/pavlovia.py +1674 -0
  2024. psychopy/projects/sshkeys.py +107 -0
  2025. psychopy/psychojs.zip +0 -0
  2026. psychopy/pylintrc +69 -0
  2027. psychopy/scripts/__init__.py +0 -0
  2028. psychopy/scripts/psychopy-pkgutil.py +969 -0
  2029. psychopy/scripts/psyexpCompile.py +229 -0
  2030. psychopy/session.py +1651 -0
  2031. psychopy/sound/__init__.py +50 -0
  2032. psychopy/sound/_base.py +399 -0
  2033. psychopy/sound/audioclip.py +1325 -0
  2034. psychopy/sound/audiodevice.py +857 -0
  2035. psychopy/sound/backend_ptb.py +406 -0
  2036. psychopy/sound/backend_pygame.py +323 -0
  2037. psychopy/sound/backend_pyo.py +64 -0
  2038. psychopy/sound/backend_pysound.py +324 -0
  2039. psychopy/sound/backend_sounddevice.py +44 -0
  2040. psychopy/sound/backends/__init__.py +0 -0
  2041. psychopy/sound/exceptions.py +115 -0
  2042. psychopy/sound/microphone.py +357 -0
  2043. psychopy/sound/sound.py +58 -0
  2044. psychopy/sound/transcribe.py +1321 -0
  2045. psychopy/tests/README.md +344 -0
  2046. psychopy/tests/__init__.py +47 -0
  2047. psychopy/tests/data/Electronic_Chime-KevanGC-495939803.wav +0 -0
  2048. psychopy/tests/data/TestCircle_w128h128_bottom_left.png +0 -0
  2049. psychopy/tests/data/TestCircle_w128h128_bottom_right.png +0 -0
  2050. psychopy/tests/data/TestCircle_w128h128_center_center.png +0 -0
  2051. psychopy/tests/data/TestCircle_w128h128_top_left.png +0 -0
  2052. psychopy/tests/data/TestCircle_w128h128_top_right.png +0 -0
  2053. psychopy/tests/data/TestCircle_w128h64_bottom_left.png +0 -0
  2054. psychopy/tests/data/TestCircle_w128h64_bottom_right.png +0 -0
  2055. psychopy/tests/data/TestCircle_w128h64_center_center.png +0 -0
  2056. psychopy/tests/data/TestCircle_w128h64_top_left.png +0 -0
  2057. psychopy/tests/data/TestCircle_w128h64_top_right.png +0 -0
  2058. psychopy/tests/data/TestCircle_w64h128_bottom_left.png +0 -0
  2059. psychopy/tests/data/TestCircle_w64h128_bottom_right.png +0 -0
  2060. psychopy/tests/data/TestCircle_w64h128_center_center.png +0 -0
  2061. psychopy/tests/data/TestCircle_w64h128_top_left.png +0 -0
  2062. psychopy/tests/data/TestCircle_w64h128_top_right.png +0 -0
  2063. psychopy/tests/data/TestCircle_w64h64_bottom_left.png +0 -0
  2064. psychopy/tests/data/TestCircle_w64h64_bottom_right.png +0 -0
  2065. psychopy/tests/data/TestCircle_w64h64_center_center.png +0 -0
  2066. psychopy/tests/data/TestCircle_w64h64_top_left.png +0 -0
  2067. psychopy/tests/data/TestCircle_w64h64_top_right.png +0 -0
  2068. psychopy/tests/data/TestForm_scrolling_nq10_s0.5.png +0 -0
  2069. psychopy/tests/data/TestForm_scrolling_nq10_s0.png +0 -0
  2070. psychopy/tests/data/TestForm_scrolling_nq10_s1.png +0 -0
  2071. psychopy/tests/data/TestForm_scrolling_nq1_s0.5.png +0 -0
  2072. psychopy/tests/data/TestForm_scrolling_nq1_s0.png +0 -0
  2073. psychopy/tests/data/TestForm_scrolling_nq1_s1.png +0 -0
  2074. psychopy/tests/data/TestForm_scrolling_nq3_s0.5.png +0 -0
  2075. psychopy/tests/data/TestForm_scrolling_nq3_s0.png +0 -0
  2076. psychopy/tests/data/TestForm_scrolling_nq3_s1.png +0 -0
  2077. psychopy/tests/data/TestImage_w128h128_bottom_left.png +0 -0
  2078. psychopy/tests/data/TestImage_w128h128_bottom_right.png +0 -0
  2079. psychopy/tests/data/TestImage_w128h128_center_center.png +0 -0
  2080. psychopy/tests/data/TestImage_w128h128_top_left.png +0 -0
  2081. psychopy/tests/data/TestImage_w128h128_top_right.png +0 -0
  2082. psychopy/tests/data/TestImage_w128h64_bottom_left.png +0 -0
  2083. psychopy/tests/data/TestImage_w128h64_bottom_right.png +0 -0
  2084. psychopy/tests/data/TestImage_w128h64_center_center.png +0 -0
  2085. psychopy/tests/data/TestImage_w128h64_top_left.png +0 -0
  2086. psychopy/tests/data/TestImage_w128h64_top_right.png +0 -0
  2087. psychopy/tests/data/TestImage_w64h128_bottom_left.png +0 -0
  2088. psychopy/tests/data/TestImage_w64h128_bottom_right.png +0 -0
  2089. psychopy/tests/data/TestImage_w64h128_center_center.png +0 -0
  2090. psychopy/tests/data/TestImage_w64h128_top_left.png +0 -0
  2091. psychopy/tests/data/TestImage_w64h128_top_right.png +0 -0
  2092. psychopy/tests/data/TestImage_w64h64_bottom_left.png +0 -0
  2093. psychopy/tests/data/TestImage_w64h64_bottom_right.png +0 -0
  2094. psychopy/tests/data/TestImage_w64h64_center_center.png +0 -0
  2095. psychopy/tests/data/TestImage_w64h64_top_left.png +0 -0
  2096. psychopy/tests/data/TestImage_w64h64_top_right.png +0 -0
  2097. psychopy/tests/data/TestProgress_testValue_horizontal_center center_0.3.png +0 -0
  2098. psychopy/tests/data/TestProgress_testValue_horizontal_center center_0.6.png +0 -0
  2099. psychopy/tests/data/TestProgress_testValue_horizontal_left center_0.3.png +0 -0
  2100. psychopy/tests/data/TestProgress_testValue_horizontal_left center_0.6.png +0 -0
  2101. psychopy/tests/data/TestProgress_testValue_horizontal_right center_0.3.png +0 -0
  2102. psychopy/tests/data/TestProgress_testValue_horizontal_right center_0.6.png +0 -0
  2103. psychopy/tests/data/TestProgress_testValue_minmax_0.png +0 -0
  2104. psychopy/tests/data/TestProgress_testValue_minmax_1.png +0 -0
  2105. psychopy/tests/data/TestProgress_testValue_vertical_bottom center_0.3.png +0 -0
  2106. psychopy/tests/data/TestProgress_testValue_vertical_bottom center_0.6.png +0 -0
  2107. psychopy/tests/data/TestProgress_testValue_vertical_center center_0.3.png +0 -0
  2108. psychopy/tests/data/TestProgress_testValue_vertical_center center_0.6.png +0 -0
  2109. psychopy/tests/data/TestProgress_testValue_vertical_top center_0.3.png +0 -0
  2110. psychopy/tests/data/TestProgress_testValue_vertical_top center_0.6.png +0 -0
  2111. psychopy/tests/data/TestProgress_w128h128_bottom_left.png +0 -0
  2112. psychopy/tests/data/TestProgress_w128h128_bottom_right.png +0 -0
  2113. psychopy/tests/data/TestProgress_w128h128_center_center.png +0 -0
  2114. psychopy/tests/data/TestProgress_w128h128_top_left.png +0 -0
  2115. psychopy/tests/data/TestProgress_w128h128_top_right.png +0 -0
  2116. psychopy/tests/data/TestProgress_w128h64_bottom_left.png +0 -0
  2117. psychopy/tests/data/TestProgress_w128h64_bottom_right.png +0 -0
  2118. psychopy/tests/data/TestProgress_w128h64_center_center.png +0 -0
  2119. psychopy/tests/data/TestProgress_w128h64_top_left.png +0 -0
  2120. psychopy/tests/data/TestProgress_w128h64_top_right.png +0 -0
  2121. psychopy/tests/data/TestProgress_w64h128_bottom_left.png +0 -0
  2122. psychopy/tests/data/TestProgress_w64h128_bottom_right.png +0 -0
  2123. psychopy/tests/data/TestProgress_w64h128_center_center.png +0 -0
  2124. psychopy/tests/data/TestProgress_w64h128_top_left.png +0 -0
  2125. psychopy/tests/data/TestProgress_w64h128_top_right.png +0 -0
  2126. psychopy/tests/data/TestProgress_w64h64_bottom_left.png +0 -0
  2127. psychopy/tests/data/TestProgress_w64h64_bottom_right.png +0 -0
  2128. psychopy/tests/data/TestProgress_w64h64_center_center.png +0 -0
  2129. psychopy/tests/data/TestProgress_w64h64_top_left.png +0 -0
  2130. psychopy/tests/data/TestProgress_w64h64_top_right.png +0 -0
  2131. psychopy/tests/data/TestROI_w128h128_bottom_left.png +0 -0
  2132. psychopy/tests/data/TestROI_w128h128_bottom_right.png +0 -0
  2133. psychopy/tests/data/TestROI_w128h128_center_center.png +0 -0
  2134. psychopy/tests/data/TestROI_w128h128_top_left.png +0 -0
  2135. psychopy/tests/data/TestROI_w128h128_top_right.png +0 -0
  2136. psychopy/tests/data/TestROI_w128h64_bottom_left.png +0 -0
  2137. psychopy/tests/data/TestROI_w128h64_bottom_right.png +0 -0
  2138. psychopy/tests/data/TestROI_w128h64_center_center.png +0 -0
  2139. psychopy/tests/data/TestROI_w128h64_top_left.png +0 -0
  2140. psychopy/tests/data/TestROI_w128h64_top_right.png +0 -0
  2141. psychopy/tests/data/TestROI_w64h128_bottom_left.png +0 -0
  2142. psychopy/tests/data/TestROI_w64h128_bottom_right.png +0 -0
  2143. psychopy/tests/data/TestROI_w64h128_center_center.png +0 -0
  2144. psychopy/tests/data/TestROI_w64h128_top_left.png +0 -0
  2145. psychopy/tests/data/TestROI_w64h128_top_right.png +0 -0
  2146. psychopy/tests/data/TestROI_w64h64_bottom_left.png +0 -0
  2147. psychopy/tests/data/TestROI_w64h64_bottom_right.png +0 -0
  2148. psychopy/tests/data/TestROI_w64h64_center_center.png +0 -0
  2149. psychopy/tests/data/TestROI_w64h64_top_left.png +0 -0
  2150. psychopy/tests/data/TestROI_w64h64_top_right.png +0 -0
  2151. psychopy/tests/data/TestSession_exp1.png +0 -0
  2152. psychopy/tests/data/TestSession_exp2.png +0 -0
  2153. psychopy/tests/data/TestShape_w128h128_bottom_left.png +0 -0
  2154. psychopy/tests/data/TestShape_w128h128_bottom_right.png +0 -0
  2155. psychopy/tests/data/TestShape_w128h128_center_center.png +0 -0
  2156. psychopy/tests/data/TestShape_w128h128_top_left.png +0 -0
  2157. psychopy/tests/data/TestShape_w128h128_top_right.png +0 -0
  2158. psychopy/tests/data/TestShape_w128h64_bottom_left.png +0 -0
  2159. psychopy/tests/data/TestShape_w128h64_bottom_right.png +0 -0
  2160. psychopy/tests/data/TestShape_w128h64_center_center.png +0 -0
  2161. psychopy/tests/data/TestShape_w128h64_top_left.png +0 -0
  2162. psychopy/tests/data/TestShape_w128h64_top_right.png +0 -0
  2163. psychopy/tests/data/TestShape_w64h128_bottom_left.png +0 -0
  2164. psychopy/tests/data/TestShape_w64h128_bottom_right.png +0 -0
  2165. psychopy/tests/data/TestShape_w64h128_center_center.png +0 -0
  2166. psychopy/tests/data/TestShape_w64h128_top_left.png +0 -0
  2167. psychopy/tests/data/TestShape_w64h128_top_right.png +0 -0
  2168. psychopy/tests/data/TestShape_w64h64_bottom_left.png +0 -0
  2169. psychopy/tests/data/TestShape_w64h64_bottom_right.png +0 -0
  2170. psychopy/tests/data/TestShape_w64h64_center_center.png +0 -0
  2171. psychopy/tests/data/TestShape_w64h64_top_left.png +0 -0
  2172. psychopy/tests/data/TestShape_w64h64_top_right.png +0 -0
  2173. psychopy/tests/data/TestTarget_w128h128_bottom_left.png +0 -0
  2174. psychopy/tests/data/TestTarget_w128h128_bottom_right.png +0 -0
  2175. psychopy/tests/data/TestTarget_w128h128_center_center.png +0 -0
  2176. psychopy/tests/data/TestTarget_w128h128_top_left.png +0 -0
  2177. psychopy/tests/data/TestTarget_w128h128_top_right.png +0 -0
  2178. psychopy/tests/data/TestTarget_w128h64_bottom_left.png +0 -0
  2179. psychopy/tests/data/TestTarget_w128h64_bottom_right.png +0 -0
  2180. psychopy/tests/data/TestTarget_w128h64_center_center.png +0 -0
  2181. psychopy/tests/data/TestTarget_w128h64_top_left.png +0 -0
  2182. psychopy/tests/data/TestTarget_w128h64_top_right.png +0 -0
  2183. psychopy/tests/data/TestTarget_w64h128_bottom_left.png +0 -0
  2184. psychopy/tests/data/TestTarget_w64h128_bottom_right.png +0 -0
  2185. psychopy/tests/data/TestTarget_w64h128_center_center.png +0 -0
  2186. psychopy/tests/data/TestTarget_w64h128_top_left.png +0 -0
  2187. psychopy/tests/data/TestTarget_w64h128_top_right.png +0 -0
  2188. psychopy/tests/data/TestTarget_w64h64_bottom_left.png +0 -0
  2189. psychopy/tests/data/TestTarget_w64h64_bottom_right.png +0 -0
  2190. psychopy/tests/data/TestTarget_w64h64_center_center.png +0 -0
  2191. psychopy/tests/data/TestTarget_w64h64_top_left.png +0 -0
  2192. psychopy/tests/data/TestTarget_w64h64_top_right.png +0 -0
  2193. psychopy/tests/data/TestTextbox_testLetterSpacing_0p6.png +0 -0
  2194. psychopy/tests/data/TestTextbox_testLetterSpacing_0p8.png +0 -0
  2195. psychopy/tests/data/TestTextbox_testLetterSpacing_1.png +0 -0
  2196. psychopy/tests/data/TestTextbox_testLetterSpacing_1p2.png +0 -0
  2197. psychopy/tests/data/TestTextbox_testLetterSpacing_1p4.png +0 -0
  2198. psychopy/tests/data/TestTextbox_testLetterSpacing_1p6.png +0 -0
  2199. psychopy/tests/data/TestTextbox_testLetterSpacing_1p8.png +0 -0
  2200. psychopy/tests/data/TestTextbox_testLetterSpacing_2p0.png +0 -0
  2201. psychopy/tests/data/TestTextbox_testLetterSpacing_None.png +0 -0
  2202. psychopy/tests/data/TestUnknownPluginComponent_load_resave.psyexp +135 -0
  2203. psychopy/tests/data/Test_textbox/test_ori_0_bottom right.png +0 -0
  2204. psychopy/tests/data/Test_textbox/test_ori_0_center.png +0 -0
  2205. psychopy/tests/data/Test_textbox/test_ori_0_top left.png +0 -0
  2206. psychopy/tests/data/Test_textbox/test_ori_120_bottom right.png +0 -0
  2207. psychopy/tests/data/Test_textbox/test_ori_120_center.png +0 -0
  2208. psychopy/tests/data/Test_textbox/test_ori_120_top left.png +0 -0
  2209. psychopy/tests/data/Test_textbox/test_ori_180_bottom right.png +0 -0
  2210. psychopy/tests/data/Test_textbox/test_ori_180_center.png +0 -0
  2211. psychopy/tests/data/Test_textbox/test_ori_180_top left.png +0 -0
  2212. psychopy/tests/data/Test_textbox/test_ori_240_bottom right.png +0 -0
  2213. psychopy/tests/data/Test_textbox/test_ori_240_center.png +0 -0
  2214. psychopy/tests/data/Test_textbox/test_ori_240_top left.png +0 -0
  2215. psychopy/tests/data/Test_textbox_testSpeechpoint_-3ovr8_0ovr8.png +0 -0
  2216. psychopy/tests/data/Test_textbox_testSpeechpoint_0ovr8_-3ovr8.png +0 -0
  2217. psychopy/tests/data/Test_textbox_testSpeechpoint_0ovr8_3ovr8.png +0 -0
  2218. psychopy/tests/data/Test_textbox_testSpeechpoint_3ovr8_0ovr8.png +0 -0
  2219. psychopy/tests/data/Test_textbox_w128h128_bottom_left.png +0 -0
  2220. psychopy/tests/data/Test_textbox_w128h128_bottom_right.png +0 -0
  2221. psychopy/tests/data/Test_textbox_w128h128_center_center.png +0 -0
  2222. psychopy/tests/data/Test_textbox_w128h128_top_left.png +0 -0
  2223. psychopy/tests/data/Test_textbox_w128h128_top_right.png +0 -0
  2224. psychopy/tests/data/Test_textbox_w128h64_bottom_left.png +0 -0
  2225. psychopy/tests/data/Test_textbox_w128h64_bottom_right.png +0 -0
  2226. psychopy/tests/data/Test_textbox_w128h64_center_center.png +0 -0
  2227. psychopy/tests/data/Test_textbox_w128h64_top_left.png +0 -0
  2228. psychopy/tests/data/Test_textbox_w128h64_top_right.png +0 -0
  2229. psychopy/tests/data/Test_textbox_w64h128_bottom_left.png +0 -0
  2230. psychopy/tests/data/Test_textbox_w64h128_bottom_right.png +0 -0
  2231. psychopy/tests/data/Test_textbox_w64h128_center_center.png +0 -0
  2232. psychopy/tests/data/Test_textbox_w64h128_top_left.png +0 -0
  2233. psychopy/tests/data/Test_textbox_w64h128_top_right.png +0 -0
  2234. psychopy/tests/data/Test_textbox_w64h64_bottom_left.png +0 -0
  2235. psychopy/tests/data/Test_textbox_w64h64_bottom_right.png +0 -0
  2236. psychopy/tests/data/Test_textbox_w64h64_center_center.png +0 -0
  2237. psychopy/tests/data/Test_textbox_w64h64_top_left.png +0 -0
  2238. psychopy/tests/data/Test_textbox_w64h64_top_right.png +0 -0
  2239. psychopy/tests/data/Test_uax14_textbox_w128h128_bottom_left.png +0 -0
  2240. psychopy/tests/data/Test_uax14_textbox_w128h128_bottom_right.png +0 -0
  2241. psychopy/tests/data/Test_uax14_textbox_w128h128_center_center.png +0 -0
  2242. psychopy/tests/data/Test_uax14_textbox_w128h128_top_left.png +0 -0
  2243. psychopy/tests/data/Test_uax14_textbox_w128h128_top_right.png +0 -0
  2244. psychopy/tests/data/Test_uax14_textbox_w128h64_bottom_left.png +0 -0
  2245. psychopy/tests/data/Test_uax14_textbox_w128h64_bottom_right.png +0 -0
  2246. psychopy/tests/data/Test_uax14_textbox_w128h64_center_center.png +0 -0
  2247. psychopy/tests/data/Test_uax14_textbox_w128h64_top_left.png +0 -0
  2248. psychopy/tests/data/Test_uax14_textbox_w128h64_top_right.png +0 -0
  2249. psychopy/tests/data/Test_uax14_textbox_w64h128_bottom_left.png +0 -0
  2250. psychopy/tests/data/Test_uax14_textbox_w64h128_bottom_right.png +0 -0
  2251. psychopy/tests/data/Test_uax14_textbox_w64h128_center_center.png +0 -0
  2252. psychopy/tests/data/Test_uax14_textbox_w64h128_top_left.png +0 -0
  2253. psychopy/tests/data/Test_uax14_textbox_w64h128_top_right.png +0 -0
  2254. psychopy/tests/data/Test_uax14_textbox_w64h64_bottom_left.png +0 -0
  2255. psychopy/tests/data/Test_uax14_textbox_w64h64_bottom_right.png +0 -0
  2256. psychopy/tests/data/Test_uax14_textbox_w64h64_center_center.png +0 -0
  2257. psychopy/tests/data/Test_uax14_textbox_w64h64_top_left.png +0 -0
  2258. psychopy/tests/data/Test_uax14_textbox_w64h64_top_right.png +0 -0
  2259. psychopy/tests/data/TextComponent_disabled.psyexp +63 -0
  2260. psychopy/tests/data/TextComponent_not_disabled.psyexp +63 -0
  2261. psychopy/tests/data/aperture1_deg.png +0 -0
  2262. psychopy/tests/data/aperture1_degFlat.png +0 -0
  2263. psychopy/tests/data/aperture1_degFlatPos.png +0 -0
  2264. psychopy/tests/data/aperture1_norm.png +0 -0
  2265. psychopy/tests/data/aperture1_normHexbackground.png +0 -0
  2266. psychopy/tests/data/aperture1_normNoShade.png +0 -0
  2267. psychopy/tests/data/aperture1_pix.png +0 -0
  2268. psychopy/tests/data/aperture1_stencil.png +0 -0
  2269. psychopy/tests/data/aperture2_deg.png +0 -0
  2270. psychopy/tests/data/aperture2_degFlat.png +0 -0
  2271. psychopy/tests/data/aperture2_degFlatPos.png +0 -0
  2272. psychopy/tests/data/aperture2_norm.png +0 -0
  2273. psychopy/tests/data/aperture2_normHexbackground.png +0 -0
  2274. psychopy/tests/data/aperture2_normNoShade.png +0 -0
  2275. psychopy/tests/data/aperture2_pix.png +0 -0
  2276. psychopy/tests/data/aperture2_stencil.png +0 -0
  2277. psychopy/tests/data/beatandrcos_cm.png +0 -0
  2278. psychopy/tests/data/beatandrcos_deg.png +0 -0
  2279. psychopy/tests/data/beatandrcos_degFlat.png +0 -0
  2280. psychopy/tests/data/beatandrcos_degFlatPos.png +0 -0
  2281. psychopy/tests/data/beatandrcos_height.png +0 -0
  2282. psychopy/tests/data/beatandrcos_norm.png +0 -0
  2283. psychopy/tests/data/beatandrcos_normAddBlend.png +0 -0
  2284. psychopy/tests/data/beatandrcos_normHexbackground.png +0 -0
  2285. psychopy/tests/data/beatandrcos_pix.png +0 -0
  2286. psychopy/tests/data/beatandrcos_stencil.png +0 -0
  2287. psychopy/tests/data/blend_add_cm.png +0 -0
  2288. psychopy/tests/data/blend_add_deg.png +0 -0
  2289. psychopy/tests/data/blend_add_degFlat.png +0 -0
  2290. psychopy/tests/data/blend_add_degFlatPos.png +0 -0
  2291. psychopy/tests/data/blend_add_height.png +0 -0
  2292. psychopy/tests/data/blend_add_norm.png +0 -0
  2293. psychopy/tests/data/blend_add_normAddBlend.png +0 -0
  2294. psychopy/tests/data/blend_add_normHexbackground.png +0 -0
  2295. psychopy/tests/data/blend_add_normNoShade.png +0 -0
  2296. psychopy/tests/data/blend_add_pix.png +0 -0
  2297. psychopy/tests/data/blend_add_stencil.png +0 -0
  2298. psychopy/tests/data/broken2020_2_5_resources/broken_resources.psyexp +84 -0
  2299. psychopy/tests/data/broken2020_2_5_resources/psychopy72.png +0 -0
  2300. psychopy/tests/data/bufferimg_gabor_cm.png +0 -0
  2301. psychopy/tests/data/bufferimg_gabor_deg.png +0 -0
  2302. psychopy/tests/data/bufferimg_gabor_degFlat.png +0 -0
  2303. psychopy/tests/data/bufferimg_gabor_degFlatPos.png +0 -0
  2304. psychopy/tests/data/bufferimg_gabor_height.png +0 -0
  2305. psychopy/tests/data/bufferimg_gabor_norm.png +0 -0
  2306. psychopy/tests/data/bufferimg_gabor_normAddBlend.png +0 -0
  2307. psychopy/tests/data/bufferimg_gabor_normHexbackground.png +0 -0
  2308. psychopy/tests/data/bufferimg_gabor_normNoShade.png +0 -0
  2309. psychopy/tests/data/bufferimg_gabor_pix.png +0 -0
  2310. psychopy/tests/data/bufferimg_gabor_stencil.png +0 -0
  2311. psychopy/tests/data/circleHex_cm.png +0 -0
  2312. psychopy/tests/data/circleHex_deg.png +0 -0
  2313. psychopy/tests/data/circleHex_degFlat.png +0 -0
  2314. psychopy/tests/data/circleHex_degFlatPos.png +0 -0
  2315. psychopy/tests/data/circleHex_height.png +0 -0
  2316. psychopy/tests/data/circleHex_norm.png +0 -0
  2317. psychopy/tests/data/circleHex_normAddBlend.png +0 -0
  2318. psychopy/tests/data/circleHex_normHexbackground.png +0 -0
  2319. psychopy/tests/data/circleHex_normNoShade.png +0 -0
  2320. psychopy/tests/data/circleHex_pix.png +0 -0
  2321. psychopy/tests/data/circleHex_stencil.png +0 -0
  2322. psychopy/tests/data/corrFullRandom.csv +16 -0
  2323. psychopy/tests/data/corrFullRandom.tsv +6 -0
  2324. psychopy/tests/data/corrFullRandomTH2.csv +16 -0
  2325. psychopy/tests/data/corrMultiKeyExpWide.csv +3 -0
  2326. psychopy/tests/data/corrMultiKeyTrials.csv +8 -0
  2327. psychopy/tests/data/corrMultiKeyTrials.xlsx +0 -0
  2328. psychopy/tests/data/corrRandom.csv +16 -0
  2329. psychopy/tests/data/corrRandom.tsv +6 -0
  2330. psychopy/tests/data/corrRandomTH2.csv +16 -0
  2331. psychopy/tests/data/corrXlsx.xlsx +0 -0
  2332. psychopy/tests/data/correctScript/js/correctCodeComponent.js +181 -0
  2333. psychopy/tests/data/correctScript/js/correctImageComponent.js +204 -0
  2334. psychopy/tests/data/correctScript/js/correctKeyboardComponent.js +225 -0
  2335. psychopy/tests/data/correctScript/js/correctMouseComponent.js +221 -0
  2336. psychopy/tests/data/correctScript/js/correctMovieComponent.js +210 -0
  2337. psychopy/tests/data/correctScript/js/correctPolygonComponent.js +205 -0
  2338. psychopy/tests/data/correctScript/js/correctSliderComponent.js +209 -0
  2339. psychopy/tests/data/correctScript/js/correctSoundComponent.js +205 -0
  2340. psychopy/tests/data/correctScript/js/correctTextComponent.js +207 -0
  2341. psychopy/tests/data/correctScript/python/correctApertureComponent.py +157 -0
  2342. psychopy/tests/data/correctScript/python/correctCodeComponent.py +135 -0
  2343. psychopy/tests/data/correctScript/python/correctDotsComponent.py +161 -0
  2344. psychopy/tests/data/correctScript/python/correctEnvGratingComponent.py +167 -0
  2345. psychopy/tests/data/correctScript/python/correctFormComponent.py +150 -0
  2346. psychopy/tests/data/correctScript/python/correctGratingComponent.py +158 -0
  2347. psychopy/tests/data/correctScript/python/correctImageComponent.py +160 -0
  2348. psychopy/tests/data/correctScript/python/correctJoyButtonsComponent.py +204 -0
  2349. psychopy/tests/data/correctScript/python/correctJoystickComponent.py +214 -0
  2350. psychopy/tests/data/correctScript/python/correctKeyboardComponent.py +169 -0
  2351. psychopy/tests/data/correctScript/python/correctMicrophoneComponent.py +163 -0
  2352. psychopy/tests/data/correctScript/python/correctMouseComponent.py +174 -0
  2353. psychopy/tests/data/correctScript/python/correctMovieComponent.py +160 -0
  2354. psychopy/tests/data/correctScript/python/correctNoiseStimComponent.py +169 -0
  2355. psychopy/tests/data/correctScript/python/correctParallelOutComponent.py +156 -0
  2356. psychopy/tests/data/correctScript/python/correctPatchComponent.py +159 -0
  2357. psychopy/tests/data/correctScript/python/correctPolygonComponent.py +159 -0
  2358. psychopy/tests/data/correctScript/python/correctQmixPumpComponent.py +174 -0
  2359. psychopy/tests/data/correctScript/python/correctRatingScaleComponent.py +152 -0
  2360. psychopy/tests/data/correctScript/python/correctSliderComponent.py +159 -0
  2361. psychopy/tests/data/correctScript/python/correctSoundComponent.py +157 -0
  2362. psychopy/tests/data/correctScript/python/correctStaticComponent.py +176 -0
  2363. psychopy/tests/data/correctScript/python/correctTextComponent.py +159 -0
  2364. psychopy/tests/data/correctScript/python/correctVariableComponent.py +139 -0
  2365. psychopy/tests/data/correctScript/python/correctcedrusButtonBoxComponent.py +199 -0
  2366. psychopy/tests/data/correctScript/python/correctioLabsButtonBoxComponent.py +187 -0
  2367. psychopy/tests/data/dataTest.xlsx +0 -0
  2368. psychopy/tests/data/dots_cm.png +0 -0
  2369. psychopy/tests/data/dots_deg.png +0 -0
  2370. psychopy/tests/data/dots_degFlat.png +0 -0
  2371. psychopy/tests/data/dots_degFlatPos.png +0 -0
  2372. psychopy/tests/data/dots_height.png +0 -0
  2373. psychopy/tests/data/dots_norm.png +0 -0
  2374. psychopy/tests/data/dots_normAddBlend.png +0 -0
  2375. psychopy/tests/data/dots_normHexbackground.png +0 -0
  2376. psychopy/tests/data/dots_normNoShade.png +0 -0
  2377. psychopy/tests/data/dots_pix.png +0 -0
  2378. psychopy/tests/data/dots_stencil.png +0 -0
  2379. psychopy/tests/data/duplicateHeaders.csv +2 -0
  2380. psychopy/tests/data/elarray1_cm.png +0 -0
  2381. psychopy/tests/data/elarray1_deg.png +0 -0
  2382. psychopy/tests/data/elarray1_degFlat.png +0 -0
  2383. psychopy/tests/data/elarray1_degFlatPos.png +0 -0
  2384. psychopy/tests/data/elarray1_height.png +0 -0
  2385. psychopy/tests/data/elarray1_norm.png +0 -0
  2386. psychopy/tests/data/elarray1_normAddBlend.png +0 -0
  2387. psychopy/tests/data/elarray1_normHexbackground.png +0 -0
  2388. psychopy/tests/data/elarray1_pix.png +0 -0
  2389. psychopy/tests/data/elarray1_stencil.png +0 -0
  2390. psychopy/tests/data/envelopeandrcos_cm.png +0 -0
  2391. psychopy/tests/data/envelopeandrcos_deg.png +0 -0
  2392. psychopy/tests/data/envelopeandrcos_degFlat.png +0 -0
  2393. psychopy/tests/data/envelopeandrcos_degFlatPos.png +0 -0
  2394. psychopy/tests/data/envelopeandrcos_height.png +0 -0
  2395. psychopy/tests/data/envelopeandrcos_norm.png +0 -0
  2396. psychopy/tests/data/envelopeandrcos_normAddBlend.png +0 -0
  2397. psychopy/tests/data/envelopeandrcos_normHexbackground.png +0 -0
  2398. psychopy/tests/data/envelopeandrcos_pix.png +0 -0
  2399. psychopy/tests/data/envelopeandrcos_stencil.png +0 -0
  2400. psychopy/tests/data/envelopepowerandrcos_cm.png +0 -0
  2401. psychopy/tests/data/envelopepowerandrcos_deg.png +0 -0
  2402. psychopy/tests/data/envelopepowerandrcos_degFlat.png +0 -0
  2403. psychopy/tests/data/envelopepowerandrcos_degFlatPos.png +0 -0
  2404. psychopy/tests/data/envelopepowerandrcos_height.png +0 -0
  2405. psychopy/tests/data/envelopepowerandrcos_norm.png +0 -0
  2406. psychopy/tests/data/envelopepowerandrcos_normAddBlend.png +0 -0
  2407. psychopy/tests/data/envelopepowerandrcos_normHexbackground.png +0 -0
  2408. psychopy/tests/data/envelopepowerandrcos_pix.png +0 -0
  2409. psychopy/tests/data/envelopepowerandrcos_stencil.png +0 -0
  2410. psychopy/tests/data/filltext.png +0 -0
  2411. psychopy/tests/data/form_font_demographics.png +0 -0
  2412. psychopy/tests/data/form_font_demographics.xlsx +0 -0
  2413. psychopy/tests/data/form_font_languages.png +0 -0
  2414. psychopy/tests/data/form_font_languages.xlsx +0 -0
  2415. psychopy/tests/data/form_font_nonstandard.png +0 -0
  2416. psychopy/tests/data/futureParams.psyexp +150 -0
  2417. psychopy/tests/data/gabor1_cm.png +0 -0
  2418. psychopy/tests/data/gabor1_deg.png +0 -0
  2419. psychopy/tests/data/gabor1_degFlat.png +0 -0
  2420. psychopy/tests/data/gabor1_degFlatPos.png +0 -0
  2421. psychopy/tests/data/gabor1_height.png +0 -0
  2422. psychopy/tests/data/gabor1_norm.png +0 -0
  2423. psychopy/tests/data/gabor1_normAddBlend.png +0 -0
  2424. psychopy/tests/data/gabor1_normHexbackground.png +0 -0
  2425. psychopy/tests/data/gabor1_normNoShade.png +0 -0
  2426. psychopy/tests/data/gabor1_pix.png +0 -0
  2427. psychopy/tests/data/gabor1_stencil.png +0 -0
  2428. psychopy/tests/data/gabor2_cm.png +0 -0
  2429. psychopy/tests/data/gabor2_deg.png +0 -0
  2430. psychopy/tests/data/gabor2_degFlat.png +0 -0
  2431. psychopy/tests/data/gabor2_degFlatPos.png +0 -0
  2432. psychopy/tests/data/gabor2_height.png +0 -0
  2433. psychopy/tests/data/gabor2_norm.png +0 -0
  2434. psychopy/tests/data/gabor2_normAddBlend.png +0 -0
  2435. psychopy/tests/data/gabor2_normHexbackground.png +0 -0
  2436. psychopy/tests/data/gabor2_normNoShade.png +0 -0
  2437. psychopy/tests/data/gabor2_pix.png +0 -0
  2438. psychopy/tests/data/gabor2_stencil.png +0 -0
  2439. psychopy/tests/data/ghost_stroop.psyexp +131 -0
  2440. psychopy/tests/data/ghost_trialTypes.xlsx +0 -0
  2441. psychopy/tests/data/green_48000.flac.dist +0 -0
  2442. psychopy/tests/data/greyscale.jpg +0 -0
  2443. psychopy/tests/data/greyscale2.png +0 -0
  2444. psychopy/tests/data/greyscale2_cm.png +0 -0
  2445. psychopy/tests/data/greyscale2_deg.png +0 -0
  2446. psychopy/tests/data/greyscale2_degFlat.png +0 -0
  2447. psychopy/tests/data/greyscale2_degFlatPos.png +0 -0
  2448. psychopy/tests/data/greyscale2_height.png +0 -0
  2449. psychopy/tests/data/greyscale2_norm.png +0 -0
  2450. psychopy/tests/data/greyscale2_normAddBlend.png +0 -0
  2451. psychopy/tests/data/greyscale2_normHexbackground.png +0 -0
  2452. psychopy/tests/data/greyscale2_normNoShade.png +0 -0
  2453. psychopy/tests/data/greyscale2_pix.png +0 -0
  2454. psychopy/tests/data/greyscale2_stencil.png +0 -0
  2455. psychopy/tests/data/greyscaleLowContr_cm.png +0 -0
  2456. psychopy/tests/data/greyscaleLowContr_deg.png +0 -0
  2457. psychopy/tests/data/greyscaleLowContr_degFlat.png +0 -0
  2458. psychopy/tests/data/greyscaleLowContr_degFlatPos.png +0 -0
  2459. psychopy/tests/data/greyscaleLowContr_height.png +0 -0
  2460. psychopy/tests/data/greyscaleLowContr_norm.png +0 -0
  2461. psychopy/tests/data/greyscaleLowContr_normAddBlend.png +0 -0
  2462. psychopy/tests/data/greyscaleLowContr_normHexbackground.png +0 -0
  2463. psychopy/tests/data/greyscaleLowContr_normNoShade.png +0 -0
  2464. psychopy/tests/data/greyscaleLowContr_pix.png +0 -0
  2465. psychopy/tests/data/greyscaleLowContr_stencil.png +0 -0
  2466. psychopy/tests/data/greyscale_cm.png +0 -0
  2467. psychopy/tests/data/greyscale_deg.png +0 -0
  2468. psychopy/tests/data/greyscale_degFlat.png +0 -0
  2469. psychopy/tests/data/greyscale_degFlatPos.png +0 -0
  2470. psychopy/tests/data/greyscale_height.png +0 -0
  2471. psychopy/tests/data/greyscale_norm.png +0 -0
  2472. psychopy/tests/data/greyscale_normAddBlend.png +0 -0
  2473. psychopy/tests/data/greyscale_normHexbackground.png +0 -0
  2474. psychopy/tests/data/greyscale_normNoShade.png +0 -0
  2475. psychopy/tests/data/greyscale_pix.png +0 -0
  2476. psychopy/tests/data/greyscale_stencil.png +0 -0
  2477. psychopy/tests/data/imageAndGauss_cm.png +0 -0
  2478. psychopy/tests/data/imageAndGauss_deg.png +0 -0
  2479. psychopy/tests/data/imageAndGauss_degFlat.png +0 -0
  2480. psychopy/tests/data/imageAndGauss_degFlatPos.png +0 -0
  2481. psychopy/tests/data/imageAndGauss_height.png +0 -0
  2482. psychopy/tests/data/imageAndGauss_norm.png +0 -0
  2483. psychopy/tests/data/imageAndGauss_normAddBlend.png +0 -0
  2484. psychopy/tests/data/imageAndGauss_normHexbackground.png +0 -0
  2485. psychopy/tests/data/imageAndGauss_normNoShade.png +0 -0
  2486. psychopy/tests/data/imageAndGauss_pix.png +0 -0
  2487. psychopy/tests/data/imageAndGauss_stencil.png +0 -0
  2488. psychopy/tests/data/movFrame1_cm.png +0 -0
  2489. psychopy/tests/data/movFrame1_deg.png +0 -0
  2490. psychopy/tests/data/movFrame1_degFlat.png +0 -0
  2491. psychopy/tests/data/movFrame1_degFlatPos.png +0 -0
  2492. psychopy/tests/data/movFrame1_height.png +0 -0
  2493. psychopy/tests/data/movFrame1_norm.png +0 -0
  2494. psychopy/tests/data/movFrame1_normAddBlend.png +0 -0
  2495. psychopy/tests/data/movFrame1_normHexbackground.png +0 -0
  2496. psychopy/tests/data/movFrame1_normNoShade.png +0 -0
  2497. psychopy/tests/data/movFrame1_pix.png +0 -0
  2498. psychopy/tests/data/movFrame1_stencil.png +0 -0
  2499. psychopy/tests/data/multiKeypressExperiment.psydat +357 -0
  2500. psychopy/tests/data/multiKeypressTrialhandler.psydat +252 -0
  2501. psychopy/tests/data/multiStairConds.xlsx +0 -0
  2502. psychopy/tests/data/multiStairQuestPlus.xlsx +0 -0
  2503. psychopy/tests/data/newstyle.psydat +6155 -0
  2504. psychopy/tests/data/noiseAndRcos_cm.png +0 -0
  2505. psychopy/tests/data/noiseAndRcos_deg.png +0 -0
  2506. psychopy/tests/data/noiseAndRcos_degFlat.png +0 -0
  2507. psychopy/tests/data/noiseAndRcos_degFlatPos.png +0 -0
  2508. psychopy/tests/data/noiseAndRcos_height.png +0 -0
  2509. psychopy/tests/data/noiseAndRcos_norm.png +0 -0
  2510. psychopy/tests/data/noiseAndRcos_normAddBlend.png +0 -0
  2511. psychopy/tests/data/noiseAndRcos_normHexbackground.png +0 -0
  2512. psychopy/tests/data/noiseAndRcos_normNoShade.png +0 -0
  2513. psychopy/tests/data/noiseAndRcos_pix.png +0 -0
  2514. psychopy/tests/data/noiseAndRcos_stencil.png +0 -0
  2515. psychopy/tests/data/noiseFiltersAndRcos_cm.png +0 -0
  2516. psychopy/tests/data/noiseFiltersAndRcos_deg.png +0 -0
  2517. psychopy/tests/data/noiseFiltersAndRcos_degFlat.png +0 -0
  2518. psychopy/tests/data/noiseFiltersAndRcos_degFlatPos.png +0 -0
  2519. psychopy/tests/data/noiseFiltersAndRcos_height.png +0 -0
  2520. psychopy/tests/data/noiseFiltersAndRcos_norm.png +0 -0
  2521. psychopy/tests/data/noiseFiltersAndRcos_normAddBlend.png +0 -0
  2522. psychopy/tests/data/noiseFiltersAndRcos_normHexbackground.png +0 -0
  2523. psychopy/tests/data/noiseFiltersAndRcos_normNoShade.png +0 -0
  2524. psychopy/tests/data/noiseFiltersAndRcos_pix.png +0 -0
  2525. psychopy/tests/data/noiseFiltersAndRcos_stencil.png +0 -0
  2526. psychopy/tests/data/numpyImage_cm.png +0 -0
  2527. psychopy/tests/data/numpyImage_deg.png +0 -0
  2528. psychopy/tests/data/numpyImage_degFlat.png +0 -0
  2529. psychopy/tests/data/numpyImage_degFlatPos.png +0 -0
  2530. psychopy/tests/data/numpyImage_height.png +0 -0
  2531. psychopy/tests/data/numpyImage_norm.png +0 -0
  2532. psychopy/tests/data/numpyImage_normAddBlend.png +0 -0
  2533. psychopy/tests/data/numpyImage_normHexbackground.png +0 -0
  2534. psychopy/tests/data/numpyImage_normNoShade.png +0 -0
  2535. psychopy/tests/data/numpyImage_pix.png +0 -0
  2536. psychopy/tests/data/numpyImage_stencil.png +0 -0
  2537. psychopy/tests/data/numpyLowContr_cm.png +0 -0
  2538. psychopy/tests/data/numpyLowContr_deg.png +0 -0
  2539. psychopy/tests/data/numpyLowContr_degFlat.png +0 -0
  2540. psychopy/tests/data/numpyLowContr_degFlatPos.png +0 -0
  2541. psychopy/tests/data/numpyLowContr_height.png +0 -0
  2542. psychopy/tests/data/numpyLowContr_norm.png +0 -0
  2543. psychopy/tests/data/numpyLowContr_normAddBlend.png +0 -0
  2544. psychopy/tests/data/numpyLowContr_normHexbackground.png +0 -0
  2545. psychopy/tests/data/numpyLowContr_normNoShade.png +0 -0
  2546. psychopy/tests/data/numpyLowContr_pix.png +0 -0
  2547. psychopy/tests/data/numpyLowContr_stencil.png +0 -0
  2548. psychopy/tests/data/oldstyle.psydat +1534 -0
  2549. psychopy/tests/data/oldstyle_stair.psydat +263 -0
  2550. psychopy/tests/data/ratingscale1_cm.png +0 -0
  2551. psychopy/tests/data/ratingscale1_deg.png +0 -0
  2552. psychopy/tests/data/ratingscale1_degFlat.png +0 -0
  2553. psychopy/tests/data/ratingscale1_degFlatPos.png +0 -0
  2554. psychopy/tests/data/ratingscale1_height.png +0 -0
  2555. psychopy/tests/data/ratingscale1_norm.png +0 -0
  2556. psychopy/tests/data/ratingscale1_normAddBlend.png +0 -0
  2557. psychopy/tests/data/ratingscale1_normHexbackground.png +0 -0
  2558. psychopy/tests/data/ratingscale1_normNoShade.png +0 -0
  2559. psychopy/tests/data/ratingscale1_pix.png +0 -0
  2560. psychopy/tests/data/ratingscale1_stencil.png +0 -0
  2561. psychopy/tests/data/red_16000.flac.dist +0 -0
  2562. psychopy/tests/data/retroListParam.psyexp +82 -0
  2563. psychopy/tests/data/right_to_left_unidcode.xlsx +0 -0
  2564. psychopy/tests/data/sample.meshwarp.data +11522 -0
  2565. psychopy/tests/data/shape2_1_cm.png +0 -0
  2566. psychopy/tests/data/shape2_1_deg.png +0 -0
  2567. psychopy/tests/data/shape2_1_degFlat.png +0 -0
  2568. psychopy/tests/data/shape2_1_degFlatPos.png +0 -0
  2569. psychopy/tests/data/shape2_1_height.png +0 -0
  2570. psychopy/tests/data/shape2_1_norm.png +0 -0
  2571. psychopy/tests/data/shape2_1_normAddBlend.png +0 -0
  2572. psychopy/tests/data/shape2_1_normHexbackground.png +0 -0
  2573. psychopy/tests/data/shape2_1_normNoShade.png +0 -0
  2574. psychopy/tests/data/shape2_1_pix.png +0 -0
  2575. psychopy/tests/data/shape2_1_stencil.png +0 -0
  2576. psychopy/tests/data/shape2_2_cm.png +0 -0
  2577. psychopy/tests/data/shape2_2_deg.png +0 -0
  2578. psychopy/tests/data/shape2_2_degFlat.png +0 -0
  2579. psychopy/tests/data/shape2_2_degFlatPos.png +0 -0
  2580. psychopy/tests/data/shape2_2_height.png +0 -0
  2581. psychopy/tests/data/shape2_2_norm.png +0 -0
  2582. psychopy/tests/data/shape2_2_normAddBlend.png +0 -0
  2583. psychopy/tests/data/shape2_2_normHexbackground.png +0 -0
  2584. psychopy/tests/data/shape2_2_normNoShade.png +0 -0
  2585. psychopy/tests/data/shape2_2_pix.png +0 -0
  2586. psychopy/tests/data/shape2_2_stencil.png +0 -0
  2587. psychopy/tests/data/simpleimage1_cm.png +0 -0
  2588. psychopy/tests/data/simpleimage1_deg.png +0 -0
  2589. psychopy/tests/data/simpleimage1_degFlat.png +0 -0
  2590. psychopy/tests/data/simpleimage1_degFlatPos.png +0 -0
  2591. psychopy/tests/data/simpleimage1_height.png +0 -0
  2592. psychopy/tests/data/simpleimage1_norm.png +0 -0
  2593. psychopy/tests/data/simpleimage1_normAddBlend.png +0 -0
  2594. psychopy/tests/data/simpleimage1_normHexbackground.png +0 -0
  2595. psychopy/tests/data/simpleimage1_normNoShade.png +0 -0
  2596. psychopy/tests/data/simpleimage1_pix.png +0 -0
  2597. psychopy/tests/data/simpleimage1_stencil.png +0 -0
  2598. psychopy/tests/data/test001EntryImporting.psyexp +66 -0
  2599. psychopy/tests/data/testMovie.mp4 +0 -0
  2600. psychopy/tests/data/test_basic_run.py +1 -0
  2601. psychopy/tests/data/test_circle_radius_.1height.png +0 -0
  2602. psychopy/tests/data/test_circle_radius_.2height.png +0 -0
  2603. psychopy/tests/data/test_circle_radius_10pix.png +0 -0
  2604. psychopy/tests/data/test_circle_radius_20pix.png +0 -0
  2605. psychopy/tests/data/test_components/testClearKeyboard/testClearKeyboard.psyexp +200 -0
  2606. psychopy/tests/data/test_form_combinations_choice_bigItem.png +0 -0
  2607. psychopy/tests/data/test_form_combinations_choice_bigItemOverflow.png +0 -0
  2608. psychopy/tests/data/test_form_combinations_choice_bigResp.png +0 -0
  2609. psychopy/tests/data/test_form_combinations_choice_bigRespOverflow.png +0 -0
  2610. psychopy/tests/data/test_form_combinations_description_bigItem.png +0 -0
  2611. psychopy/tests/data/test_form_combinations_description_bigItemOverflow.png +0 -0
  2612. psychopy/tests/data/test_form_combinations_description_bigResp.png +0 -0
  2613. psychopy/tests/data/test_form_combinations_description_bigRespOverflow.png +0 -0
  2614. psychopy/tests/data/test_form_combinations_free text_bigItem.png +0 -0
  2615. psychopy/tests/data/test_form_combinations_free text_bigItemOverflow.png +0 -0
  2616. psychopy/tests/data/test_form_combinations_free text_bigResp.png +0 -0
  2617. psychopy/tests/data/test_form_combinations_free text_bigRespOverflow.png +0 -0
  2618. psychopy/tests/data/test_form_combinations_heading_bigItem.png +0 -0
  2619. psychopy/tests/data/test_form_combinations_heading_bigItemOverflow.png +0 -0
  2620. psychopy/tests/data/test_form_combinations_heading_bigResp.png +0 -0
  2621. psychopy/tests/data/test_form_combinations_heading_bigRespOverflow.png +0 -0
  2622. psychopy/tests/data/test_form_combinations_radio_bigItem.png +0 -0
  2623. psychopy/tests/data/test_form_combinations_radio_bigItemOverflow.png +0 -0
  2624. psychopy/tests/data/test_form_combinations_radio_bigResp.png +0 -0
  2625. psychopy/tests/data/test_form_combinations_radio_bigRespOverflow.png +0 -0
  2626. psychopy/tests/data/test_form_combinations_rating_bigItem.png +0 -0
  2627. psychopy/tests/data/test_form_combinations_rating_bigItemOverflow.png +0 -0
  2628. psychopy/tests/data/test_form_combinations_rating_bigResp.png +0 -0
  2629. psychopy/tests/data/test_form_combinations_rating_bigRespOverflow.png +0 -0
  2630. psychopy/tests/data/test_form_combinations_slider_bigItem.png +0 -0
  2631. psychopy/tests/data/test_form_combinations_slider_bigItemOverflow.png +0 -0
  2632. psychopy/tests/data/test_form_combinations_slider_bigResp.png +0 -0
  2633. psychopy/tests/data/test_form_combinations_slider_bigRespOverflow.png +0 -0
  2634. psychopy/tests/data/test_get_resources/blue.png +0 -0
  2635. psychopy/tests/data/test_get_resources/groupA.csv +3 -0
  2636. psychopy/tests/data/test_get_resources/groupB.csv +3 -0
  2637. psychopy/tests/data/test_get_resources/groups.csv +3 -0
  2638. psychopy/tests/data/test_get_resources/handledbyrm_constrloop.psyexp +143 -0
  2639. psychopy/tests/data/test_get_resources/handledbyrm_noloop.psyexp +114 -0
  2640. psychopy/tests/data/test_get_resources/handledbyrm_recurloop.psyexp +138 -0
  2641. psychopy/tests/data/test_get_resources/handledbyrm_strloop.psyexp +126 -0
  2642. psychopy/tests/data/test_get_resources/handledbystatic_constrloop.psyexp +141 -0
  2643. psychopy/tests/data/test_get_resources/handledbystatic_noloop.psyexp +112 -0
  2644. psychopy/tests/data/test_get_resources/handledbystatic_recurloop.psyexp +136 -0
  2645. psychopy/tests/data/test_get_resources/handledbystatic_strloop.psyexp +124 -0
  2646. psychopy/tests/data/test_get_resources/unhandled_constrloop.psyexp +128 -0
  2647. psychopy/tests/data/test_get_resources/unhandled_noloop.psyexp +99 -0
  2648. psychopy/tests/data/test_get_resources/unhandled_recurloop.psyexp +123 -0
  2649. psychopy/tests/data/test_get_resources/unhandled_strloop.psyexp +111 -0
  2650. psychopy/tests/data/test_get_resources/white.png +0 -0
  2651. psychopy/tests/data/test_get_resources/yellow.png +0 -0
  2652. psychopy/tests/data/test_image_aspect_default_None.png +0 -0
  2653. psychopy/tests/data/test_image_aspect_default_xFull_yNone.png +0 -0
  2654. psychopy/tests/data/test_image_aspect_default_xNone_yFull.png +0 -0
  2655. psychopy/tests/data/test_image_aspect_default_xNone_yNone.png +0 -0
  2656. psychopy/tests/data/test_image_flip_anchor_horiz.png +0 -0
  2657. psychopy/tests/data/test_image_flip_anchor_vert.png +0 -0
  2658. psychopy/tests/data/test_loaded_namespace/test_counterbalance.psyexp +142 -0
  2659. psychopy/tests/data/test_loaded_namespace/test_custom_missing.psyexp +129 -0
  2660. psychopy/tests/data/test_loaded_namespace/test_missing_counterbalance.psyexp +116 -0
  2661. psychopy/tests/data/test_loaded_namespace/test_mix_exp.psyexp +181 -0
  2662. psychopy/tests/data/test_loaded_namespace/test_mix_missing.psyexp +140 -0
  2663. psychopy/tests/data/test_loaded_namespace/test_mix_name_calibration.psyexp +164 -0
  2664. psychopy/tests/data/test_loops/testLoopsBlocks.psyexp +161 -0
  2665. psychopy/tests/data/test_loops/testStaircase.psyexp +105 -0
  2666. psychopy/tests/data/test_loops/test_current_loop_attr.psyexp +185 -0
  2667. psychopy/tests/data/test_panorama/panoramaTestImage.png +0 -0
  2668. psychopy/tests/data/test_panorama/panoramaTestImage.svg +1 -0
  2669. psychopy/tests/data/test_panorama/testPanorama_mvmt_-0.3_-0.3.png +0 -0
  2670. psychopy/tests/data/test_panorama/testPanorama_mvmt_-0.3_0.3.png +0 -0
  2671. psychopy/tests/data/test_panorama/testPanorama_mvmt_-1.0_-0.3.png +0 -0
  2672. psychopy/tests/data/test_panorama/testPanorama_mvmt_-1.0_0.3.png +0 -0
  2673. psychopy/tests/data/test_panorama/testPanorama_mvmt_0.0_-1.0.png +0 -0
  2674. psychopy/tests/data/test_panorama/testPanorama_mvmt_0.0_1.0.png +0 -0
  2675. psychopy/tests/data/test_panorama/testPanorama_mvmt_0.3_-0.3.png +0 -0
  2676. psychopy/tests/data/test_panorama/testPanorama_mvmt_0.3_0.3.png +0 -0
  2677. psychopy/tests/data/test_resources.psyexp +491 -0
  2678. psychopy/tests/data/test_session/outside_root/externalExp.psyexp +116 -0
  2679. psychopy/tests/data/test_session/root/annotation/annotation.psyexp +161 -0
  2680. psychopy/tests/data/test_session/root/error/error.psyexp +93 -0
  2681. psychopy/tests/data/test_session/root/exp1/exp1.psyexp +133 -0
  2682. psychopy/tests/data/test_session/root/exp2/exp2.psyexp +133 -0
  2683. psychopy/tests/data/test_session/root/frameRate/frameRate.psyexp +114 -0
  2684. psychopy/tests/data/test_session/root/invUseVersion/invUseVersion.psyexp +133 -0
  2685. psychopy/tests/data/test_session/root/testClockFormat/testClockFormat.psyexp +122 -0
  2686. psychopy/tests/data/test_session/root/testCtrls/testCtrls.psyexp +115 -0
  2687. psychopy/tests/data/test_session/root/testEditExpInfo/testEditExpInfo.psyexp +135 -0
  2688. psychopy/tests/data/test_session/root/testFutureTrials/testFutureTrials.psyexp +155 -0
  2689. psychopy/tests/data/test_session/root/testNamedButtonBox/testNamedButtonBox.psyexp +145 -0
  2690. psychopy/tests/data/test_session/root/testTrialNav/trialNav.psyexp +158 -0
  2691. psychopy/tests/data/test_slider_horiz_accute_horiz.png +0 -0
  2692. psychopy/tests/data/test_slider_horiz_accute_vert.png +0 -0
  2693. psychopy/tests/data/test_slider_horiz_horiz.png +0 -0
  2694. psychopy/tests/data/test_slider_horiz_obtuse_horiz.png +0 -0
  2695. psychopy/tests/data/test_slider_horiz_obtuse_vert.png +0 -0
  2696. psychopy/tests/data/test_slider_horiz_vert.png +0 -0
  2697. psychopy/tests/data/test_slider_ticklabelloc_blanks.png +0 -0
  2698. psychopy/tests/data/test_slider_ticklabelloc_clustered.png +0 -0
  2699. psychopy/tests/data/test_slider_ticklabelloc_morelabels.png +0 -0
  2700. psychopy/tests/data/test_slider_ticklabelloc_morelabelsclustered.png +0 -0
  2701. psychopy/tests/data/test_slider_ticklabelloc_moreticks.png +0 -0
  2702. psychopy/tests/data/test_slider_ticklabelloc_moreticksclustered.png +0 -0
  2703. psychopy/tests/data/test_slider_ticklabelloc_nolabels.png +0 -0
  2704. psychopy/tests/data/test_slider_ticklabelloc_noticks.png +0 -0
  2705. psychopy/tests/data/test_slider_ticklabelloc_simple.png +0 -0
  2706. psychopy/tests/data/test_slider_triangle_horiz_False_flip_False.png +0 -0
  2707. psychopy/tests/data/test_slider_triangle_horiz_False_flip_True.png +0 -0
  2708. psychopy/tests/data/test_slider_triangle_horiz_True_flip_False.png +0 -0
  2709. psychopy/tests/data/test_slider_triangle_horiz_True_flip_True.png +0 -0
  2710. psychopy/tests/data/test_sounds/default_16000.wav +0 -0
  2711. psychopy/tests/data/test_sounds/default_192000.wav +0 -0
  2712. psychopy/tests/data/test_sounds/default_22050.wav +0 -0
  2713. psychopy/tests/data/test_sounds/default_32000.wav +0 -0
  2714. psychopy/tests/data/test_sounds/default_44100.wav +0 -0
  2715. psychopy/tests/data/test_sounds/default_48000.wav +0 -0
  2716. psychopy/tests/data/test_sounds/default_8000.wav +0 -0
  2717. psychopy/tests/data/test_sounds/default_96000.wav +0 -0
  2718. psychopy/tests/data/test_static_component_script.psyexp +76 -0
  2719. psychopy/tests/data/test_win_bg_large_256_default.png +0 -0
  2720. psychopy/tests/data/test_win_bg_large_500_default.png +0 -0
  2721. psychopy/tests/data/test_win_bg_small_200_default.png +0 -0
  2722. psychopy/tests/data/test_win_bg_small_256_default.png +0 -0
  2723. psychopy/tests/data/test_win_bg_tall_200_default.png +0 -0
  2724. psychopy/tests/data/test_win_bg_tall_256_default.png +0 -0
  2725. psychopy/tests/data/test_win_bg_tall_500_default.png +0 -0
  2726. psychopy/tests/data/test_win_bg_tall_fill_default.png +0 -0
  2727. psychopy/tests/data/test_win_bg_wide_200_default.png +0 -0
  2728. psychopy/tests/data/test_win_bg_wide_256_default.png +0 -0
  2729. psychopy/tests/data/test_win_bg_wide_500_default.png +0 -0
  2730. psychopy/tests/data/test_win_bg_wide_fill_default.png +0 -0
  2731. psychopy/tests/data/test_win_bgcolor_blue.png +0 -0
  2732. psychopy/tests/data/test_win_bgcolor_green.png +0 -0
  2733. psychopy/tests/data/test_win_bgcolor_red.png +0 -0
  2734. psychopy/tests/data/testimage.jpg +0 -0
  2735. psychopy/tests/data/testimagegray.jpg +0 -0
  2736. psychopy/tests/data/testpixels.png +0 -0
  2737. psychopy/tests/data/testwedges.png +0 -0
  2738. psychopy/tests/data/text1_cm.png +0 -0
  2739. psychopy/tests/data/text1_deg.png +0 -0
  2740. psychopy/tests/data/text1_degFlat.png +0 -0
  2741. psychopy/tests/data/text1_degFlatPos.png +0 -0
  2742. psychopy/tests/data/text1_height.png +0 -0
  2743. psychopy/tests/data/text1_norm.png +0 -0
  2744. psychopy/tests/data/text1_normAddBlend.png +0 -0
  2745. psychopy/tests/data/text1_normHexbackground.png +0 -0
  2746. psychopy/tests/data/text1_normNoShade.png +0 -0
  2747. psychopy/tests/data/text1_pix.png +0 -0
  2748. psychopy/tests/data/text1_stencil.png +0 -0
  2749. psychopy/tests/data/text2_cm.png +0 -0
  2750. psychopy/tests/data/text2_deg.png +0 -0
  2751. psychopy/tests/data/text2_degFlat.png +0 -0
  2752. psychopy/tests/data/text2_degFlatPos.png +0 -0
  2753. psychopy/tests/data/text2_norm.png +0 -0
  2754. psychopy/tests/data/text2_normNoShade.png +0 -0
  2755. psychopy/tests/data/text2_pix.png +0 -0
  2756. psychopy/tests/data/textbox_charcolors_default_roygbiv.png +0 -0
  2757. psychopy/tests/data/textbox_charcolors_default_white_hello_black_there.png +0 -0
  2758. psychopy/tests/data/textbox_default_align_bottom_center.png +0 -0
  2759. psychopy/tests/data/textbox_default_align_bottom_left.png +0 -0
  2760. psychopy/tests/data/textbox_default_align_bottom_right.png +0 -0
  2761. psychopy/tests/data/textbox_default_align_center.png +0 -0
  2762. psychopy/tests/data/textbox_default_align_center_center.png +0 -0
  2763. psychopy/tests/data/textbox_default_align_center_left.png +0 -0
  2764. psychopy/tests/data/textbox_default_align_center_right.png +0 -0
  2765. psychopy/tests/data/textbox_default_align_centre.png +0 -0
  2766. psychopy/tests/data/textbox_default_align_centre_centre.png +0 -0
  2767. psychopy/tests/data/textbox_default_align_more_than_two_words.png +0 -0
  2768. psychopy/tests/data/textbox_default_align_someword.png +0 -0
  2769. psychopy/tests/data/textbox_default_align_top_center.png +0 -0
  2770. psychopy/tests/data/textbox_default_align_top_left.png +0 -0
  2771. psychopy/tests/data/textbox_default_align_top_right.png +0 -0
  2772. psychopy/tests/data/textbox_default_colors_WOB.png +0 -0
  2773. psychopy/tests/data/textbox_default_colors_exemplar1.png +0 -0
  2774. psychopy/tests/data/textbox_default_colors_exemplar2.png +0 -0
  2775. psychopy/tests/data/textbox_default_colors_exemplar3.png +0 -0
  2776. psychopy/tests/data/textbox_default_colors_tyke1.png +0 -0
  2777. psychopy/tests/data/textbox_default_colors_tyke2.png +0 -0
  2778. psychopy/tests/data/textbox_default_colors_tyke3.png +0 -0
  2779. psychopy/tests/data/textbox_default_cutoff_top.png +0 -0
  2780. psychopy/tests/data/textbox_default_exemplar_1.png +0 -0
  2781. psychopy/tests/data/textbox_default_exemplar_2.png +0 -0
  2782. psychopy/tests/data/textbox_default_exemplar_3.png +0 -0
  2783. psychopy/tests/data/textbox_default_exemplar_4.png +0 -0
  2784. psychopy/tests/data/textbox_default_tyke_1.png +0 -0
  2785. psychopy/tests/data/textbox_default_tyke_2.png +0 -0
  2786. psychopy/tests/data/textbox_typing_blank.png +0 -0
  2787. psychopy/tests/data/textbox_typing_longKoeran.png +0 -0
  2788. psychopy/tests/data/textbox_typing_longWord.png +0 -0
  2789. psychopy/tests/data/textbox_typing_navDel.png +0 -0
  2790. psychopy/tests/data/textbox_typing_navLR.png +0 -0
  2791. psychopy/tests/data/textbox_typing_newline.png +0 -0
  2792. psychopy/tests/data/textbox_typing_pangram.png +0 -0
  2793. psychopy/tests/data/textbox_uax14_align_bottom_center.png +0 -0
  2794. psychopy/tests/data/textbox_uax14_align_bottom_left.png +0 -0
  2795. psychopy/tests/data/textbox_uax14_align_bottom_right.png +0 -0
  2796. psychopy/tests/data/textbox_uax14_align_center.png +0 -0
  2797. psychopy/tests/data/textbox_uax14_align_center_center.png +0 -0
  2798. psychopy/tests/data/textbox_uax14_align_center_left.png +0 -0
  2799. psychopy/tests/data/textbox_uax14_align_center_right.png +0 -0
  2800. psychopy/tests/data/textbox_uax14_align_centre.png +0 -0
  2801. psychopy/tests/data/textbox_uax14_align_centre_centre.png +0 -0
  2802. psychopy/tests/data/textbox_uax14_align_more_than_two_words.png +0 -0
  2803. psychopy/tests/data/textbox_uax14_align_someword.png +0 -0
  2804. psychopy/tests/data/textbox_uax14_align_top_center.png +0 -0
  2805. psychopy/tests/data/textbox_uax14_align_top_left.png +0 -0
  2806. psychopy/tests/data/textbox_uax14_align_top_right.png +0 -0
  2807. psychopy/tests/data/textbox_uax14_colors_WOB.png +0 -0
  2808. psychopy/tests/data/textbox_uax14_colors_exemplar1.png +0 -0
  2809. psychopy/tests/data/textbox_uax14_colors_exemplar2.png +0 -0
  2810. psychopy/tests/data/textbox_uax14_colors_exemplar3.png +0 -0
  2811. psychopy/tests/data/textbox_uax14_colors_tyke1.png +0 -0
  2812. psychopy/tests/data/textbox_uax14_colors_tyke2.png +0 -0
  2813. psychopy/tests/data/textbox_uax14_colors_tyke3.png +0 -0
  2814. psychopy/tests/data/textbox_uax14_cutoff_top.png +0 -0
  2815. psychopy/tests/data/textbox_uax14_exemplar_1.png +0 -0
  2816. psychopy/tests/data/textbox_uax14_exemplar_2.png +0 -0
  2817. psychopy/tests/data/textbox_uax14_exemplar_3.png +0 -0
  2818. psychopy/tests/data/textbox_uax14_exemplar_4.png +0 -0
  2819. psychopy/tests/data/textbox_uax14_tyke_1.png +0 -0
  2820. psychopy/tests/data/textbox_uax14_tyke_2.png +0 -0
  2821. psychopy/tests/data/trialTypes.csv +1 -0
  2822. psychopy/tests/data/trialTypes.docx +0 -0
  2823. psychopy/tests/data/trialTypes.pkl +0 -0
  2824. psychopy/tests/data/trialTypes.tsv +7 -0
  2825. psychopy/tests/data/trialTypes.xls +0 -0
  2826. psychopy/tests/data/trialTypes.xlsx +0 -0
  2827. psychopy/tests/data/trialTypes_eu.csv +7 -0
  2828. psychopy/tests/data/trialsBlankCols.xlsx +0 -0
  2829. psychopy/tests/data/wedge1_cm.png +0 -0
  2830. psychopy/tests/data/wedge1_deg.png +0 -0
  2831. psychopy/tests/data/wedge1_degFlat.png +0 -0
  2832. psychopy/tests/data/wedge1_degFlatPos.png +0 -0
  2833. psychopy/tests/data/wedge1_height.png +0 -0
  2834. psychopy/tests/data/wedge1_norm.png +0 -0
  2835. psychopy/tests/data/wedge1_normAddBlend.png +0 -0
  2836. psychopy/tests/data/wedge1_normHexbackground.png +0 -0
  2837. psychopy/tests/data/wedge1_normNoShade.png +0 -0
  2838. psychopy/tests/data/wedge1_pix.png +0 -0
  2839. psychopy/tests/data/wedge1_stencil.png +0 -0
  2840. psychopy/tests/data/wedge2_cm.png +0 -0
  2841. psychopy/tests/data/wedge2_deg.png +0 -0
  2842. psychopy/tests/data/wedge2_degFlat.png +0 -0
  2843. psychopy/tests/data/wedge2_degFlatPos.png +0 -0
  2844. psychopy/tests/data/wedge2_height.png +0 -0
  2845. psychopy/tests/data/wedge2_norm.png +0 -0
  2846. psychopy/tests/data/wedge2_normAddBlend.png +0 -0
  2847. psychopy/tests/data/wedge2_normHexbackground.png +0 -0
  2848. psychopy/tests/data/wedge2_normNoShade.png +0 -0
  2849. psychopy/tests/data/wedge2_pix.png +0 -0
  2850. psychopy/tests/data/wedge2_stencil.png +0 -0
  2851. psychopy/tests/data/winScalePos_ori0_scale-1_-1_pos-0.4_0.png +0 -0
  2852. psychopy/tests/data/winScalePos_ori0_scale-1_-1_pos0_0.png +0 -0
  2853. psychopy/tests/data/winScalePos_ori0_scale-1_1_pos-0.4_0.png +0 -0
  2854. psychopy/tests/data/winScalePos_ori0_scale-1_1_pos0_0.png +0 -0
  2855. psychopy/tests/data/winScalePos_ori0_scale-2_-2_pos-0.4_0.png +0 -0
  2856. psychopy/tests/data/winScalePos_ori0_scale-2_-2_pos0_0.png +0 -0
  2857. psychopy/tests/data/winScalePos_ori0_scale-2_2_pos-0.4_0.png +0 -0
  2858. psychopy/tests/data/winScalePos_ori0_scale-2_2_pos0_0.png +0 -0
  2859. psychopy/tests/data/winScalePos_ori0_scale1_-1_pos-0.4_0.png +0 -0
  2860. psychopy/tests/data/winScalePos_ori0_scale1_-1_pos0_0.png +0 -0
  2861. psychopy/tests/data/winScalePos_ori0_scale1_1_pos-0.4_0.png +0 -0
  2862. psychopy/tests/data/winScalePos_ori0_scale1_1_pos0_0.png +0 -0
  2863. psychopy/tests/data/winScalePos_ori0_scale2_-2_pos-0.4_0.png +0 -0
  2864. psychopy/tests/data/winScalePos_ori0_scale2_-2_pos0_0.png +0 -0
  2865. psychopy/tests/data/winScalePos_ori0_scale2_2_pos-0.4_0.png +0 -0
  2866. psychopy/tests/data/winScalePos_ori0_scale2_2_pos0_0.png +0 -0
  2867. psychopy/tests/data/winScalePos_ori45_scale-1_-1_pos0_0.png +0 -0
  2868. psychopy/tests/data/winScalePos_ori45_scale-1_1_pos0_0.png +0 -0
  2869. psychopy/tests/data/winScalePos_ori45_scale-2_-2_pos0_0.png +0 -0
  2870. psychopy/tests/data/winScalePos_ori45_scale-2_2_pos0_0.png +0 -0
  2871. psychopy/tests/data/winScalePos_ori45_scale1_-1_pos0_0.png +0 -0
  2872. psychopy/tests/data/winScalePos_ori45_scale1_1_pos0_0.png +0 -0
  2873. psychopy/tests/data/winScalePos_ori45_scale2_-2_pos0_0.png +0 -0
  2874. psychopy/tests/data/winScalePos_ori45_scale2_2_pos0_0.png +0 -0
  2875. psychopy/tests/doc/run_btn.png +0 -0
  2876. psychopy/tests/doc/test-suite-bugs.jpg +0 -0
  2877. psychopy/tests/doc/user-bugs.jpg +0 -0
  2878. psychopy/tests/dummy_xorg.conf +21 -0
  2879. psychopy/tests/run.py +50 -0
  2880. psychopy/tests/test_Installation.py +38 -0
  2881. psychopy/tests/test_alerts/test_alerts.py +37 -0
  2882. psychopy/tests/test_alerts/test_alerttools.py +132 -0
  2883. psychopy/tests/test_app/__init__.py +0 -0
  2884. psychopy/tests/test_app/conftest.py +40 -0
  2885. psychopy/tests/test_app/test_builder/__init__.py +0 -0
  2886. psychopy/tests/test_app/test_builder/test_BuilderFrame.py +166 -0
  2887. psychopy/tests/test_app/test_builder/test_CompileFromBuilder.py +133 -0
  2888. psychopy/tests/test_app/test_builder/test_ComponentDialogs.py +98 -0
  2889. psychopy/tests/test_app/test_command_line.py +65 -0
  2890. psychopy/tests/test_app/test_runner/__init__.py +0 -0
  2891. psychopy/tests/test_app/test_runner/test_RunnerFrame.py +166 -0
  2892. psychopy/tests/test_app/test_speed.py +147 -0
  2893. psychopy/tests/test_app/test_themes/test_icons.py +79 -0
  2894. psychopy/tests/test_codecov.py +29 -0
  2895. psychopy/tests/test_colors/test_Color.py +41 -0
  2896. psychopy/tests/test_data/dataPrev.xlsx +0 -0
  2897. psychopy/tests/test_data/test_ExperimentHandler.py +171 -0
  2898. psychopy/tests/test_data/test_MultiStairHandler.py +174 -0
  2899. psychopy/tests/test_data/test_StairHandlers.py +1241 -0
  2900. psychopy/tests/test_data/test_TrialHandler.py +335 -0
  2901. psychopy/tests/test_data/test_TrialHandler2.py +584 -0
  2902. psychopy/tests/test_data/test_TrialHandlerExt.py +359 -0
  2903. psychopy/tests/test_data/test_fitFunctions.py +101 -0
  2904. psychopy/tests/test_data/test_utils.py +173 -0
  2905. psychopy/tests/test_data/test_xlsx.py +92 -0
  2906. psychopy/tests/test_demos/test_builder_demos.py +52 -0
  2907. psychopy/tests/test_experiment/__init__.py +0 -0
  2908. psychopy/tests/test_experiment/known_py_diffs.txt +47 -0
  2909. psychopy/tests/test_experiment/needs_wx/__init__.py +0 -0
  2910. psychopy/tests/test_experiment/needs_wx/componsTemplate.txt +14780 -0
  2911. psychopy/tests/test_experiment/needs_wx/genComponsTemplate.py +130 -0
  2912. psychopy/tests/test_experiment/needs_wx/test_Experiment.py +406 -0
  2913. psychopy/tests/test_experiment/needs_wx/test_components.py +170 -0
  2914. psychopy/tests/test_experiment/test_component_compile_js.py +59 -0
  2915. psychopy/tests/test_experiment/test_component_compile_python.py +165 -0
  2916. psychopy/tests/test_experiment/test_components/__init__.py +1 -0
  2917. psychopy/tests/test_experiment/test_components/test_ButtonBoxComponent.py +218 -0
  2918. psychopy/tests/test_experiment/test_components/test_CodeComponent.py +70 -0
  2919. psychopy/tests/test_experiment/test_components/test_GratingComponent.py +7 -0
  2920. psychopy/tests/test_experiment/test_components/test_ImageComponent.py +8 -0
  2921. psychopy/tests/test_experiment/test_components/test_KeyboardComponent.py +28 -0
  2922. psychopy/tests/test_experiment/test_components/test_MouseComponent.py +136 -0
  2923. psychopy/tests/test_experiment/test_components/test_PolygonComponent.py +65 -0
  2924. psychopy/tests/test_experiment/test_components/test_ResourceManagerComponent.py +50 -0
  2925. psychopy/tests/test_experiment/test_components/test_RoutineSettingsComponent.py +16 -0
  2926. psychopy/tests/test_experiment/test_components/test_SettingsComponent.py +80 -0
  2927. psychopy/tests/test_experiment/test_components/test_StaticComponent.py +51 -0
  2928. psychopy/tests/test_experiment/test_components/test_UnknownPluginComponent.py +27 -0
  2929. psychopy/tests/test_experiment/test_components/test_all_components.py +104 -0
  2930. psychopy/tests/test_experiment/test_components/test_base_components.py +477 -0
  2931. psychopy/tests/test_experiment/test_experiment.py +199 -0
  2932. psychopy/tests/test_experiment/test_loops.py +103 -0
  2933. psychopy/tests/test_experiment/test_params.py +363 -0
  2934. psychopy/tests/test_experiment/test_py2js.py +230 -0
  2935. psychopy/tests/test_experiment/test_routines/__init__.py +1 -0
  2936. psychopy/tests/test_experiment/test_routines/test_EyetrackerCalibrationRoutine.py +9 -0
  2937. psychopy/tests/test_experiment/test_routines/test_PhotodiodeValidationRoutine.py +9 -0
  2938. psychopy/tests/test_experiment/test_routines/test_all_routines.py +23 -0
  2939. psychopy/tests/test_experiment/test_routines/test_base_routine.py +154 -0
  2940. psychopy/tests/test_experiment/test_routines/test_standalone_routines.py +36 -0
  2941. psychopy/tests/test_gui/test_DlgFromDictQt.py +82 -0
  2942. psychopy/tests/test_gui/test_DlgFromDictWx.py +82 -0
  2943. psychopy/tests/test_hardware/__init__.py +0 -0
  2944. psychopy/tests/test_hardware/test_device_manager.py +36 -0
  2945. psychopy/tests/test_hardware/test_emulator.py +106 -0
  2946. psychopy/tests/test_hardware/test_gammasci.py +35 -0
  2947. psychopy/tests/test_hardware/test_keyboard.py +241 -0
  2948. psychopy/tests/test_hardware/test_keyboard_events.py +362 -0
  2949. psychopy/tests/test_hardware/test_photodiode.py +66 -0
  2950. psychopy/tests/test_hardware/test_ports.py +129 -0
  2951. psychopy/tests/test_iohub/__init__.py +1 -0
  2952. psychopy/tests/test_iohub/test_computer.py +124 -0
  2953. psychopy/tests/test_iohub/test_event_get_and_clear.py +94 -0
  2954. psychopy/tests/test_iohub/test_keyboard.py +91 -0
  2955. psychopy/tests/test_iohub/test_launch.py +19 -0
  2956. psychopy/tests/test_iohub/testutil.py +54 -0
  2957. psychopy/tests/test_liaison/test_Liaison.py +275 -0
  2958. psychopy/tests/test_misc/__init__.py +0 -0
  2959. psychopy/tests/test_misc/memory_usage.py +164 -0
  2960. psychopy/tests/test_misc/test_GammaFun.py +15 -0
  2961. psychopy/tests/test_misc/test_clock.py +63 -0
  2962. psychopy/tests/test_misc/test_color.py +205 -0
  2963. psychopy/tests/test_misc/test_core.py +451 -0
  2964. psychopy/tests/test_misc/test_event.py +308 -0
  2965. psychopy/tests/test_misc/test_info.py +18 -0
  2966. psychopy/tests/test_misc/test_layout.py +49 -0
  2967. psychopy/tests/test_misc/test_locale.py +38 -0
  2968. psychopy/tests/test_misc/test_web.py +22 -0
  2969. psychopy/tests/test_monitors/test_monitors.py +91 -0
  2970. psychopy/tests/test_plugins/__init__.py +0 -0
  2971. psychopy/tests/test_plugins/test_plugin_stubs.py +125 -0
  2972. psychopy/tests/test_preferences/__init__.py +0 -0
  2973. psychopy/tests/test_preferences/test_prefs.py +28 -0
  2974. psychopy/tests/test_session/test_Session.py +257 -0
  2975. psychopy/tests/test_sound/__init__.py +0 -0
  2976. psychopy/tests/test_sound/test_audioclip.py +331 -0
  2977. psychopy/tests/test_sound/test_hamming.py +45 -0
  2978. psychopy/tests/test_sound/test_sound.py +138 -0
  2979. psychopy/tests/test_sound/test_sound_pygame.py +67 -0
  2980. psychopy/tests/test_tools/test_animationtools.py +51 -0
  2981. psychopy/tests/test_tools/test_arraytools.py +242 -0
  2982. psychopy/tests/test_tools/test_attributetools.py +257 -0
  2983. psychopy/tests/test_tools/test_colorspacetools.py +150 -0
  2984. psychopy/tests/test_tools/test_environmenttools.py +52 -0
  2985. psychopy/tests/test_tools/test_fileerrortools.py +97 -0
  2986. psychopy/tests/test_tools/test_filetools.py +104 -0
  2987. psychopy/tests/test_tools/test_imagetools.py +57 -0
  2988. psychopy/tests/test_tools/test_mathtools.py +688 -0
  2989. psychopy/tests/test_tools/test_stringtools.py +143 -0
  2990. psychopy/tests/test_tools/test_versionchooser.py +209 -0
  2991. psychopy/tests/test_tools/test_viewtools.py +168 -0
  2992. psychopy/tests/test_validators/__init__.py +0 -0
  2993. psychopy/tests/test_validators/test_voicekeyValidator.py +95 -0
  2994. psychopy/tests/test_visual/__init__.py +0 -0
  2995. psychopy/tests/test_visual/measure_parity.py +243 -0
  2996. psychopy/tests/test_visual/test_all_stimuli.py +655 -0
  2997. psychopy/tests/test_visual/test_basevisual.py +564 -0
  2998. psychopy/tests/test_visual/test_brush.py +68 -0
  2999. psychopy/tests/test_visual/test_button.py +15 -0
  3000. psychopy/tests/test_visual/test_circle.py +74 -0
  3001. psychopy/tests/test_visual/test_contains_overlaps.py +242 -0
  3002. psychopy/tests/test_visual/test_custommouse.py +47 -0
  3003. psychopy/tests/test_visual/test_dots.py +155 -0
  3004. psychopy/tests/test_visual/test_form.py +414 -0
  3005. psychopy/tests/test_visual/test_framepacking.py +41 -0
  3006. psychopy/tests/test_visual/test_gamma.py +152 -0
  3007. psychopy/tests/test_visual/test_glfw_backend.py +14 -0
  3008. psychopy/tests/test_visual/test_image.py +219 -0
  3009. psychopy/tests/test_visual/test_panorama.py +41 -0
  3010. psychopy/tests/test_visual/test_progress.py +96 -0
  3011. psychopy/tests/test_visual/test_projections.py +215 -0
  3012. psychopy/tests/test_visual/test_projections_interactive.py +163 -0
  3013. psychopy/tests/test_visual/test_roi.py +105 -0
  3014. psychopy/tests/test_visual/test_shape.py +23 -0
  3015. psychopy/tests/test_visual/test_slider.py +328 -0
  3016. psychopy/tests/test_visual/test_target.py +35 -0
  3017. psychopy/tests/test_visual/test_textbox.py +508 -0
  3018. psychopy/tests/test_visual/test_winFlipTiming.py +95 -0
  3019. psychopy/tests/test_visual/test_winScalePos.py +78 -0
  3020. psychopy/tests/test_visual/test_window.py +124 -0
  3021. psychopy/tests/utils.py +372 -0
  3022. psychopy/tools/LineBreak.txt +3597 -0
  3023. psychopy/tools/__init__.py +9 -0
  3024. psychopy/tools/animationtools.py +49 -0
  3025. psychopy/tools/apptools.py +32 -0
  3026. psychopy/tools/arraytools.py +561 -0
  3027. psychopy/tools/attributetools.py +263 -0
  3028. psychopy/tools/audiotools.py +361 -0
  3029. psychopy/tools/colorspacetools.py +717 -0
  3030. psychopy/tools/coordinatetools.py +104 -0
  3031. psychopy/tools/environmenttools.py +62 -0
  3032. psychopy/tools/fileerrortools.py +66 -0
  3033. psychopy/tools/filetools.py +406 -0
  3034. psychopy/tools/fontmanager.py +1065 -0
  3035. psychopy/tools/gltools.py +7367 -0
  3036. psychopy/tools/imagetools.py +65 -0
  3037. psychopy/tools/linebreak.py +322 -0
  3038. psychopy/tools/mathtools.py +4910 -0
  3039. psychopy/tools/monitorunittools.py +276 -0
  3040. psychopy/tools/movietools.py +1111 -0
  3041. psychopy/tools/pkgtools.py +654 -0
  3042. psychopy/tools/plottools.py +25 -0
  3043. psychopy/tools/rifttools.py +76 -0
  3044. psychopy/tools/stereotools.py +9 -0
  3045. psychopy/tools/stimulustools.py +198 -0
  3046. psychopy/tools/stringtools.py +466 -0
  3047. psychopy/tools/systemtools.py +1331 -0
  3048. psychopy/tools/typetools.py +52 -0
  3049. psychopy/tools/unittools.py +16 -0
  3050. psychopy/tools/versionchooser.py +604 -0
  3051. psychopy/tools/viewtools.py +1068 -0
  3052. psychopy/tools/wizard.py +804 -0
  3053. psychopy/validation/__init__.py +6 -0
  3054. psychopy/validation/audio.py +78 -0
  3055. psychopy/validation/visual.py +119 -0
  3056. psychopy/visual/__init__.py +121 -0
  3057. psychopy/visual/aperture.py +333 -0
  3058. psychopy/visual/backends/__init__.py +77 -0
  3059. psychopy/visual/backends/_base.py +481 -0
  3060. psychopy/visual/backends/gamma.py +349 -0
  3061. psychopy/visual/backends/glfwbackend.py +24 -0
  3062. psychopy/visual/backends/pygamebackend.py +343 -0
  3063. psychopy/visual/backends/pygletbackend.py +970 -0
  3064. psychopy/visual/basevisual.py +2027 -0
  3065. psychopy/visual/brush.py +204 -0
  3066. psychopy/visual/bufferimage.py +311 -0
  3067. psychopy/visual/button.py +194 -0
  3068. psychopy/visual/circle.py +165 -0
  3069. psychopy/visual/custommouse.py +263 -0
  3070. psychopy/visual/dot.py +734 -0
  3071. psychopy/visual/dropdown.py +165 -0
  3072. psychopy/visual/elementarray.py +802 -0
  3073. psychopy/visual/filters.py +419 -0
  3074. psychopy/visual/form.py +1195 -0
  3075. psychopy/visual/globalVars.py +24 -0
  3076. psychopy/visual/grating.py +581 -0
  3077. psychopy/visual/helpers.py +336 -0
  3078. psychopy/visual/image.py +438 -0
  3079. psychopy/visual/line.py +227 -0
  3080. psychopy/visual/movie.py +12 -0
  3081. psychopy/visual/movie2.py +21 -0
  3082. psychopy/visual/movie3.py +18 -0
  3083. psychopy/visual/movies/__init__.py +2334 -0
  3084. psychopy/visual/movies/frame.py +258 -0
  3085. psychopy/visual/movies/metadata.py +242 -0
  3086. psychopy/visual/movies/players/_base.py +364 -0
  3087. psychopy/visual/nnlvs.py +830 -0
  3088. psychopy/visual/noise.py +32 -0
  3089. psychopy/visual/panorama.py +313 -0
  3090. psychopy/visual/patch.py +21 -0
  3091. psychopy/visual/pie.py +237 -0
  3092. psychopy/visual/polygon.py +226 -0
  3093. psychopy/visual/progress.py +313 -0
  3094. psychopy/visual/radial.py +29 -0
  3095. psychopy/visual/ratingscale.py +18 -0
  3096. psychopy/visual/rect.py +195 -0
  3097. psychopy/visual/rift.py +2660 -0
  3098. psychopy/visual/roi.py +141 -0
  3099. psychopy/visual/secondorder.py +27 -0
  3100. psychopy/visual/shaders.py +787 -0
  3101. psychopy/visual/shape.py +897 -0
  3102. psychopy/visual/simpleimage.py +303 -0
  3103. psychopy/visual/slider.py +1222 -0
  3104. psychopy/visual/stim3d.py +2109 -0
  3105. psychopy/visual/target.py +278 -0
  3106. psychopy/visual/text.py +769 -0
  3107. psychopy/visual/textbox/__init__.py +1280 -0
  3108. psychopy/visual/textbox/fontmanager.py +574 -0
  3109. psychopy/visual/textbox/parsedtext.py +317 -0
  3110. psychopy/visual/textbox/textgrid.py +278 -0
  3111. psychopy/visual/textbox/textureatlas.py +248 -0
  3112. psychopy/visual/textbox2/__init__.py +4 -0
  3113. psychopy/visual/textbox2/textbox2.py +1970 -0
  3114. psychopy/visual/vlcmoviestim.py +1294 -0
  3115. psychopy/visual/window.py +3910 -0
  3116. psychopy/visual/windowframepack.py +86 -0
  3117. psychopy/visual/windowwarp.py +457 -0
  3118. psychopy/voicekey/__init__.py +56 -0
  3119. psychopy/voicekey/labjack_vks.py +9 -0
  3120. psychopy/voicekey/parallel_vks.py +9 -0
  3121. psychopy/voicekey/vk_tools.py +131 -0
  3122. psychopy/web.py +289 -0
  3123. psychopy-2025.2.4.dist-info/METADATA +160 -0
  3124. psychopy-2025.2.4.dist-info/RECORD +3127 -0
  3125. psychopy-2025.2.4.dist-info/WHEEL +4 -0
  3126. psychopy-2025.2.4.dist-info/entry_points.txt +5 -0
  3127. psychopy-2025.2.4.dist-info/licenses/LICENSE +674 -0
psychopy/CHANGELOG.txt ADDED
@@ -0,0 +1,3981 @@
1
+ Changelog
2
+ =========
3
+
4
+ PsychoPy uses **major.minor.patch** version numbers:
5
+
6
+ - All changes to **major.minor** numbers indicate that changes are expected to change the behavior of PsychoPy experiments
7
+ - Changes to the **patch** version number are relativel minor bug fixes and we hope they do not change behavior
8
+
9
+ Updating without breaking existing studies
10
+ ------------------------------------------
11
+
12
+ We **strongly recommend** that, once your experiment is finished and is being run "for real",
13
+ that you apply the :ref:`useVersion <useVersion>` setting so that your study will always try
14
+ to run on the same PsychoPy version even where a different version is installed on the computer.
15
+ That setting often even allows PsychoPy to run experiments from versions that have not yet
16
+ been installed! If the dependencies haven't changed it will run.
17
+
18
+
19
+ PsychoPy 2024.2
20
+ -----------------
21
+
22
+ Although there are many changes and therefore potential for some slight changes in behaviour we have focussed more this release on just making existing functionality smoother rather than adding new big fetaures.
23
+
24
+ PsychoPy 2024.2.0
25
+ ~~~~~~~~~~~~~~~~~
26
+
27
+ **New and Improved 🎉:**
28
+
29
+ * Added "force nonslip" parameter to Routine Settings so that you can now use non-slip timing for a Routine using a variable by @TEParsons in #6603
30
+ * Fix opacity not applying properly to border colors by @TEParsons in #6704
31
+ * User can set the online end message from Builder rather than relying on JS default by @TEParsons in #6258
32
+ * Performance improvements for MovieStim (parituclarly noticeable for larger videos) by @aforren1 in #6449
33
+ * Added functions to MicrophoneDevice to continuously monitor volume by @TEParsons in #6444
34
+ * Added function to check whether a speaker is working by @TEParsons in #6446
35
+ * Builder can now set logging level for app console, independently of log file by @TEParsons in #6510
36
+ * Added Keyboard.getState() to get current state of a key by @TEParsons in #6537
37
+ * Added text-to-speech synthesis by @mdcutone in #6588
38
+ * Eyetracking: Various fixes to plugin- and eyetracker-detection by @TEParsons @mdcutone @EyeLogicSolutions @mh105 @KirstenWilliams
39
+ * Eyetracking: New support for EyeLogic Solutions eyetrackers with plugin (alongside existing Tobii, SRR, Pupil Labs, and Gazepoint support)
40
+ * Eyetracking: Fixes and more flexible settings for calibration routines @KirstenWilliams @mdcutone @EyeLogicSolutions @TEParsons @RebeccaHirst
41
+ * Eyetracking: can now save dwell times from ROI component by @RebeccaHirst in #6500
42
+ * If storing all valid mouse clicks, still show invalid clicks explicitly in the list as `None` (or `Null` online) e.g. [None, "foil", "target"] for 3 clicks ending in target by @TEParsons in #6516 #6548
43
+ * Some loops/form/counterbalance were not fetching the correct xlsx templates by @TEParsons in #6514
44
+ * Implement orientation parameter for TextBox2 by @TEParsons in #6513
45
+ * New changelog dialog on app start by @TEParsons in #6445
46
+ * Improved error message for iohub connection error (issue #1226) by @MarkellaEgglezou in #6354
47
+ * Visual stimuli now `draggable` attribute accessible from Builder by @TEParsons in #6337
48
+ * Improved TrialHandler2 for more flexible adding/cancelling and retrieving info about trials @TEParsons in #6425 #6408 #6590
49
+ * Using PhotoDiodes Components in experiments (e.g. in BBTK T-pad) #6432 #6442
50
+ * Provide PsychoPy experiment filename to the ioHub server by @mh105 in #6555
51
+ * Allow experiment to pause on the current frame by @TEParsons in #6584
52
+ * Allow plugins to be uninstalled via the manager by @mdcutone in #6587
53
+ * Store/update Routine parameters live in an object, rather than hardcoding them to the experiment file by @TEParsons in #6597
54
+ * Make save speech onset/offset only available to supporting transcribers by @kimDundas in #6672
55
+
56
+ **🐛 Bug Fixes:**
57
+
58
+ * Fixed error sampling microphone volume even when buffer is full by @TEParsons in #6488
59
+ * Fixed plugins page sometimes failed to load cached plugins file due to encoding error by @peircej in #6428
60
+ * Fixed the launch of PsychoPy App on conda envs without pythonw by @mh105 in #6436
61
+ * Allowed Static Component to update params by @TEParsons in #6462
62
+ * Fixed TextStim letter height wasn't settable each frame/Routine in JS by @TEParsons in #6511
63
+ * Fixed check for pythonw executable on macOS in psychopyApp.py by @mh105 in #6521
64
+ * Fixed .js file not being found when using "Use version" (removed _legacy from suffix) by @RebeccaHirst in #6515
65
+ * Hide dollar sign on start/stop controls when one is hidden by @TEParsons in #6528
66
+ * Removed unused %s string format in MenuFrame to avoid unrecognized accel key by @mh105 in #6523
67
+ * Remove incorrect code on removing eyetracker generated by builder by @mh105 in #6526
68
+ * Fixed import backend_pysound after module name change by @mh105 in #6524
69
+ * Caught AttributeError for sound.getDevices() when opening PreferenceDlg by @mh105 in #6522
70
+ * Unregister event monitors during iohub calibration by @mh105 in #6466
71
+ * Fixed plugin discovery algorithm not finding user package entry points correctly by @mdcutone in #6539
72
+ * Allow enough time for all ioHub device._close() to finish by @mh105 in #6540
73
+ * Use default speaker device if index is default by @mh105 in #6538
74
+ * Fixed eyetracker record stop/start by @TEParsons in #6545
75
+ * Fixed duplicate dependency install on MacOS and package installation in virtual environments by @mdcutone in #6529
76
+ * Fixed size and pos of Line by @TEParsons in #6543 and @mh105 in #6525
77
+ * Fied bug setting Sound in static period online by @TEParsons in #6546
78
+ * Fixed ioHub finding eyetracker configuration files by @TEParsons in #6547
79
+ * Fixed the issue that speaker index could jump over integers by @mh105 in #6559
80
+ * Fixed crash when mono is specified if the microphone device expects stereo as default by @mdcutone in #6564
81
+ * Fixed csv conditions file loading by @TEParsons in #6552
82
+ * Get correct speech onset/offset times and write them to data file by @mdcutone in #6566
83
+ * Fixed dict keys for setting sample filter levels by @mh105 in #6554
84
+ * Add default duration to eyetracker record component by @RebeccaHirst in #6599
85
+ * Remove second whisper option from mic transcriber backend drop down by @RebeccaHirst in #6604
86
+ * Fixed remove the use of currentlyRecording in EyetrackerControl by @mh105 in #6567
87
+ * Fixed syntax for mic max recording parameter by @RebeccaHirst in #6598
88
+ * Decouple setting status from triggering playback/clock resets/etc. by @TEParsons in #6562
89
+ * Fixed starting and stopping times for EyetrackerRecordComponent by @mh105 in #6607
90
+ * Don't change self.param in getStartAndDuration of et component by @mh105 in #6615
91
+ * Typo in JS boilerplate (True rather than true) by @wakecarter in #6625
92
+ * Builder: Ensure frame rate is stored. by @aforren1 in #6619
93
+ * Allow Sound to stop on a condition rather than just time by @TEParsons in #6631
94
+ * Fix `obj.contains is not a function` error in JS by @TEParsons in #6635
95
+ * Enable correct behavior of entry-points to load eyetrackers by @mh105 in #6610
96
+ * Movie component Volume inputType should be single instead of float by @mh105 in #6643
97
+ * Use inspect.getfile to check path of plugin entry points by @mh105 in #6660
98
+ * UI wasn't fully refreshing after changing theme by @TEParsons in #6673
99
+ * Coder GUI fixes by @aforren1 in #6678
100
+ * Allow keyboard allowedKeys to be set as an int by @TEParsons in #6676
101
+ * Enable mouse clickable from variable when running online by @RebeccaHirst in #6668
102
+ * Fixed crash when `clearEvents(device_label=None)` by @mdcutone in #6669
103
+ * Fix JS translation of `.pop()` when there's no index by @TEParsons in #6651
104
+ * Allow polygon outline opacity to be persistent across frames by @mdcutone in #6657
105
+ * Sound Component code was using the wrong set function name in JS by @TEParsons in #6649
106
+ * Fixed files being marked as modified as soon as opened by @TEParsons in #6679
107
+ * Re-add distro as a runtime dependency for linux & remove deprecated function. by @aforren1 in #6686
108
+ * Save mouse.corr for online studies by @RebeccaHirst in #6701
109
+ * Creating project from ribbon raised error by @TEParsons in #6706
110
+ * Plugin Components weren't recognised if experiment loaded with app by @TEParsons in #6707
111
+ * Original types for "UnknownPluginComponent"s were being lost after loading and saving again by @TEParsons in #6708
112
+ * Start/Stop controls had lost their tooltip by @TEParsons in #6711
113
+ * Update flow button style when switching theme by @TEParsons in #6712
114
+ * Conditions file wasn't updated when chosen from file browser for multistair loops by @TEParsons in #6714
115
+ * Save to the color cache when rendering. by @aforren1 in #6720
116
+ * BF/RF: Code to load Builder-relevant entry points was broken and obsolete by @TEParsons in #6717
117
+ * maxDurationReached in Routine Settings False should be false online by @wakecarter in #6724
118
+ * fix trial data writing when there are multiple key presses including None by @mh105 in #6718
119
+ * Fixed units for mouse gaze calibration targets (pix -> height) by @KirstenWilliams in #6443
120
+ * Standardise `tDown` attribute between ioHub and ptb Keyboard backends (follow ioHub behaviour) by @TEParsons in #6417
121
+ * Improved audio resampling method by @mdcutone in #6605
122
+ * Change iohub port to avoid conflicts with Whisper transcription by @mdcutone in #6661
123
+ * Fixed 'best match' mic settings not being used to init recording buffer by @mdcutone in #6670
124
+ * Prompt user to reconsider if they try to close plugin window mid-install by @TEParsons in #6705
125
+
126
+ ## 📓 Docs & Demos
127
+ * Create hdf5_2_csv by @KirstenWilliams in #6508
128
+ * make a note that writeRoutineEndCode does not save onset/offset times by @mh105 in #6571
129
+ * Add demo for Button Box Component by @TEParsons in #6716
130
+
131
+ ## Translations
132
+ * Arabic: new by @Ahmad-Abudoush @Ahmad-Ramy in #6634 #6638 #6636 #6674 and with DeepL by @peircej in #6641
133
+ * Portugese: new by @joana-quarenta in #6662 #6665 #6690
134
+ * Japanese: updates by @hsogo in #6654
135
+ * Spanish: es-co, es_es and es_us now completed by @carosamu in #6541 #6577
136
+
137
+ ## New Contributors
138
+ * @MarkellaEgglezou made their first contribution in #6354
139
+ * @xjlc made their first contribution in #6570
140
+ * @EyeLogicSolutions made their first contribution in #6586
141
+ * @Ahmad-Ramy made their first contribution in #6636
142
+ * @mabuhayeh made their first contribution in #6638
143
+ * @joana-quarenta made their first contribution in #6662
144
+
145
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.1.5...2024.2.0
146
+
147
+ PsychoPy 2024.2.1
148
+ ~~~~~~~~~~~~~~~~~
149
+
150
+ **🐛 Bug Fixes:**
151
+
152
+ * TrialHandler2 was starting `thisRepsN` at 1 rather than 0 by @TEParsons in https://github.com/psychopy/psychopy/pull/6747
153
+ * The py3.10 standalone app failed to launch on macos-arm chips (due to broken `tables` release 0.9.2)
154
+ * Updated translations for Spanish variants by @carosamu in #6763 #6737
155
+ * Fixed a typo in Trials routine template .psyexp file by @mh105 in https://github.com/psychopy/psychopy/pull/6738
156
+ * Set MovieComponent.status to FINISHED when playback finishes by @mh105 in https://github.com/psychopy/psychopy/pull/6740
157
+
158
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.2.0...2024.2.1
159
+
160
+ PsychoPy 2024.2.2
161
+ ~~~~~~~~~~~~~~~~~
162
+
163
+ **🐛 Bug Fixes:**
164
+
165
+ * Fix ribbon buttons showing label on Mac by @TEParsons in #6767
166
+ * Builder files were marked as modified as soon as opened by @TEParsons in #6778
167
+ * Builder getting start/stop times when using non-slip timing by @mh105 in #6739
168
+ * Restore backwards-compatability to `psychopy.gui.dlg` by @TEParsons in #6792
169
+ * Routines were still writing their end experiment code in JS even when removed from the flow by @TEParsons in #6780
170
+ * Fix whisper transcriber sometimes being initialised twice (and breaking as a result) by @TEParsons in #6796
171
+ * DlgFromDict was erroneously adding keys when given "order" or "fixed" by @TEParsons in #6818
172
+ * Make output of Dlg.show backwards compatible with older versions by @TEParsons in #6809 #6792
173
+ * pyglet controls of macOS NSWindow with multiple screens by @mh105 in #6799
174
+ * Fixed detection of installed packages in standalone app for py3.10 by @mh105 in #6771
175
+ * Smoother output from background jobs to stdout by @mh105 in #6833
176
+
177
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.2.1...2024.2.2
178
+
179
+ PsychoPy 2024.2.3
180
+ ~~~~~~~~~~~~~~~~~
181
+
182
+ **🐛 Bug Fixes:**
183
+
184
+ * Fixed machine-specific crashing of the app on launch for MacOS by building app bundle with setuptools==70.3.0 by @peircej in https://github.com/psychopy/psychopy/pull/6901
185
+ * Fix routine clock resetting in JS by @TEParsons in https://github.com/psychopy/psychopy/pull/6861
186
+ * Fix default audio device not being found by @TEParsons in https://github.com/psychopy/psychopy/pull/6863
187
+ * Fix error writing Polygon initial colors in JS by @TEParsons in https://github.com/psychopy/psychopy/pull/6865
188
+ * ensure window focus for the first `win.flip()` with pyglet backend on Windows OS by @mh105 in https://github.com/psychopy/psychopy/pull/6874 and https://github.com/psychopy/psychopy/pull/6876
189
+ * fix startView across OS platforms that opens psychopyApp.py by @mh105 in https://github.com/psychopy/psychopy/pull/6869
190
+ * if PsychoPy version includes "postN" then strip from PsychoJS version number by @peircej in https://github.com/psychopy/psychopy/pull/6873
191
+ * Handle when record of last open app windows is an invalid value (e.g. from old version) by @TEParsons in https://github.com/psychopy/psychopy/pull/6885
192
+ * suppress pip version check in package manager by @mh105 in https://github.com/psychopy/psychopy/pull/6868
193
+ * Added beta sticker to Counterbalance Component icon by @TEParsons in https://github.com/psychopy/psychopy/pull/6890
194
+ * Counterbalance Routine conditions file chooser wasn't updating the value properly by @TEParsons in https://github.com/psychopy/psychopy/pull/6892
195
+ * Silence unnecessary warning about unrecognised params by @TEParsons in https://github.com/psychopy/psychopy/pull/6896
196
+ * moviepy and egi_pynetstation now included in standalone not as a plugin by @peircej in https://github.com/psychopy/psychopy/pull/6905
197
+
198
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.2.2...2024.2.3
199
+
200
+ PsychoPy 2024.2.4
201
+ ~~~~~~~~~~~~~~~~~
202
+
203
+ **🐛 Bug Fixes:**
204
+
205
+ * Recreate .js file on run when piloting in JS by @TEParsons in #6920
206
+ * App failing to start on MacOS if all windows closed on last app close by @peircej in #6926
207
+ * Fix nonslip timing issue in Builder-generated PsychoJS code by @TEParsons in #6921
208
+
209
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.2.3...2024.2.4
210
+
211
+ PsychoPy 2024.2.5
212
+ ~~~~~~~~~~~~~~~~~
213
+
214
+ **🐛 Bug Fixes:**
215
+
216
+ * ioHub process was not cleanly exiting and then causing a crash on subsequent attempts to run @mh105 and @mdcutone in #6949 and #6938
217
+ * Sending experiment to Runner was sometimes (incorrectly) toggling pilot/run mode by @TEParsons in #6945
218
+ * Arabic Translation_update by @Ahmad-Abudoush in #6959
219
+
220
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.2.4...2024.2.5
221
+
222
+ PsychoPy 2024.1
223
+ -----------------
224
+
225
+ **Highlights:**
226
+
227
+ * **Counterbalance Routine**: Standalone Routine to handle counterbalancing *between participants*, using the "shelf" to maintain records inbetween
228
+ * **Piloting Mode**: Run experiments in "piloting" mode - adjusts settings to avoid common pitfalls while you're building (e.g. getting stuck in a full screen experiment), then switch to "running" when you're ready to start gathering data
229
+ * **Improved UI**: Toolbars across the app have a clearer layout for buttons and a more intuitive interface for Pavlovia. Runner especially has had a visual overhaul, with a lot more space for reading stdout/alerts and a new output specifically for Pavlovia sync messages.
230
+ * **Fixes to Eye tracker plugins**: Several eye trackers had not been working since being moved out to plugins and these should all now be back in operation
231
+
232
+ PsychoPy 2024.1.0
233
+ ~~~~~~~~~~~~~~~~~
234
+
235
+ **New features and enhancements:**
236
+
237
+ * Added plugin support for standalone plugins by @mdcutone in #5866
238
+ * **Button Box Component**: Component for using button boxes, which will always have the same methods and properties but by installing plugins you can add functionality for different devices
239
+ * Allow speech-to-text engine configuration from Builder by @mdcutone in #5905
240
+ * Replace toolbars with a "Ribbon" by @TEParsons in #5920
241
+ * Method for processing device info on Windows by @TEParsons in #5940
242
+ * Added tools for creating and managing hardware interfaces by @mdcutone in #5950
243
+ * Allow expInfo fields to be ordered, required, hidden and deprioritised using a new name syntax by @TEParsons in #5949
244
+ * Added Counterbalance Routine (and Python implementation of Shelf) by @TEParsons in #5967
245
+ * Add component for Button Box, with plugin-able backends by @TEParsons in #6006
246
+ * Option in Builder to skip/customise frame rate check by @TEParsons in #6049
247
+ * Option in Builder to specify globalClock format by @TEParsons in #6048
248
+ * Added method to Window to get value of specific pixels by @mdcutone in #6054
249
+ * Added piloting mode by @TEParsons in #6066
250
+ * Add param to enable "rush" mode by @TEParsons in #6279
251
+ * Speed up plugin dialog by @mdcutone in #5796
252
+ * Better handling when opening e.g. png files in Coder by @TEParsons in #5788
253
+ * Speed up app by using faster string tools for labels and methods by @TEParsons in #5826
254
+ * Improved plugin installation method by @mdcutone in #5872
255
+ * Allow prefs dialog menu to be resized by @TEParsons in #5869
256
+ * Add method to manually create a keypress, photodiode response, etc. by @TEParsons in #6022
257
+ * Add option to ignore keypresses outside of PsychoPy window by @TEParsons in #6039
258
+ * Allow Sound to specify a Speaker rather than using general system audio by @TEParsons in #6079
259
+ * Add method to wait for responses to SerialDevice by @TEParsons in #6092
260
+ * Include link to project in "Successful sync" message by @TEParsons in #6171
261
+ * Silence "Unrecognised Parameter" warnings if params came from a plugin by @TEParsons in #6179
262
+ * Speed up experiment loading by @TEParsons in #6180
263
+ * Catch fails in Packages dialog by @TEParsons in #6193
264
+ * Hide components/routines from future versions by @TEParsons in #6200
265
+ * More intuitive label on Pavlovia project info update button by @TEParsons in #6217
266
+ * Added menu item in Builder to reveal current folder by @TEParsons in #6218
267
+ * Install packages in editable mode via a pyproject.toml file by @TEParsons in #6228
268
+ * Improvements to Code component UI behaviour by @TEParsons in #6265
269
+ * Open news from menu by @peircej in #6205
270
+ * Make expInfo dialog always on top by @TEParsons in #6301
271
+
272
+ **Bug fixes:**
273
+
274
+ * Fix matrix questions Survey Routine by @TEParsons in #5797
275
+ * Fix crash which happened if wx wasn't installed by @peircej in #5832
276
+ * Make sure icons & labels in preferences dialog are always visible by @TEParsons in #5868
277
+ * Handle when Component has no start time in JS by @TEParsons in #5864
278
+ * Static component was preventing Movie from starting by @TEParsons in #5928
279
+ * Change default logging level to warning by @suelynnmah in #5941
280
+ * Let experiments run without git installed by @TEParsons in #5939
281
+ * Fix bug whereby Brush wouldn't pick up on mouse clicks by @TEParsons in #6056
282
+ * Fix inconsistent data outside trial loop by @monique2208 in #6004
283
+ * Fix shape setting on Polygon-derived components (e.g. ROI) by @TEParsons in #5971
284
+ * Remove darc toolbox demos (maintainer no longer supporting package) by @RebeccaHirst in #6094
285
+ * Fixed error when `audioLib` is `None` by @mdcutone in #6103
286
+ * Handle unconventional launch methods (e.g. launching from command line with unrecognised args) by @peircej in #6118
287
+ * Fixed error with resizing "sash" in Preferences dialogby @mdcutone in #6146
288
+ * If psychtoolbox can't detect devices, log warning rather than crashing by @TEParsons in #6150
289
+ * Fixed error when using Save in Coder when there is no file open by @nvanhaute in #6158
290
+ * Fixed "missing reference" error with setting Sound device by @mdcutone in #6122
291
+ * Fix _set function for NoiseStim to handle input length by @simonfei123 in #6136
292
+ * Draw expected duration from Routine Settings in Builder by @TEParsons in #6190
293
+ * Fix error when loading window whose size is negative by @mdcutone in #6192
294
+ * Stop Builder from assuming the current folder is .../psychopy/app whenever filename is "untitled.psyexp" by @TEParsons in #6198
295
+ * Catch error when package info is missing by @mdcutone in #6202
296
+ * Experiments weren't working online if experiment name differed from filename by @TEParsons in #6221
297
+ * Fixed iohub eyetracker calibration (keyboard was losing input) by @mdcutone in #6226
298
+ * Handle when Static component has no start time by @TEParsons in #6248
299
+ * Don't scroll to top after opening a Builder component category by @TEParsons in #6251
300
+ * Fixed Mouse.visible attribute not applying requested state by @mdcutone in #6254
301
+ * Fixed freeze when running eyetracker validation by @mdcutone in #6264
302
+ * Fix error when cancelling a commit by @TEParsons in #6271
303
+ * Special code for when Slider is "radio" was missed in JS code by @TEParsons in #6272
304
+ * Fix "iCCP profiles" error with classic icons by @TEParsons in #6276
305
+ * Fix wrong setter name in Textbox/TextStim JS code by @TEParsons in #6277
306
+ * New Pavlovia projects were being created empty until first commit by @TEParsons in #6273
307
+ * Fix UI inconsistencies on Ubuntu by @TEParsons in #6242
308
+ * Fix code for sound component stop values by @zuazo in #6300
309
+ * Fixed selecting audio device in builder and coder by @zuazo in #6299
310
+ * Fix bug where local PsychoJS server kept running after quitting by @TEParsons in #6323
311
+
312
+ **Documentation and testing improvements** by @alexander-pastukhov @peircej @suelynnmah @patrickabolger @richardnaar @JensBoelte
313
+ @d-scanzi @psych575 @shun2wang @Solveig-Castelli @carosamu @Ahmad-Abudoush @RebeccaHirst @ice-yu @domstoppable @kimDundas
314
+ @afuetterer @TEParsons
315
+
316
+ **Translation works:**
317
+
318
+ * Continued translation into Simplified Chinese (and now Traditional Chinese) and beginnings of translations into Spanish, Hebrew: #5891 #5892 #5893 #5894 #5895 #5897 #5904 #5912 #5915 #5917 #5923 #5903 #5932 #5925
319
+
320
+
321
+ ### New contributors
322
+
323
+ * @mscheltienne made their first contribution in #5889
324
+ * @JensBoelte made their first contribution in #5956
325
+ * @d-scanzi made their first contribution in #5952
326
+ * @kshtjkumar made their first contribution in #5955
327
+ * @Solveig-Castelli made their first contribution in #5961
328
+ * @carosamu made their first contribution in #5972
329
+ * @monique2208 made their first contribution in #6004
330
+ * @afuetterer made their first contribution in #6110
331
+ * @bartuatabek made their first contribution in #5942
332
+ * @FS94 made their first contribution in #6121
333
+ * @simonfei123 made their first contribution in #6136
334
+ * @tomdstone made their first contribution in #6261
335
+ * @zuazo made their first contribution in #6299
336
+
337
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2023.2.3...2024.1.0
338
+
339
+ PsychoPy 2024.1.1
340
+ ~~~~~~~~~~~~~~~~~
341
+
342
+ **Bug fixes**
343
+
344
+ * Handle errors when loading list of plugins by @TEParsons in #6334
345
+ * Counterbalance in online studies was still trying to confirm entries after finishing by @TEParsons in #6345
346
+ * Make sure the drawn max time in Builder is never None by @TEParsons in #6347
347
+ * Fixed translation issues by @hsogo in #6348
348
+ * Fixed inability to load plugins list from local with non-utf-8 default encoding by @peircej in #6349
349
+
350
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.1.0...2024.1.1
351
+
352
+ PsychoPy 2024.1.2
353
+ ~~~~~~~~~~~~~~~~~
354
+
355
+ **Enhancements**
356
+ * Default TextStim font set to Arial (TextBox default was already Arial) by @wakecarter in #6378
357
+
358
+ **Bug fixes**
359
+
360
+ * Keyboard clock wasn't being reset properly, so `.rt` values were from exp start by @TEParsons in #6360
361
+ * Safer (and faster) behaviour when copying a param, avoids "infinite recursion" (app hangs) by @TEParsons in #6362
362
+ * Make line spacing specific to just one TextBox2 object by @Catherine9811 in #6356
363
+ * Fixes to the Gazepoint eyetracker plugin by @mdcutone in #6365
364
+ * Fixed error when camera tries to close when it's already closed by @mdcutone in #6364
365
+ * Fixed editable TextBox2 cursor location with line breaks by @Catherine9811 in #6358
366
+ * Remove "constant" updates option from SoundComponent (as it wasn't used) by @TEParsons in #6351
367
+ * Python 3.8 was falsely marked as incompatible with 2024.1.x onwards in "use version" interface by @TEParsons in #6366
368
+ * Form Component wasn't finding the correct table template by @TEParsons in #6381
369
+ * Remove blank rows from form template by @wakecarter in #6382
370
+ * Error saving icons from plugin details by @TEParsons in #6368
371
+ * Transparent colours online by @wakecarter in #6386
372
+ * Button numclicks defined by timesOn.length by @wakecarter in #6385
373
+
374
+ **Documentation and testing improvements** by... @peircej @TEParsons @kimDundas @suelynnmah
375
+
376
+ **New contributors: **
377
+
378
+ * @Catherine9811 made their first contribution in #6356
379
+
380
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.1.1...2024.1.2
381
+
382
+
383
+ PsychoPy 2024.1.3
384
+ ~~~~~~~~~~~~~~~~~
385
+
386
+ **Bug fixes**
387
+
388
+ * Telling Mouse Component to check new clicks without clickable stim raised syntax error by @TEParsons in #6398
389
+ * Keyboard responses in ioHub weren't using relative time by @TEParsons in #6407
390
+
391
+ PsychoPy 2024.1.4
392
+ ~~~~~~~~~~~~~~~~~
393
+
394
+ **Bug fixes**
395
+
396
+ * ioHub keyboard was registering key releases before presses, so duration was always None. We now have a test in place that confirms keyboard RT timing using hardware which will be used on each new release going forwards. By @TEParsons in #6416
397
+ * Fixed some translation issues by @hsogo in #6409
398
+ * Fixed JSON encoding error when opening plugin dialog by @mdcutone in #6411
399
+
400
+ **Documentation updates**
401
+
402
+ * updated screenshots by @charlottej3673 in #6392
403
+
404
+ PsychoPy 2024.1.5
405
+ ~~~~~~~~~~~~~~~~~
406
+
407
+ * Failing to find Eyetracker Components (Eyelink by @KirstenWilliams in #6406 and Gazepoint by @mdcutone in #6424 )
408
+ * Installed plugins were not being found on Linux/MacOS by @mdcutone in #6441
409
+ * Faster MovieStim rendering (don't call `play()` when already playing) by @aforren1 in #6448
410
+ * Fixed eyetracker calibration target units (height -> pix) by @peircej in #6451
411
+ * KeyboardComponent allowed keys from spreadsheet caused namespace errors by @TEParsons in #6458
412
+ * hide that visible mouse, please by @mh105 in #6465
413
+ * Fix an issue with etRecord component for Stop Only (not stopping the eytracker) by @mh105 in #6463
414
+ * Only change Mouse visibility if explicitly asked to by @TEParsons in #6467
415
+ * Fix "Stop only" issue regardless of Component order by @TEParsons in #6468
416
+ * Clear keys to initialize keyboard when starting a routine by @mh105 in #6471
417
+ * Allow getKeys() to return the same key pressed multiple times by @mh105 in #6479
418
+
419
+ ## Documentation fixes and updates
420
+
421
+ * by @suelynnmah in #6341 #6426 #6427
422
+ * by @KirstenWilliams in #6480 #6481 #6487 #6498 #6506
423
+ * by @RebeccaHirst in #6504 #6505
424
+ * Arabic app translations by @Ahmad-Abudoush in #6476
425
+
426
+
427
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2024.1.4...2024.1.5
428
+
429
+ PsychoPy 2023.2
430
+ ---------------
431
+
432
+ **Highlights:**
433
+
434
+ * Routine settings: Routines now have parameters of their own, giving control over their max duration, skipping the Routine altogether, or changing the way the window looks just for that Routine.
435
+ * Sort by priority: Columns in the data file can now be given a "priority" value, with the option to sort by priority instead of chronologically.
436
+ * Whisper transcription PLUGIN for Microphone: Using the OpenAI backend, Microphone transcriptions can be done quicker and more accurately, and include timing info for each word.
437
+ * Progress bar component: A visual component to show progress along an axis.
438
+ * Builder search dialog: Search for values across your whole experiment, then jump to the specific Routine/Component where it's present. Makes debugging much easier.
439
+ * Most stimuli now support a `draggable` attribute. If set to `draggable=True` then that stimulus should check/update position on each frame using `stim.doDragging()`
440
+
441
+ **Behaviour changes:**
442
+
443
+ * Eyetrackers (Tobii, SRR Eyelink, Gazepoint, PupilLabs) are now plugins rather than built-in, in keeping with the drive to cut down the dependencies of core PsychoPy
444
+
445
+ **Enhancements:**
446
+
447
+ * PsychoJS: Mobile-friendly viewport settings. by @lightest in #5380
448
+ * Allow experiment to run with different clocks (e.g. wall clock time instead of starting at t=0) by @TEParsons in #5621
449
+ * PsychoJS ShapeStim from Builder now supports custom vertices by @TEParsons in #5522
450
+ * Numerous improvements to plugins system and dialog
451
+ * Added `abortCurrentTrial` (Python only for now) method to `TrialHandler2` and `MultiStairHandler` by @mdcutone in #5423
452
+ * Better performance and fixes to FFPyPlayer movie engine
453
+ * Added `letterSpacing` attribute to Textbox by @TEParsons in #5487
454
+ * New `Session` class to run multiple experiments - create your stimulus window once and run multiple experiments in it, with the ability to pause/resume/stop the experiment. (Python only for now) Session can be controlled over `websockets` using the Liaison server
455
+ * Full support for Python 3.10, wxPython 4.2, and PyQt6
456
+ * Preserve tab order for Routines when saving/loading an experiment by @TEParsons in #5517
457
+ * Added audio settings to Camera component by @mdcutone in #5681
458
+ * Improved streaming of camera to disk by @mdcutone in #5551
459
+ * Window now explains it is performing timing test by @mdcutone in #5511
460
+ * Keyboard Components from Builder will store duration if available (if release has already occurred) by @TEParsons in #5569
461
+ * Show status text for objects in Flow panel by @TEParsons in #5443
462
+ * Make psychopy.Window title (and icon in pyglet) settable by @TEParsons in #5540
463
+ * UI enhancements to Coder and Runner by @TEParsons in #5539
464
+ * Multihead support for X11/Linux by @mdcutone in #5520
465
+ * Plugins Dialog now checks for version compatibility with PsychoPy by @TEParsons in #5649
466
+ * Install plugins to subdirectories by @mdcutone in #5398
467
+ * Make Save & Edit/View buttons on README window more explicit by @TEParsons in #5523
468
+ * New option to abbreviate long component names in Preferences, fixes #5574 by @TEParsons in #5586
469
+ * Highlight selected Routine in Flow panel by @TEParsons in #5588
470
+ * Better Builder visualisation very large experiments by @TEParsons in #5618
471
+ * Lock Flow panel buttons to the left when scrolling by @TEParsons in #5620
472
+ * ExperimentHandler.addData() now has optional `row` argument to specify previous entry by @TEParsons in #5652
473
+ * Fixed useVersion warning untracked working tree files would be overwritten by @peircej in #5670
474
+ * Add param to control whether movies/sounds end when the Routine does, by @TEParsons in #5415
475
+ * Add "transparent" as named color by @TEParsons in #5689
476
+ * Radio button styling was not work in Slider component in 2023.1, fixes #5661 (dev) by @TEParsons in #5691
477
+ * Allow expInfo fields to be marked as required (*) by @ainazay in #5543
478
+ * Fix VlcMovieStim by @marcpabst in #5702
479
+ * Added data file separator to expInfo by @EitanHemed in #5607
480
+ * Minor Textbox bugfixes by @ollie-d in #5723
481
+ * Extended autotranslate functions supported by py2js by @roelofsaj in #5713
482
+ * Submitting GitHub issues now supports templates by @shun2wang in #5732
483
+ * Numerous Documentation improvements by @fboers @kimDundas @patrickabolger @EitanHemed @larsoner @pmolfese
484
+
485
+ PsychoPy 2023.2.0
486
+ ~~~~~~~~~~~~~~~~~
487
+
488
+ **Key fixes (from 2023.1.x series):**
489
+
490
+ * Fixed missing comma in Brush component code by @TEParsons in #5564
491
+ * Mouse position incorrect when desktop scaling not 100% on Windows by @mdcutone in #5758
492
+ * Fixed `AttributeError: 'SoundPTB' object has no attribute 'isFinished'` by @mdcutone in #5541
493
+ * Better handling of missing audio libraries - allow the app to load always and fallback to PsychToolBox if possible
494
+ * Better handling of Mouse.getPos() when no windows open by @peircej in #5763
495
+ * Param updates code for Sound in JS was using Python syntax by @TEParsons in #5762
496
+ * More informative error when useVersion fails to write script by @TEParsons in #5761
497
+ * saveAsWideText was using deprecated DataFrame.append function by @TEParsons in #5507
498
+ * Polygon/ROI vertices caused error if trying to set each frame by @TEParsons in #5686
499
+ * Don't crash if user attempts to initialise ioHub more than once by @TEParsons in #5533
500
+ * Added log file entry for Keyboard.clearEvents() by @peircej in #5558
501
+ * Fixed missing movie file in MoviePause.py demo by @EitanHemed in #5583
502
+ * Coder source tree thought any variable name beginning with `def` was a function def by @TEParsons in #5581
503
+ * README filename wasn't being updated for new frames by @TEParsons in #5593
504
+ * Fix Markdown parsing on README files by @TEParsons in #5572
505
+ * Ignore Escape in Keyboard component if needed to end experiment by @TEParsons in #5598
506
+ * Joystick component - SyntaxError in generated code by @EitanHemed in #5601
507
+ * Error `got an unexpected keyword argument "reset"` when trying to pause using PTB sounds by @peircej in #5619
508
+ * PsychoPJS: Fix issue with first frame of image being shown as default.png in JS by @TEParsons in #5716
509
+ * Add `self` to list of disallowed Component names by @TEParsons in #5742
510
+ * Split compound Survey answers into individual columns by @TEParsons in #5734
511
+ * Fixed audio file not resetting during (Python) experiment by @mdcutone in #5712
512
+ * If trying to load previously open file that is corrupted, do at least open the app (with an empty window) by @TEParsons in #5696
513
+ * Better catching of name errors in conditions file by @TEParsons in #5654
514
+
515
+ **New contributors:**
516
+
517
+ * @ranibaron made their first contribution in #5394
518
+ * @patrickabolger made their first contribution in #5414
519
+ * @fboers made their first contribution in #5482
520
+ * @gtosh4 made their first contribution in #5609
521
+ * @ainazay made their first contribution in #5543
522
+ * @marcpabst made their first contribution in #5702
523
+
524
+ PsychoPy 2023.2.1
525
+ ~~~~~~~~~~~~~~~~~
526
+
527
+ **Key fixes:**
528
+
529
+ * Eyetracker plugins were not being detected by Builder by @peircej in #5808
530
+ * Fix device selection for Microphone component by @mdcutone in #5811
531
+ * ioHub reporting negative response times by @TEParsons in #5807
532
+ * Add attributeSetter / set functions for borderWidth by @TEParsons in #5779
533
+ * Option for hiding splash screen available in Preferences by @TEParsons in #5776
534
+ * `endExpNow` was only defined if Escape was enabled by @TEParsons in #5780
535
+ * Polygon JS from Builder failing to initialise code by @TEParsons in #5783
536
+ * Copied Routines were getting two Routine Settings components by @TEParsons in #5792
537
+ * Fix unresponsive scrolling in Routine canvas by @TEParsons in #5795
538
+ * update Japanese translation by @hsogo in #5789
539
+ * If rewinding Sound (seek to before end) then mark as not finished by @TEParsons in #5781
540
+ * Fixed <expname>_legacy-legacy-browser.js is not a file by @TEParsons in #5799
541
+ * Coder was making an error when opening a new file by @TEParsons in #5801
542
+ * Conditions file was being cleared when loop type is "interleaved staircase" by @TEParsons in #5803
543
+ * Add JS code to set window background image on init by @TEParsons in #5806
544
+ * MacOS iohub "TypeError: startswith first arg must be bytes..." by @peircej in #5812
545
+ * New projects sometimes wouldn't have a local root by @TEParsons in #5814
546
+ * Handle when Static Component tries to set param of deleted/disabled Component by @TEParsons in #5815
547
+ * Python 3.10 version bump had broken GIF avatars by @TEParsons in #5791
548
+
549
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2023.2.0...2023.2.1
550
+
551
+ PsychoPy 2023.2.2
552
+ ~~~~~~~~~~~~~~~~~
553
+
554
+ **Key fixes:**
555
+
556
+ * Fixed ioHub keyboard timing (was using incorrect timestamp offset) by @TEParsons in #5807
557
+ * Fixed locating config files for ioHub extensions which prevented them from loading by @mdcutone in #5821
558
+ * Fixed bug whereby iohub couldn't find plugin backends on Mac by @TEParsons in #5824
559
+ * Better handing of experiments with Components that are now only in plugins by @TEParsons in #5834 #5831 #5833
560
+ * Fixed "logFile does not exist" error when "Save log file" is False by @TEParsons in #5836
561
+ * Fixed matrix question breaking apart code in Survey Routine by @TEParsons in #5840
562
+ * Allow expInfo to use values from Code components without overriding them by @TEParsons in #5837
563
+ * Fixed error in Form when using a radio ctrl by @TEParsons in #5843
564
+ * Polygon broken in JavaScript code from Builder by @TEParsons in #5844
565
+ * Ignore spaces when getting variables from name by @TEParsons in #5841
566
+ * "tThisFlip not defined" error when using Routine stop time online by @TEParsons in #5849
567
+ * "eyetracker is not defined" error on experiment quit by @TEParsons in #5850
568
+ * Fixed incorrect formatting in `AudioDeviceInfo` `__repr__` by @mdcutone in #5851
569
+ * Fixed message order in Plugins dialog output by @TEParsons in #5865
570
+ * Update path of README dialog on "save as" by @TEParsons in #5863
571
+ * Fixed sounds restarting at the end of a Routine where they had perviously stopped by @peircej in #5874
572
+
573
+ **Various documentation updates:**
574
+
575
+ * Progress bar API and documentation by @suelynnmah in #5822
576
+ * Bart Builder demo fix by @suelynnmah in #5823
577
+ * psychophysicsStaircase demo fix by @suelynnmah in #5829
578
+ * Fix colors demo by @TEParsons in #5838
579
+ * Sternberg Builder demo - checked save log file to remove logFile error by @suelynnmah in #5845
580
+
581
+ PsychoPy 2023.2.3
582
+ ~~~~~~~~~~~~~~~~~
583
+
584
+ ## Key fixes (from 2023.2.2)
585
+
586
+ * Silenced warning about numpy version number in Windows Standalone
587
+ * Fixed issue with "cannot import Never from typing_extensions" in Windows standalone
588
+ * Fixed error detecting eyetracker config files by @TEParsons in #5883 #5886
589
+ * Fixed eyetracker calibration routine freezing by @mdcutone in #5901
590
+ * Fixed support for updated Pupil Labs plugin w/ support for Neon by @domstoppable in #5887
591
+ * Fixed useVersion for JS - needed to create a _legacy.js file by @TEParsons in #5918
592
+ * Fixed SerialOut parity should be N not None by @TEParsons in #5907
593
+ * Fixed bug whereby Textbox's scrolling Aperture was applied to all stim by @TEParsons in #5934
594
+
595
+ ## Translation works
596
+
597
+ * Continued translation into Simplified Chinese (and now Traditional Chinese) and beginnings of translations into Spanish, Hebrew: #5891 #5892 #5893 #5894 #5895 #5897 #5904 #5912 #5915 #5917 #5923 #5903 #5932 #5925
598
+
599
+ ## New Contributors
600
+
601
+ * @meltemkaraca made their first contribution in #5891
602
+ * @SarvCh made their first contribution in #5893
603
+ * @ymhuang1005 made their first contribution in #5894
604
+ * @ice-yu made their first contribution in #5895
605
+ * @domstoppable made their first contribution in #5887
606
+ * @jingrun213 made their first contribution in #5897
607
+ * @psych575 made their first contribution in #5912
608
+
609
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2023.2.2...2023.2.3
610
+
611
+ PsychoPy 2023.1
612
+ ---------------
613
+
614
+ **Release series 2023.1. Highlights**
615
+
616
+ - **Pavlovia Surveys:** can now be integrated into PsychoPy online studies. You still create your
617
+ survey in the Pavlovia Survey Creator (on you Pavlovia Dashboard) but you can then incorporate
618
+ them as either a link or an embedded json file into your PsychoJS study. This only works for
619
+ online studies at present
620
+ - **Panorama Stimuli:** now supported in PsychoPy (lab-based) studies. You can add a photo-sphere
621
+ as a stimulus (e.g. create them in Street View app on Android phones) and then insert them into
622
+ Builder and explore
623
+ - **Plugins and Packages:** You can now add packages to your PsychoPy installation with a GUI that
624
+ installs new packages to your user folder (without needing admin rights). Some of PsychoPy's
625
+ existing functionality has also moved out to "Plugins"
626
+
627
+ - For users, plugins mean more control over what functionality you want PsychoPy to support
628
+ - For developers, plugins mean keeping more independence over your code and ownership
629
+
630
+ - **Speech Point:** on TextBox allows a tail to be added giving the impression of a cartoon speech
631
+ bubble (lab-based only, currently)
632
+ - **MovieStim:** further improvements to performance and fixes
633
+
634
+ On top of the [new features added in 2023.1 series](https://github.com/psychopy/psychopy/releases/tag/2023.1.0)
635
+
636
+ **Fixes:**
637
+
638
+ * Fix crash following gamma semi-auto correction (when laying out dialog box) dialog box by @TEParsons in #5452
639
+ * Crashing due to outdated `core.getFromNames` in Mouse by @TEParsons in #5474
640
+ * Setting Image as a numpy array caused a TypeError by @TEParsons in #5453
641
+ * Handle invalid paths when stringifying params by @TEParsons in #5465
642
+ * Swap all references to Panorama.altitude with Panorama.elevation by @TEParsons in #5471
643
+ * Fix typo in Survey routine - `stauts` rather than `status` by @TEParsons in #5468
644
+ * If user requests showing README and there isn't one then show a blank file @TEParsons in #5470
645
+ * Fix typos in high contrast theme by @TEParsons in #5504
646
+ * Sound files online were playing forever if duration set to <0.5s by @TEParsons in #5466
647
+ * Let Builder treat Sound.isPlaying and Sound.status==STARTED as synonymous by @TEParsons in #5428
648
+ * Correctly ignore blank columns by @wader in #5406
649
+ * Viewport was left as None when checkTiming was unticked by @TEParsons in #5451
650
+ * Better handling when a Pavlovia project / plugin avatars in the app @TEParsons in #5458 #5460 #5469
651
+
652
+ **Documentation fixes by**
653
+
654
+ * @roelofsaj in #5477 #5483 #5484
655
+ * @ChenBri in #5478 #5480
656
+ * @ChristopheBossens in #5481
657
+ * @suelynnmah in #5444
658
+
659
+ **New Contributors**
660
+
661
+ * @roelofsaj made their first contribution in #5477
662
+ * @ChenBri made their first contribution in #5478
663
+ * @ChristopheBossens made their first contribution in #5481
664
+ * @wader made their first contribution in #5406
665
+
666
+ **Full Changelog**: https://github.com/psychopy/psychopy/compare/2023.1.1...2023.1.2
667
+
668
+ PsychoPy 2023.1.1
669
+ ~~~~~~~~~~~~~~~~~
670
+
671
+ **Fixed:**
672
+
673
+ - Better plugin handling:
674
+
675
+ - Better handling of plugin dependencies (moved to sub-folders) #5398
676
+ - More responsive plugins dialog (not waiting for all plugin info to populate) #5410
677
+ - Live info updates as the plugin installs #5399
678
+ - Sort package versions newest first #a4987c95f
679
+
680
+ - Panorama stimulus no longer needs FBO=False on Window
681
+ - MovieStim locally opacity was not being honored #094731084
682
+ - MovieStim online crashed if using setEveryRepeat #ed484ba17
683
+ - Close eyetracker connection if experiment ends early #f9b6f98e4
684
+ - README dialog was created twice #5383
685
+ - Online Experiments with image sitmuli crashing with unknown resource "default.png"
686
+ - Nested loops were crashing
687
+ - Fixed various failures to translate #804bfcde2 #b1b611ec1
688
+ - Console gave encoding errors when opening MacOS csv files on Windows machines #5396
689
+ - Failure to log in to Pavlovia #5382 #5450
690
+
691
+ PsychoPy 2022.3
692
+ ---------------
693
+
694
+ **Highlights:**
695
+ - Online: Interface in Pavlovia for building and running online questionnaires! As this is built on top of the
696
+ open-source [SurveyJS](https://surveyjs.io/) package it offers a rich feature list right off the bat. The new
697
+ Pavlovia Survey component you can insert a survey into your experiment just like you would a Form component.
698
+ - Python: New Panorama component lets you view a Photo Sphere image as a 3d scene within Python experiments.
699
+ - Python: New style for slider:
700
+ - **choice**: Hides the Slider line and replaces the marker with a focus box which sits behind the labels.
701
+ - Python: New control types added to Form component:
702
+ - **dropdown**: A drop-down menu, essentially a Button stimulus showing the current value which, on click, reveals
703
+ a Slider with style set to **choice**.
704
+ - **checkbox / bool**: A tick box for simple yes/no questions
705
+ - Python: Textboxes now have the option to hide overflowing text and/or to show a vertical scrollbar.
706
+ - Python: PsychoPy windows can now have a background image, settable in the Experiment Settings.
707
+ - Online: PsychoJS end message now customisable via Experiment Settings.
708
+ - App: Accessibility enhancements, making it easier to navigate menus and dialog boxes using just the keyboard.
709
+
710
+ PsychoPy 2022.2
711
+ ---------------
712
+
713
+ *Highlights:*
714
+
715
+ - BETA: Cameras can now be accessed during your experiments (in web-based and in local experiments) and allow
716
+
717
+ - saving recordings to disk
718
+ - showing the current input from the webcam (make the Camera the input to a regular ImageStim)
719
+ - replaying a recording later in the experiment (use the Camera as input to a subsequent MovieStim)
720
+ - **all the above features are currently BETA**
721
+
722
+ - Python: New movie *playing* engine for higher performance playback in locally experiments (using FFPyPlayer)
723
+ - Online: Introducing the "Shelf" for persistent storage on Pavlovia of variables accessible to a range
724
+ of scopes (only the current participant, only the current project, any project in the lab etc.).
725
+ This may sound like not a big deal but it opens options for the following:
726
+
727
+ - **multi-session** studies: retrieve the participant threshold/progress form last session
728
+ - **interactive multi-player** studies: store 'messages' for another user to receive
729
+ - **counterbalancing online**: by tracking the number of participants that have been in each group
730
+
731
+ - Online: Gratings and Gabors now supported online, straight from your Builder experiments
732
+ - Online: gamma correction supported in the browser(!!) by setting Window.gamma property (currently
733
+ requires a code snippet)
734
+ - Local: Builder now has a Serial Port Component to make it easier to connect to hardware without needing
735
+ Code Components
736
+
737
+ **Compatibility changes:**
738
+
739
+ - App: Studies with Code Components that access `routineTimer` will need adapting because the non-slip Builder
740
+ logic has changed this is now a regular (count-up) Clock instead of a CountdownTimer
741
+
742
+ **Key Fixes:**
743
+
744
+ - Online: Button Component is now fully working, so you don't need to create your own text boxes for this
745
+ - Online: Routines used outside a loop now always advance the next row in the data file so that they
746
+ can't overwrite each others' data
747
+ - Python: The `.stopped` times should now be showing up correctly for all Components in the csv file
748
+ (they were always correct in the log file)
749
+ - Python: Better timing in non-slip Routines. Previously the non-slip timer corrected for overshoots but
750
+ not undershoots. This is now fixed.
751
+ - Python: 3D rendering should be working again.
752
+
753
+ **Also:**
754
+
755
+ - `Is trials` property of loops (to control whether the data file advances) is now supported
756
+ in online studies
757
+
758
+
759
+ PsychoPy 2022.2.1
760
+ ~~~~~~~~~~~~~~~~~
761
+
762
+ Fixed:
763
+
764
+ - App: bug on MacOS opening Builder that led to ‘PosixPath’ object has no attribute ‘is_relative_to’ when loading experiments
765
+ - App: improved performance when the Shell has a large amount of text #f1e8d6bf7
766
+ - App: fixed the use of tab traversal within Component dialogs on MacOS #a618c4cd7
767
+ - Python: fixed setting the first position of markers on Sliders
768
+ - Python: experiments using ioHub Keyboard backend were registering keypresses twice (once for down and again for up) #4990
769
+
770
+ PsychoPy 2022.2.2
771
+ ~~~~~~~~~~~~~~~~~
772
+
773
+ Fixed:
774
+
775
+ - App: non-slip Routines not being terminated properly by force-end-routine #5004
776
+ - Packaging: removed PocketSphinx from requirements (hard to install on several systems)
777
+ - App: translations of some choice fields into Japanese not working correctly #5009
778
+
779
+ PsychoPy 2022.2.3
780
+ ~~~~~~~~~~~~~~~~~
781
+
782
+ Fixed:
783
+
784
+ - App: Dark mode was missing "goto" button
785
+ - App: Coder save button was not updating correctly after a change #5031
786
+ - Python: Arabic Harakat diacritics were misaligned in Python TextBox2 #5033
787
+ - Python: rendering performance improvement when contrast=1 #5027
788
+
789
+ PsychoPy 2022.2.4
790
+ ~~~~~~~~~~~~~~~~~
791
+
792
+ Fixed:
793
+
794
+ - Python: fix to occasional crashing of new FFPyPlayer moviestim caused by excessive logging in the underlying lib #47289f6ca
795
+ - App: better handling of case where Experiment Settings may have syntax error #60cf0cea6
796
+ - App: rare case where the $ could get ignored during dialog box validation #eb1897087
797
+ - App: better handling of an (apparent) syntax error in user-supplied JS #992aaa423
798
+ - App: transcription setting on Mic Component now False by default (because most people don't have a Google API key set up) #2c8a27ed
799
+ - Pkg: added missing Labjack lib to Windows Standalone distribution
800
+
801
+ PsychoPy 2022.2.5
802
+ ~~~~~~~~~~~~~~~~~
803
+
804
+ Fixed:
805
+
806
+ - Several fixes to syncing of Pavlovia projects
807
+ (e.g. when project has been deleted/recreated online or when files have been
808
+ copied over from another machine) #5117 #5221
809
+ - Shape Component in Builder can now update vertices on each frame/repeat #e493ee2ca
810
+ - Participant name missing from filename if given in URL query #5171
811
+ - Eyetracker ROI stop code should only be written if a value is given to stop on #5156
812
+ - Don't crash if Microphone.stop() called repeatedly #5121
813
+ - TypeError in Window.resetViewport() #5135
814
+ - PupilLabs lib was not being found due to missing `__init__` #5180
815
+ - QUESTplus had ben removed from list of loop types #2da0cfa0a
816
+ - Sound.pause() was resetting to start of track #a161e135a
817
+
818
+
819
+ PsychoPy 2022.1
820
+ ---------------
821
+
822
+ *Highlights:*
823
+
824
+ - Improved interface for searching, syncing and viewing Pavlovia projects from
825
+ within the PsychoPy app
826
+ - In online experiments you can now dynamically choose the resources your
827
+ participant needs as the experiment progresses rather than downloading them all in
828
+ the first dialog box
829
+ - Can now insert new Routines from pre-packaged templates (such as Fixation, 2-alternative
830
+ forced choice, feedback, etc)
831
+ - QUEST handlers now available in PsychoJS including interleaved staircases
832
+ - Most visual stimuli now have an "anchor" parameter to control how it's laid out
833
+ relative to its position, and you can now set the alignment of text within a Textbox
834
+ (with a handy demo to illustrate the difference between anchor and alignment!)
835
+ - Added support for :ref:`Pupil labs eye trackers <pupil_labs_core>` (thanks to Pupil Labs themselves) directly from
836
+ the Builder
837
+
838
+ *Compatibility Changes:*
839
+
840
+ - Python 2.x is no longer supported
841
+ - Filename timestamps now have a different default format (based on ISO 8601):
842
+ 2022-01-14_14h39.36.092 for 2:39pm and 36s, 92ms
843
+ See :func:`psychopy.utils.getDateStr` for details on the new functionality
844
+
845
+ *New and Improved:*
846
+
847
+ - Ability to customise the filename in online studies, using the same Experiment Settings
848
+ option as local studies
849
+ - Standalone distribution now using Python 3.8
850
+ - Builder: Keyboard class now providing the option to select the underlying engine
851
+ (iohub, psychtoolbox or pyglet) with `iohub` now being the recommended default
852
+ - Filter components view by what works online vs locally
853
+ - Eye Tracker Record Component can now be use to record across multiple routines.
854
+ - Added Text Color setting to Eye Tracker Calibration and Validation procedures / Routines
855
+ - Allow selection of which U3 register to write to when using a LabJack U3 with the
856
+ Parallel Out Component.
857
+ - Added non fullscreen window and multiple window support to iohub Mouse device.
858
+ - Python shell within Coder view has been rewritten and is much more functional
859
+ - Mouse now has the option to store only valid clicks
860
+ - Added the option to refer to pre-canned image files, such as default.png and use
861
+ as an image stimulus
862
+
863
+ PsychoPy 2022.1.4
864
+ ~~~~~~~~~~~~~~~~~
865
+
866
+ Fixes:
867
+
868
+ - experiments using iohub were not running on MacOS standalone due to broken version of the gevent library
869
+ - fixes to connection from Builder to Pavlovia in certain circumstances (e.g. certain usernames or when
870
+ project has moved) #22963a9
871
+ - fixes searches of Pavlovia for private projects by the logged in user
872
+ - fix to use of correct answers for Joystick Buttons Component #2e66dc1 #f9ef1be
873
+ - Builder crashing when a Routine had been copied over #4592876
874
+ - some parameters in Builder dialogs were missing their label names #c8cd380
875
+ - ShapeStim was not obeying requests for zero opacity #8030b2f
876
+ - fixed "currentLoop is not defined" error for online studies #a261d04
877
+ - in certain circumstances, mic recordings were not saving for each trial, only for the last trial,
878
+ when online #5e23a0a
879
+
880
+ PsychoPy 2022.1.3
881
+ ~~~~~~~~~~~~~~~~~
882
+
883
+ Fixes:
884
+
885
+ - TextStim (and Button, which is derived from TextStim) was not easily clickable online due to incorrect bounding box psychopy/psychojs#492
886
+ - Slider styleTweaks were not being applied #4773
887
+ - Check that file is saved before trying to Run #4759
888
+ - Mouse coordinate mapping was incorrect for MacOS Retina displays which meant that Slider and Brush wasn't working, for instance #4755
889
+ - Allow the Sound Component to be used if transcription libs were not available #4747
890
+ - Form Component excel template was corrupted (by google sheets export) #4742
891
+ - Copying a Routine from one experiment to another was causing a compile error #4740
892
+ - Better logging of errors during application load for debugging purposes #4750
893
+ - Setting the Slider to reset() was looking like a response when it shouldn't #4738
894
+ - Fixed core.getTime() for M1 native installations (does not affect Standalone or Intel-based installations on M1) b839a32da52b
895
+ - Allow 3-dimensional arrays for ShapeStim vertices 31ca663bf2
896
+ - Fix dependency definition for Poetry installations 77cb7c92eac4
897
+ - Fix use of `event` module for keyboard as fallback for iohub/ptb 5c3672804f1
898
+ - If HomeBrew has a broken fonts folder ignore it #4719
899
+ - If user specifies a line width of `"2"`make it `2` 389bfd4692
900
+
901
+ PsychoPy 2022.1.2
902
+ ~~~~~~~~~~~~~~~~~
903
+
904
+ Fixes:
905
+
906
+ - URL redirection was failing at the end of the study for online experiments
907
+ where the JS code was generated using 2022.1.0-2022.1.1 due to an erroneous
908
+ replacement of `//` with `/` in `https://` #e8218b31f71
909
+ - Hyphens can now be included in Pavlovia project names (the validator in the
910
+ PsychoPy GUI was being too strict) #bbe6bf5ed01
911
+ - Static Components that are used for fetching online resources (e.g. using a
912
+ Movie Component that sets its stimulus during a Static) will now freeze and
913
+ wait until the resource is fully received if it takes longer than the set
914
+ duration. Using ResourceManager components the experiment will not freeze but
915
+ status can be checked `status==FINISHED` when download is complete
916
+ - Fixed a bug where, after logging out of the Pavlovia Session in the PsychoPy
917
+ interface, PsychoPy would still provide the option to use the names/groups of
918
+ that user, but would not then allow access to their contents.
919
+ #bbe6bf5ed01d26
920
+ - PsychoPy would crash if using the Classic Theme on a mac with a retina display
921
+ (missing icons) #495fddd814ce1e0
922
+ - DotStim in local (Python) experiments was failing to update dots position #4694
923
+ - Error raised when creating a new Pavlovia project from the menu item rather
924
+ than the toolbar button #4683
925
+ - Crashing on MacOS when running experiment due to Keyboard a) 'iohub' not
926
+ loading due to gevent incompatibility and b) not then correctly falling back
927
+ to 'event' backend
928
+
929
+ PsychoPy 2022.1.1
930
+ ~~~~~~~~~~~~~~~~~
931
+
932
+ Fixes:
933
+
934
+ - MacOS app failed to run experiments with dialog boxes (broken dependency being packaged)
935
+ - the application would hang while trying to push any changes to Pavlovia
936
+ - added Japanese translations of the new menu items etc
937
+
938
+ PsychoPy 2022.1.0
939
+ ~~~~~~~~~~~~~~~~~
940
+
941
+ Many bug fixes from 2021.x release, more than we have room for here, including:
942
+
943
+ - Code / Builder: iohub keyboard mappings now match those used by event.getKeys().
944
+ - Code: labjacks.U3.setData was not working
945
+ - Builder: Region of Interest (ROI) Component does not depend on ETRecord component.
946
+ - Builder: ROI Component 'look away' now ends routine after eyes have been outside
947
+ ROI for 'Min look time' seconds.
948
+ - Code: 0.5 second blocking eyelink start/stop/record caused iohub to drop
949
+ keyboard events.
950
+ - Code: eyelink now uses calibration 'randomize' param.
951
+ - Code: Layout of Form, Slider and Textbox now much more stable and consistent
952
+
953
+ PsychoPy 2021.2
954
+ ---------------
955
+
956
+ *Highlights:*
957
+
958
+ - Unified Eyetracker support via ioHub is now integrated into Builder for easy-to-use eyetracking studies, with many fixes, improvements and a "MouseGaze" option to simulate eye movements while testing
959
+ - Mic recordings for voice responses (Python and JS)
960
+ - Transcription (speech-to-text) via Google Speech or using CMU Pocket Sphinx (free but currently on the Python lib only)
961
+ - Improved JavaScript outputs from the Builder, providing more seamless migration to web-based studies
962
+
963
+ *Compatibility Changes:*
964
+
965
+ - CHANGED: In Python the random number generators for TrialHandlers etc use an improved algorithm (PCG64) and are now indendent of each other but seeded random sequences will differ from previous versions
966
+
967
+ PsychoPy 2021.2.0
968
+ ~~~~~~~~~~~~~~~~~
969
+
970
+ *New and improved:*
971
+
972
+ - JS+Py: Record and transcribe (speech-to-text) audio responses in both Python and JavaScript engines using various local (CMU Pocket Sphinx) and web (Google and Bing) services.
973
+ - Py: Eyetracking Components added to Builder for code-free eye-gaze monitoring
974
+ - Eyetracker Record: Starts an ioHub server to receive input from an eye tracker
975
+ - Eyetracker Calibration: Runs calibration procedure on connected eyetracker
976
+ - Eyetracker Validation: Runs validation procedure on connected eyetracker
977
+ - Region Of Interest: A PsychoPy polygon with methods to check whether it's being looked at, how long for, how many times, etc.
978
+ - also improved calibration and validation procedures
979
+ - Py: Improved Movie playback performance for both the OpenCV (MovieStim3) and VLC backends. The VLC backend has added playback controls (fast-forward, rewind, etc)
980
+ - Py: hardware.Keyboard class now supports ioHub as a backend and will use that in preference to Psychtoolbox keyboard (PsychHID) if ioHub has been started before the Keyboard is created. ioHub keyboard is similarly in performance but with fewer constraints (can handle a wider range of keyboards)
981
+ - App: demos within the app got so busy they've been moved into categories
982
+ - App: includes some basic fonts, so as not to rely on what is installed (except on macOS where these aren't permitted)
983
+ - App: output is available again in the bottom of the Coder view
984
+ - App: many improvements to the autotranslate of Py->JS in Code Components (fixing issues from the "Crib sheet")
985
+ - JS: audio playback can fade in/out to avoid clicks
986
+ - JS: Builder loops (TrialHandlers) support and update properties such as thisN as in Python Experiments
987
+ - JS: Form supports `formComplete()` call to check if all required items have a response
988
+ - JS: Form supports items types: SLIDER, RADIO (synonyms for RATING and CHOICE)
989
+ - JS: Button Component now supported for text-based buttons (as in the Python Component already present)
990
+ - JS: supports more options for color styles
991
+
992
+ *Fixes:*
993
+
994
+ - Py: TextBox better handling word boundaries for newlines
995
+ - Py: Button was incorrectly treating a held-down button as a click (now supports new-clicks only option)
996
+ - Py: ioHub better integration with PsychoPy units and color spaces
997
+ - JS: bug in Form scrolling
998
+ - JS: various fixes to TextBox and Form styling
999
+ - JS: Data files output now include information about their character encoding (BOM) supporting more locales of Excel
1000
+
1001
+ PsychoPy 2021.2.1
1002
+ ~~~~~~~~~~~~~~~~~
1003
+
1004
+ Fixes:
1005
+
1006
+ - macOS was crashing on launch (caused by missing files from psychtoolbox stripped by macOS GateKeeper)
1007
+ - added cryptography lib explicitly to requirements for pip install #267483d00
1008
+ - Runner local debug of PsychoJS experiments was failing with MIME-type errors (Runner didn't know about new psychojs packaging) #4153
1009
+ - extended timeout when querying Pavlovia from the app (e.g. searching for projects) #4148
1010
+ - corrected reset of clock for new Button Component
1011
+ - DlgFromDict was crashing if `labels` were used (in code) #4137
1012
+ - short (<0.5s) sounds were not labelled as finished in PsychoJS boilerplate #4117
1013
+ - contrast parameter was not being applied to ShapeStim #4111
1014
+
1015
+ PsychoPy 2021.2.2
1016
+ ~~~~~~~~~~~~~~~~~
1017
+
1018
+ Fixes:
1019
+
1020
+ - Builder outputs weren't fully honouring the `userVersion()` request, resulting in broken PsychoJS code #5f10b0a12 #017c18f2f31e
1021
+ - Better documentation of (high-performance) VLC movie backend
1022
+ - iohub.Mouse.setPosition was not handling units correctly when given a float
1023
+ - Builder boilerplate for Microphone was looking for a transcription even if none was requested #4163
1024
+
1025
+ PsychoPy 2021.2.3
1026
+ ~~~~~~~~~~~~~~~~~
1027
+
1028
+ Fixes:
1029
+
1030
+ - on macOS the long-standing issue of the **app freezing in the dock** has now been fixed #4214
1031
+ - smoother handling of trying to run an experiment on a computer with different mic hardware than where the experiment was created #4210
1032
+ - Minolta LS100/110 was not working due to broken bytes/unicode conversion #4186
1033
+ - ElementArray was not honouring the contrasts (contrs) parameter #4196
1034
+ - Code Components were giving unnecessary warning about namespace issues. Should only warn if a variable name is being _shadowed_ not if it's being _used_ #4193
1035
+
1036
+ PsychoPy 2021.1
1037
+ ---------------
1038
+
1039
+ The first major release of 2021 brings a lot of fixes (the dev team is focussing heavily on making the user experience more smooth at the moment).
1040
+
1041
+ On top of those fixes are a number of useful additions though, like the new :ref:`buttoncomponent`.
1042
+
1043
+ NEW:
1044
+
1045
+ - Builder has a :ref:`buttoncomponent` to make it easier to have clickable image/text objects
1046
+ - Builder: Improved layout of Component dialogs:
1047
+
1048
+ - Consistent tabs for common parameters (like pos, size, color...)
1049
+ - Component parameters that use filenames (sounds, images, etc.) now have a Browse... button
1050
+ - Component parameters that use Excel files now have an “open in Excel” button, if you click this when the field is blank it will open a pre-made template for you
1051
+ - Component parameters that are colors now have a button to open the color picker
1052
+
1053
+ - Builder now features separate compile buttons for JS and Py and will open the JS file in the Coder view when compiled
1054
+ - Builder readme files now support markdown formatting (and .md extensions) psychopy/psychopy#3377
1055
+ - PsychoPy lib: refactored color handling via the :class:`~psychopy.colors.Color` class
1056
+
1057
+ CHANGES (compatibility issues):
1058
+
1059
+ - CHANGED: the new more-flexible parameters of PsychoPy Experiment Components makes experiments from 2021.1 **will not run** on older versions of PsychoPy. If you share your study with people using older versions make sure you set the :ref:`useVersion` setting to be 2021.1.0 or upwards so that it will run elsewhere
1060
+ - CHANGED: PsychoJS: orientation for PsychoJS now follows clock convention rather than engineering convention (polar coordinates, positive rotation is anti-clockwise) whereas PsychoPy used the clock convention. From this release onwards both use the clock convention or orientation/rotation.
1061
+ - CHANGED: Slider has additional params for colors and fonts of lines/labels/marker that will not exist on older installations
1062
+ - CHANGED: BufferImageStim was using an incorrect rect specification for selecting the region of the screen - it was using a bottom-left instead of PsychoPy standard center #3597
1063
+
1064
+ PsychoPy 2021.1.0
1065
+ ~~~~~~~~~~~~~~~~~~
1066
+
1067
+ FIXES:
1068
+
1069
+ - All: Curly quotation marks (“”), which are sometimes automatically put into text boxes by MacOS and certain keyboard settings, will now be automatically replaced with regular quotation marks (“) when in code. To use curly quotation marks still, you can “escape” them by putting a \ before them.
1070
+ - Lib: Fixed syntax warnings on Python 3.8 #3344
1071
+ - Lib: The Pygame audio backend can be used again. #3382
1072
+ - Lib: Several fixes to iohub ( #3348, #3399, #3412, commit psychopy/psychopy/3912167)
1073
+ - Builder/Coder: Fixed the error raised when the “Plot gamma” button in the monitor center is clicked but no calibration data is loaded. #3384
1074
+ - Coder/Builder: Correct detection of retina/high-dpi displays within wxPython on MacOS, Linux, and Windows.
1075
+ - Python Lib: TextBox stim text layout not working on linux and macOS.
1076
+ - Python Lib: various minor fixes to TextBox2
1077
+ - Coder: Miscellaneous bug fixes to demos/coder/stimuli example scripts.
1078
+ - Coder: Fixed a possible error when parsing code to build the source tree.
1079
+ - Coder: Handle error caused when closing editor tabs.
1080
+ - Builder: The “Routine” pane can no longer be- moved which broke the builder interface.
1081
+ - Coder: Make Coder's default size reasonable on fresh install. #3472
1082
+ - Coder: Bug where opening an unsupported file type raises an error. #3519
1083
+ - Coder: Fixed bug where the source tree raises and error if it comes across things it cannot correctly parse.
1084
+ - Online: Prevent Safari from beeping in full screen. psychopy/psychojs#266
1085
+ - Online: Slider sizing, tick placement, and event handling improvements. #249 #263 #264
1086
+ - Online: Fixed ShapeStim instances ignoring the closeShape property. psychopy/psychojs#245
1087
+ - Online: Support `TrialHandler.Method.FULLRANDOM`. psychopy/psychojs#247
1088
+ - Online: Improved mouse event accuracy overall. psychopy/psychojs#248
1089
+ - Online: Fixed ShapeStim variants ignoring the contrast property. psychopy/psychojs#250
1090
+ - Online: Fixed an issue translating ‘\n’ encoded line breaks when importing conditions files. psychopy/psychojs#251
1091
+ - Online: Fixed TextBox click handling. psychopy/psychojs#258
1092
+ - Online: Improved MovieStim autoplay. psychopy/psychojs#260
1093
+ - Online: Allow for parsing of array-like strings when setting VisualStim position or size. psychopy/psychojs#262
1094
+ - Online: Prevent Safari from beeping in full screen. psychopy/psychojs#266
1095
+
1096
+ PsychoPy 2021.1.1
1097
+ ~~~~~~~~~~~~~~~~~~
1098
+
1099
+ FIXES:
1100
+
1101
+ - Error when trying to sync a new project with Pavlovia #33b3d80ea
1102
+ - TextBox in Builder was resetting to "default text" on each repeat rather than blank #8510d9f1a
1103
+ - Editable elements of Form were being erroneously drawn when they fell beyond the Form boundary #7d02c8251
1104
+ - Several improvements to styling of Form (on Python)
1105
+ - Added a preference for Builder to show only the online-compatible Components (or other similar options). This is a BETA testing feature
1106
+
1107
+ PsychoPy 2021.1.2
1108
+ ~~~~~~~~~~~~~~~~~~
1109
+
1110
+ FIXES:
1111
+
1112
+ - Code Components were raising an error when trying to generate JS code #3643
1113
+ - Slider styles weren't generating correct JS code
1114
+ - New Button component (Python only) was not cleaning previous clicks so they tended to act as if clicking all trials! #3641
1115
+
1116
+ PsychoPy 2021.1.3
1117
+ ~~~~~~~~~~~~~~~~~~
1118
+
1119
+ FIXES:
1120
+
1121
+ - Builder: Fix `'list' object has no attribute 'contains'` with clickable mouse objects #3651
1122
+ - Builder: context (right-click) menu was not aligned with mouse in Flow for large Flows #3657
1123
+ - Builder: Slider styles were not being used correctly from previous versions (<2021.0) #3665
1124
+ - Builder: crash if the filter preference was used to filter out pure Python or pure JS Components from Builder #3649
1125
+ - Builder: Color Picker defaults to RGB to reduce chance of users pasting in RGBA to visual Components #3667
1126
+ - Runner: local debug of online studies working again (was trying to fetch the wrong PsychoJS version) #af6622c712
1127
+ - PsychoPy lib: better handling of unknown fonts (fall back to Open Sans and Alert) #fba09ef8d0a
1128
+ - PsychoPy lib: better timing on iohub for macOS key/mouse polling #fba09ef8d0a
1129
+
1130
+ PsychoPy 2021.1.4
1131
+ ~~~~~~~~~~~~~~~~~~
1132
+
1133
+ FIXES:
1134
+
1135
+ - Py Lib: Sounds from files were being truncated #3689
1136
+ - Py Lib: TrialHandlerExt now compatible with current numpy (had an index error before) #3705
1137
+ - Py Lib: MoviStim raising an error if opacity was None #50334df2f
1138
+ - Py Lib: RIFT backend not working #428f62f80
1139
+ - Builder: When letter height was set to a variable it raised an error at run time `TypeError: len() of unsized object` #b1a77ca3a
1140
+ - Builder: Raising an error when floats looking like file names #3719
1141
+ - Builder: better handling of failure to updateVersion #afec41226
1142
+ - JS: TextBox when editable was not being reset on each trial #3706
1143
+ - JS: Keyboard should stop consuming keypresses at end of trial, even if not storing data #3706
1144
+ - JS: Add Sound.setSound() method to allow for dynamically deciding audio source psychopy/psychojs#154
1145
+ - JS: Allow for PIXI updates when dynamically adjusting opacity, including on polygons psychopy/psychojs#203
1146
+ - JS: Give Form radio type support psychopy/psychojs#281
1147
+ - JS: Improve ImageStim.setImage() attribute checking psychopy/psychojs#292
1148
+ - JS: Give TrackPlayer fades on play / stop psychopy/psychojs#296
1149
+ - JS: Fix TextBox eating up key presses psychopy/psychojs#302
1150
+
1151
+ PsychoPy 2020.2
1152
+ -----------------
1153
+
1154
+ NEW FEATURES:
1155
+
1156
+ - New look, including dark mode, customizable themes and new flat buttons (you can choose a Classic theme to get the old buttons back for comfort)
1157
+ - Now have an class for /editable/ text called **TextBox2**:
1158
+
1159
+ - very fast rendering (faster than the original TextStim)once the font characters are uploaded
1160
+ - supports an editable flag which allows it to pick up text input to the window including full unicode support for your keyboard
1161
+ - you can apply (fake) bold and italics within the text using <i></i> and <b></b>
1162
+ - if multiple editable TextBoxes are onscreen together you can tab between them
1163
+
1164
+ - **Form** components now work online and support (in both lab-based and online versions):
1165
+
1166
+ - free text
1167
+ - ratings and sliders
1168
+ - choice boxes (radio buttons)
1169
+ - descriptions (no response)
1170
+ - headings
1171
+
1172
+ - Improved Coder:
1173
+
1174
+ - call-tips for code and better auto-completion
1175
+ - view the folders and the structure of the current file
1176
+
1177
+ - Improved Runner:
1178
+
1179
+ - Builder/Coder provide options to run directly (Ctrl-R) and Runner only then used to show stdout
1180
+ - more visible how to save/open Runner filelists
1181
+ - Runner filelists saved as `.psyrun` files and can be loaded into PsychoPy with a double-click
1182
+
1183
+ - Online studies don't need to use html folder. Keep everything where it is! If resources aren't found automatically (and you would have put them in to the Resources folder) you can now add them to the ExperimentSettings>Online>AdditionalResources
1184
+ - Added support for Emotive and BrainProducts EEG hardware
1185
+ - CSV data outputs now have an option to set the delimitter (e.g. `;` or `\t` rather than `,`)
1186
+ - Brush component now has an option to allow drawing without having to hold down the mouse button #2980
1187
+
1188
+ CHANGES:
1189
+
1190
+ - _PsychoJS_ code now uses the same syntax for loop termination as _PsychoPy_ allowing either `nameOfLoop.finished=true` or `currentLoop.finished=true`
1191
+ - Python 2.7 is no longer supported. We recommend Python versions 3.6 or 3.7 (3.8 is not tested likely to work)
1192
+
1193
+ FIXES:
1194
+
1195
+ - Various compatibility fixes for JS code from PsychoPy
1196
+
1197
+ - loop termination now working the same as Python and correctly auto-translated
1198
+ - movies *should* now restart correctly, at least on browsers that support the seek behavior
1199
+ - randint is now included and imported in all scripts
1200
+ - sin, cos, pi etc are also imported in all scripts
1201
+
1202
+ - support for wxPython 4.1
1203
+ - so many more small fixes!
1204
+
1205
+ PsychoPy 2020.2.10
1206
+ ~~~~~~~~~~~~~~~~~~
1207
+
1208
+ Further fixes on top of the `new features in 2020.2 <https://www.psychopy.org/changelog.html#psychopy-2020-2>`_:
1209
+
1210
+ - Fixed rendering of TextBox2 following Big Sur update of 2020.2.7 #0fcb89c54 #39777a3e0 #1aec9abb9
1211
+ - Fixed handling of `continueRoutine=False` in BeginExperiment of online studies #ae20cb12f41
1212
+ - Erroneous warnings about code being used as parameters #40bbfe1a3
1213
+
1214
+ PsychoPy 2020.2.9
1215
+ ~~~~~~~~~~~~~~~~~
1216
+
1217
+ Further fixes on top of the `new features in 2020.2 <https://www.psychopy.org/changelog.html#psychopy-2020-2>`_:
1218
+
1219
+ - TextBox2 broke in 2020.2.8 due to switch from PyOpenGL to pyglet.gl in text rendering #39777a3e0 #1aec9abb9
1220
+ - Fixed error Unknown colorSpace: 'Named' #da234cc46
1221
+ - Superfluous debug messages from ioHub when no key pressed #9589e4865
1222
+
1223
+ PsychoPy 2020.2.8
1224
+ ~~~~~~~~~~~~~~~~~
1225
+
1226
+ Further fixes on top of the `new features in 2020.2 <https://www.psychopy.org/changelog.html#psychopy-2020-2>`_:
1227
+
1228
+ - support for macOS 11.1 Big Sur (updated mac pyglet to 1.5.11 and mac Python to 3.6.8)
1229
+ - fixed default blank text in textBox for online studies actually showing a pair of quotes #786e1d3f7
1230
+ - flag to alphabetically sort Exp Info fields was being set always true #3279
1231
+ - Position and Size params for Form Component were being requested twice #d45ca99c9
1232
+ - fixed annoying (but harmless) error 'ModuleNotFoundError: import of pyglet halted; None in sys.modules'
1233
+ - further fixes to Runner not showing print() statements #e0ec67e6f
1234
+ - Routine panels now support mouse scroll wheel to navigate #6da3707d3
1235
+
1236
+ PsychoPy 2020.2.7
1237
+ -----------------
1238
+
1239
+ (Binaries never released)
1240
+
1241
+ PsychoPy 2020.2.6
1242
+ ~~~~~~~~~~~~~~~~~
1243
+
1244
+ FIXES:
1245
+
1246
+ - missing resource error in some online experiments, caused by incorrect relative relative paths in Settings>Online>Resources #3285
1247
+ - JavaScript Code Components for Before Experiment is now moved earlier in the script - it needed to be positioned before first function opens #3289
1248
+ - TextBox was missing setBorderColor and setFillColor so these needed code to change dynamically #eb915732d
1249
+ - TextBox was carrying the text from one trial into the next #330f5fa1d
1250
+ - Coder FoldAll menu item was having no effect #6d4f66b0d
1251
+ - TextStim opacity can now be set dynamically #1045
1252
+ - Loop OK button was sometimes left disabled if invalid inputs #3a1104f71
1253
+ - fixed non-uniform probabilities of conditions file row selection suggested in docs #3256
1254
+ - workaround for scipy.optimize import error on windows machines that are using BitLocker #3287
1255
+ - if a TextBox is the only editable thing on the screen then give it focus #3269
1256
+
1257
+ PsychoPy 2020.2.5
1258
+ ~~~~~~~~~~~~~~~~~
1259
+
1260
+ FIXES:
1261
+
1262
+ - Now code-signing the installer on Windows as well as macOS
1263
+ - Failing to send print statements to output, depending on how PsychoPy was launched #4773ec32dcf Only occurred if you launch by double-clicking file or if you close Runner
1264
+ - Coder crashing on macOS when using editor with autocomplete=True #687e81dfb
1265
+ - ioHub fix for unicode strings #5451ea49a
1266
+ - Marker color on RatingScale was not resetting (but use Slider anyway!) #3140
1267
+ - Runner sometimes ran wrong script (and never knew which to stop). Now better tracking of running process #3142
1268
+ - Slider not honoring the order from the Routine (should render in order from top down) #9e0299544
1269
+ - JavaScript Code Components for Before Experiment were having no effect #3151
1270
+ - error with trying to poll() on a script process that was NoneType #cc56713cc
1271
+ - Editable textboxes were still able to be drawn if you clicked on them (even when they were not told to draw()) #8253f0696
1272
+ - warn against using global JS names in experiment #3177
1273
+ - Brush not being reset in JavaScript #88812c3bd
1274
+ - Movie reset issue #3183
1275
+ - countinueRoutine=False had no effect for online studies if in Begin Routine block
1276
+ - errors that should have appeared in the console were sometimes appearing in the (app) error dialog #d44f24d63
1277
+ - more tolerant of whitespace in Emotiv Client ID file
1278
+ - Runner AddTask dialog had wrong format for file filter #3213
1279
+ - Sound volume attribute was having no effect on the PTB backend #3215
1280
+ - Fixed fill/line colors of TextBox #3222
1281
+ - Error in JavaScript code when Movie Component had blank stop time #0b4ddcffc
1282
+ - Better handling of stdout encodings when console not set to utf-8 encoding #d77535906
1283
+ - Improved Resources box for the online (using relative references #c9558bfd8 and resize with dialog #d607271db)
1284
+ - JavaScript code-conversion now uses our own built-in `round()` function mimicking the same function in Python #da426d9e37e
1285
+
1286
+ PsychoPy 2020.2.4
1287
+ ~~~~~~~~~~~~~~~~~~~~~~
1288
+
1289
+ FIXES:
1290
+
1291
+ - improved search for resources files when compiling JS (was crashing if using root folder and using code to specify the conditions file) #09816985d5
1292
+ - the `Before Experiment` section of Code Components wasn't being written for JavaScript components #bbfd310
1293
+ - error with wx complaining about Alignment (in wx 4.1) #a32e2ca #ae508d6
1294
+ - TextBox Component default size is None (=autoexpand)
1295
+ - TextBox `editable=True` had no effect on the Builder outputs to JavaScript
1296
+ - themes menu correctly updates what the current them is in all open windows #c5cdc49
1297
+ - custom fonts that didn't provide a "family name" were causing the font search to crash #ef078ab
1298
+ - bug trying to us an invalid "useRunner" preference 3532e4c
1299
+ - JavaScript studies failed if there were 2 Mouse Components in a single Routine #0e0b26d4dcc #32a6be2
1300
+ - improved Big Five Inventory demo
1301
+ - blank TextBox Component should use blank string rather than None #39bf1bb
1302
+ - further fix to macOS stapling (might not have worked for users with no internet connection?)
1303
+ - Form Component now honors being set to show only at certain times (in keeping with other visual Components) #35ad5bc
1304
+ - Coder now correctly providing syntax styling for JS and C
1305
+
1306
+ PsychoPy 2020.2.3
1307
+ ~~~~~~~~~~~~~~~~~~~~~~
1308
+
1309
+ FIXES:
1310
+
1311
+ - **Mac version now fully signed and notarized for GateKeeper!** For some time it's been an annoyance that Apple would block PsychoPy because of it not being from a "known developer" but in recent updates GateKeeper has become so aggressive the app has been crashing on startup for some macOS versions. Hopefully Apple will now let us launch in peace!
1312
+ - **better handling of non-loading fonts in the application** On mac some fonts weren't being found (although this *might* be due to the now-solved gatekeeper issue)
1313
+ - **auto-translate py->js for parameters with $** We were translating code components but not parameter boxes where the user was switching to code using $ #3064
1314
+ - better handling when a piece of code fails to convert (warning not error) #3063
1315
+ - show progress (in Runner) while syncing project with Pavlovia #3061
1316
+ - various fixes and additions to Japanese translations
1317
+
1318
+
1319
+ PsychoPy 2020.1
1320
+ ----------------
1321
+
1322
+ For the new decade we have a new version system. The application is still called PsychoPy3 for now,
1323
+ but we're using `year.version.bugfix` from now on to mark versions.
1324
+
1325
+ NEW FEATURES:
1326
+
1327
+ - Many exciting tools for 3D rendering. See Coder demos menu for some examples
1328
+ - Online studies have better cross-browser compatibility including fixed support for edge
1329
+ - Auto-translate Code Components Py-?JS (syntax only)
1330
+ - Online studies have substantially improve timing. In fact, PsychoPy now has the
1331
+ `best timing of any online system, consistently under 4ms precision for RTs! <https://psyarxiv.com/d6nu5/>`_
1332
+ - New Runner dialog:
1333
+ - provides some 'Alerts' about things that might go wrong in their study #2646
1334
+ - allows you to run/save/open a set of studies without opening a window for each one
1335
+ - allows online studies to run locally in "debug" mode to test the study before uploading
1336
+
1337
+ - Online studies now support shapes Cross, Star and regular polygons (nVertices) #2673
1338
+ - Support for pyglet 1.4, including support for **text alignment in multi-line text** #2693
1339
+ - CHANGED: rendering of text stimuli may not look quite the same. We now have new parameters
1340
+ `anchorHoriz` and `TextAlign` rather than `alignHoriz` but this may not act the same in all
1341
+ cases #2693
1342
+ - Online studies no longer require a separate `html` folder. #2687 In some cases (e.g. when adding extra resource files)
1343
+ it may be preferable to keep the html folder and that's currently still the default
1344
+ for new studies but ExperimentSettings>online>folder can now be set to blank and the html/js
1345
+ files will be saved alongside the psyexp/py files. This reduces file duplication.
1346
+ - Support for QUESTplus staircases
1347
+ - Pyglet backend now supports 10-bit framebuffer #2672
1348
+ - Updated support for Oculus Rift #2655
1349
+ - Added a :class:`~psychopy.visual.Pie` (pacman) stimulus #2652
1350
+ - Substantially faster rendering of DotStim #2647
1351
+
1352
+ PsychoPy 2020.1.3
1353
+ ~~~~~~~~~~~~~~~~~~~~~~
1354
+
1355
+ - Runner was not launching Coder scripts from their own directory #2819
1356
+ - csv files should allow separator to be `;` and decimal place to be `,` #2825 #2828
1357
+ - PsychoPy application was now launching in Windows versions <8.1 (which don't know about high-dpi displays) #2820
1358
+
1359
+ PsychoPy 2020.1.2
1360
+ ~~~~~~~~~~~~~~~~~~~~~~
1361
+
1362
+ - Keypad key responses were not showing up as numbered responses under the new Keyboard class #2812
1363
+ - Cedrus button box had an error int he Builder-output code added in 2020.1.1 #186ec587634
1364
+ - Code Component was accidentally *forcing* people to use code auto-conversion #5c57d0c9d
1365
+
1366
+ PsychoPy 2020.1.1
1367
+ ~~~~~~~~~~~~~~~~~~~~~~
1368
+
1369
+ FIXED:
1370
+
1371
+ - Several tweaks to the new Runner dialog:
1372
+ - Double-click takes you back to the file in the appropriate Builder/Coder view
1373
+ - Ctrl-R within the Runner run the file (so you can do Ctrl-R twice from builder and you're running)
1374
+ - Alerts separated from stdout so they're more visible
1375
+ - Alerts for Builder are checked on experiemnt selection rather than on script compile time
1376
+ - Alert was testing stim size/pos incorrectly if using units "from experiment settings"
1377
+
1378
+ - Mac keyboard access should now bring up a dialog taking you to the correct System Preferences panel
1379
+ - Fixes to Eyelink 1000 communications from iohub #1a8c6923b0
1380
+ - Better support for high-res displays on Windows #2795
1381
+ - Further tweak to readline issues on linux #6975040fae #4a80060b94
1382
+
1383
+ PsychoPy 2020.1.0
1384
+ ~~~~~~~~~~~~~~~~~~~~~~
1385
+
1386
+ FIXED:
1387
+
1388
+ - Rect stimulus now aliases size with width and height so that users can refer to either #2650
1389
+ - Faster updating of DotStim dot locations (so fewer dropped frames) #2647
1390
+ - `continueRoutine` can be set in the BeginRoutine block rather than the EachFrame block #2680
1391
+ - Tab key was incorrectly reporting itself as 'escape' in new Keyboard object #2620
1392
+ - many more!
1393
+ - Cedrus response box can be inserted into multiple routines without having to use a Code Component (no "Could not find a Cedrus device" error)
1394
+
1395
+
1396
+ PsychoPy 3.2
1397
+ ----------------
1398
+
1399
+ PsychoPy 3.2.4
1400
+ ~~~~~~~~~~~~~~~~~~~~~~
1401
+
1402
+ FIXED:
1403
+
1404
+ - Mitigated the gamma get/set fails caused by Microsoft Windows release 1903. PsychoPy
1405
+ - now avoids using these calls unless gamma-setting is really needed
1406
+ - gives more info about the cause. See more info in [troubleshooting gamma ramp](https://www.psychopy.org/troubleshooting.html#errors-with-getting-setting-the-gamma-ramp)
1407
+ - provides an option to skip gamma-setting entirely
1408
+ - Slider wasn't allowing the units to be "from experiment settings" #23d80b49f
1409
+ - Setting the conditions rows from another conditions file was causing "Error path is on mount... start on mount..." #2e8cd2183
1410
+ - Mac 'tab' key was reporting itself as 'escape' with new Keyboard #95326cadd
1411
+ - PSTBox Python3 incompatibility (although there may be more) #da83429d6
1412
+ - better scaling of rating scale (Slider) in Form #d115e63cb
1413
+ - Stencil for Form was being activated immediately rather than when needed #9daeba94d
1414
+
1415
+ PsychoPy 3.2.3
1416
+ ~~~~~~~~~~~~~~~~~~~~~~
1417
+
1418
+ FIXED:
1419
+
1420
+ - on the `pip install` version (incorrectly packaged) there was an error "NameError: name ‘pythonExec’ is not defined"
1421
+ - JS version system now drops the final (bugfix) release number (3.2.3 -> 3.2 in JS lib)
1422
+ - Cedrus response box now supports keys as a variable value in Builder #2608
1423
+ - QuestPlusHandler now supports "unknown" kwargs #2610
1424
+
1425
+ PsychoPy 3.2.2
1426
+ ~~~~~~~~~~~~~~~~~~~~~~
1427
+
1428
+ FIXED:
1429
+
1430
+ - timing of first frame was being given an extra (unnecessary) delay if images were loaded #8ddab41
1431
+ - potential app crashes if no internet available #63aa7e0 #b3e15f9
1432
+ - Builder under OS X was not launching experiments if filename contained a space #1b205df
1433
+
1434
+ PsychoPy 3.2.1
1435
+ ~~~~~~~~~~~~~~~~~~~~~~
1436
+
1437
+ - Python2 installations crashed when trying to launch studies from Builder due to the use of a modern argument to subprocess not supported by Python2 #2596
1438
+ - If Builder script had an error, then printing of that error was sometimes being split across the output frame (of Builder) and the output panel of Coder #2594
1439
+
1440
+ PsychoPy 3.2.0
1441
+ ~~~~~~~~~~~~~~~~~~~~~~
1442
+
1443
+ It's all about the new timing improvements!
1444
+
1445
+ PsychoPy 3.2.0
1446
+ ~~~~~~~~~~~~~~~~~~~~~~
1447
+
1448
+ TIMING improvements:
1449
+
1450
+ - **new Sound backend 'PTB' which is much faster** than any of the alternatives on all operating systems (using the C code from Psychtoolbox thanks to Mario Kleiner) :
1451
+ - when combined with pre-scheduling (e.g. start playback on upcoming win.flip()) this can generate sub-ms precision and sub-ms lag!
1452
+ - works with standard audio hardware
1453
+ - **better timing of visual stimuli** when timing by 'secs' (rather than frames):
1454
+ - new feature to request info from the Window about next expected flip
1455
+ - t in a Builder scripts is now time from first frame (so synched to visual stims)
1456
+ - **better timing on the keyboard responses** of the JavaScript experiments due to timestamping asynchronously with your script
1457
+
1458
+ Also ADDED:
1459
+
1460
+ - Standalone installations now provide an updated Cedrus library, pyxid2
1461
+ - Support for new LabHackers TTL2USB8 device (parallel port alternative)
1462
+ - Envelope grating now has exponent (power) option
1463
+
1464
+ FIXED:
1465
+
1466
+ - Long-standing issue with lots of print-statements (e.g. on every frame) crashing Builder scripts
1467
+ - Support for Pyglet 1.4 (although text scaling appears to have changed a little)
1468
+ - Some serial devices (photometers) were not compatible with Python3 string/bytes
1469
+ conversion
1470
+ - Too many more to mention...!
1471
+
1472
+ PsychoPy 3.1
1473
+ ----------------
1474
+
1475
+ We've improved keyboard timing a great deal.
1476
+
1477
+ As of PsychoPy 3.1 we are now using the underlying code of the `kbQueue` calls in
1478
+ `Psychophysics Toolbox`. The C code from those calls was ported to a new Python
1479
+ package in late 2018 and this is now the basis of the new :class:`Keyboard` class.
1480
+ This only works on 64-bit Python3 installations, but the Keyboard class will
1481
+ fall back to the old `event.GetKeys` calls where the `psychtoolbox` package is
1482
+ not available.
1483
+
1484
+ PsychoPy 3.1.5
1485
+ ~~~~~~~~~~~~~~~~~~~~~~
1486
+
1487
+ FIXED:
1488
+
1489
+ - new rendering glitch in ImageStim when mask=None and interpolate=True, caused by previous fix to the wrapping issue #2526
1490
+
1491
+ PsychoPy 3.1.4
1492
+ ~~~~~~~~~~~~~~~~~~~~~~
1493
+
1494
+ FIXED:
1495
+
1496
+ - further fix to Mic for experiments created under the previous version (our last fix only solved the problem for new
1497
+ Mic Components being inserted) #2512
1498
+ - fixed demo timeByFrames which was set to use Qt4 for plotting instead of Qt5 (which has been the default version
1499
+ provided since the switch to Python3)
1500
+ - fixed crash in the new Keyboard class caused by `psychtoolbox` lib incorrectly converting unicode characters in the
1501
+ device name (this was actually a fix in #kleinerm/Psychtoolbox-3@a5c37855a4a097) that needed repackaging
1502
+ - error with Variable Component trying to save start/stop times (that might not exist for that variable) #e1bca1bdc
1503
+ - some data could get orphaned (and not saved) by being collected in the outer section of a nested loop #8b7fda826
1504
+ - when using Mouse.getPos() with retina display and win.units=='pix' the mouse pos was double the expected value #a78d74420
1505
+
1506
+ PsychoPy 3.1.3
1507
+ ~~~~~~~~~~~~~~~~~~~~~~
1508
+
1509
+ FIXED:
1510
+
1511
+ - StairHandler code from Builder was failing in 3.1 due to new tStartRefresh
1512
+ data being sent to wrong method (addData not addOtherData) #2497
1513
+ - Routines in online studies that weren't included in (or before) a loop were
1514
+ not having their data saved #2496
1515
+ - Fix to audio capture error "bad argument at position 0" from Builder experiments #dadb9be25
1516
+ - PsychoPy app didn't recognise projects that were pointing to gitlab ssh targets (e.g. created in terminal) #08d7937
1517
+
1518
+ PsychoPy 3.1.2
1519
+ ~~~~~~~~~~~~~~~~~~~~~~
1520
+
1521
+ FIXED:
1522
+
1523
+ - teething problems with new :class:`~psychopy.hardware.Keyboard`:
1524
+
1525
+ - in Builder there was stuttering of sounds and lags in frame timing caused
1526
+ by accidentally creating lots of Kyeboards while checking for 'escape'
1527
+ - durations were being reported with correct magnitude but as negative values #e43e474602b7f
1528
+ - problem on Windows if keyboard device name contained unicode (that problem
1529
+ was actually in psychtoolbox package, now updated in Standalone)
1530
+ - on Windows, the 'return' key was being called 'num_enter'
1531
+
1532
+ - videos were not running online #9779579b60 #51b0824f755
1533
+ - fixed rounding error in filtering of NoiseStim #5d0e360d87b
1534
+ - iohub `waitKeys` should act like `getKeys` if maxWait<=0 #e33f733f317de
1535
+ - error if unicode items in the new Form class #8287674f49a4c8
1536
+
1537
+ ADDED:
1538
+
1539
+ - videos in Builder now have a `Loop playback` parameter
1540
+ - Standalone distributions now include tobii-research package
1541
+
1542
+ PsychoPy 3.1.1
1543
+ ~~~~~~~~~~~~~~~~~~~~~~
1544
+
1545
+ ADDED:
1546
+
1547
+ - Added the loop playback parameter to Movie Components
1548
+
1549
+ FIXED:
1550
+
1551
+ - Microphone on windows failed if user didn't manually set pyo to be preferred lib. That isn't now needed #700b72cd6
1552
+ - pyo lib is now provided in the 64 bit Python3 Standalone (win)
1553
+ - The new Keyboard class wasn't clearing all events when requested (e.g. at the beginning of stimulus onset) #2442
1554
+ - Parallel port lib in the Windows 32-bit version wasn't working (installed a new dll)
1555
+ - OpenCV in Mac Standalone wasn't working (updated to be a package not a single file)
1556
+ - Sounds with variable duration didn't stop properly #2446
1557
+ - Fix to JS output when useVersion was set to something
1558
+ - Cedrus XID lib is now working on Python3 (although their official one is yet to come)
1559
+
1560
+ PsychoPy 3.1.0
1561
+ ~~~~~~~~~~~~~~~~~~~~~~
1562
+
1563
+ NEW:
1564
+
1565
+ - hardware.keyboard.Keyboard class, based on C code from the Psychtoolbox project (ported to Python by Mario Kleiner)
1566
+
1567
+ - faster than `event.getKeys()` (polling is asynchronous with drawing loop and the calls go direct
1568
+ to the USB rather than going via the operating system key calls)
1569
+ - supports keyDuration fields as well as `rt` for key down time
1570
+
1571
+ - Form class for combining text items and responses (currently ratings and radio items) in a scrollable list
1572
+ - each Builder Component is now outputting its start/stop times in the data file by default (can be turned
1573
+ off for )
1574
+
1575
+
1576
+ PsychoPy 3.0
1577
+ ----------------
1578
+
1579
+ PsychoPy3 is the new phase of development including support for online studies
1580
+ at the Pavlovia.org experiment server. Many of the features here are relatively
1581
+ new and, although we have spent hundreds of hours developing and testing them
1582
+ you should be more cautious than ever checking your experiment and data outputs.
1583
+
1584
+ PsychoPy 3.0.7
1585
+ ~~~~~~~~~~~~~~~~~~~~~~
1586
+
1587
+ FIXED:
1588
+
1589
+ - local project repeatedly asking to Create New Pavlovia project when one already exists #c3f0d203f
1590
+ - Fixed "No module named 'PyQt4'" on MacOS<10.10 caused by PyQt dropping support for Mac10.9 in PyQt5.9 #2375
1591
+ - don't allow movie->online to use units 'from experiment settings' #8cbaf8a713
1592
+ - Py3 string/byte fixes for CRS ColorCal #3bf1b7e5d4 #d49f154a0
1593
+ - various fixes to Japanese translations
1594
+
1595
+ PsychoPy 3.0.6
1596
+ ~~~~~~~~~~~~~~~~~~~~~~
1597
+
1598
+ FIXED:
1599
+
1600
+ - `TrialHandler.next()` was accidentally removed by Python3 conversion and now added back in #c44621ab072ad
1601
+ - various fixes to iohub Python3 compatibility (especially for datastore)
1602
+ - permit reading "xlsm" files as conditions files (Excel files with macros although these will be ignored by Python) #9e11bfd61
1603
+ - added space key to the GlobalEventKeys #2310
1604
+ - fix to pating into Code Component with windows EOLs
1605
+ - fixes to Japanese translation (and bug around saving Static Components in Japanese locale)
1606
+ - packaging: PyQt package inside one of the Standalone distros was broken
1607
+
1608
+ PsychoPy 3.0.5
1609
+ ~~~~~~~~~~~~~~~~~~~~~~
1610
+
1611
+ FIXED:
1612
+
1613
+ - sounddevice backend not importing on systems that don't have readline #a9bbe98b3
1614
+ - better automated Pavlovia logging-in for users, based on project #460889e5d
1615
+ - faster auto-logging for changes involving numpy arrays (e.g. elexment arrays XYs) #e5dfc9e7d
1616
+ - fix paste when using legacy macOS end-of-lines (convert them to '\n' always) #94c5ee6a2
1617
+ - updated Japanese translations #2292
1618
+
1619
+ PsychoPy 3.0.4
1620
+ ~~~~~~~~~~~~~~~~~~~~~~
1621
+
1622
+ FIXED:
1623
+
1624
+ - fixes to prevent stalled "Synchronizing..." message by preventing behaviours that would cause it #8cadce02d
1625
+ - workaround to stop `sounddevice` backend from silencing `input()` #1422fd7c9
1626
+ - prevent JS experiments being compiled with units of "use prefs" #a686dbf52
1627
+ - cleaner ioHub shutdown #7a7751ca5 and datastore #209c4047f
1628
+ - Slider in JS allows forceEndRoutine #0694027b2
1629
+ - better error reporting when compiling scripts #a01cb2982
1630
+ - don't crash the app if no internet #84b7602c3
1631
+ - don't crash if scipy.optimize doesn't load #0f8038629
1632
+ - set Slider label height to match tick height by default #f8bdf2341
1633
+ - online sounds were never ending if duration was blank (now ends at end of file) #6d91b3186
1634
+ - problem converting EOLs between different formats when pasting code
1635
+
1636
+ ADDED:
1637
+
1638
+ - New Builder Pavlovia button to examine properties of current project
1639
+ - Added star to ShapeStim (currently only in Python) #8e6c40993
1640
+ - Added tooltips for Pavlovia buttons
1641
+
1642
+ PsychoPy 3.0.3
1643
+ ~~~~~~~~~~~~~~~~~~~~~~
1644
+
1645
+ CHANGED: Slight change to creation of *new* experiments, which will now default to
1646
+ the units of 'height' rather than 'use preferences' (which led to potential confusion
1647
+ when the experiment moved to a different computer)
1648
+
1649
+ FIXED:
1650
+
1651
+ - Force End Routine wasn't working with Slider when online #a0ca2e312
1652
+ - Fix to the online error about units: if an experiment is given units of "use preferences"
1653
+ this will switch to height during HTML export #a686dbf52
1654
+ - First push of a new project to Pavlovia didn't note that remote now exists, so
1655
+ tried to "first push" again #f4134a670
1656
+ - fixed detection of correct non-response in JavaScript outputs (so no-go works online) #0c3cea2b2
1657
+ - added workaround for strange clash of `sounddevice` with `input()` #f99bef4a9
1658
+ - various small fixes to iohub for Py3 #e6a2169d6 #4ca503399 #cf432bc3c
1659
+
1660
+ ADDED:
1661
+
1662
+ - star available as a Shape in Builder (but not online yet)
1663
+ - experiment info dialog now supports drop-downs to constrain options (e.g. ['male','female','other'] )
1664
+ - BBTK now supports mode Digital Stimulus Response Echo #5da328fcf
1665
+
1666
+ PsychoPy 3.0.2
1667
+ ~~~~~~~~~~~~~~~~~~~~~~
1668
+
1669
+ FIXED:
1670
+
1671
+ - Builder's PsychoJS outputs were not updating their versions (pointing to the version the script was first created in, not the version currently used) #789d24ee45aa
1672
+ - sounddevice under Python2 had a bug with being unable to copy() #c1317b6b6355e
1673
+ - now prevent the user from accessing `useVersion` if that version can't be supported by the current install (e.g. incompatible Python version or wx version)
1674
+ - Windows Standalone version now includes dependency for [pyqmix](https://github.com/psyfood/pyqmix) pumps
1675
+
1676
+ PsychoPy 3.0.1
1677
+ ~~~~~~~~~~~~~~~~~~~~~~
1678
+
1679
+ FIXED:
1680
+
1681
+ - JS outputs were connecting to outdated PsychoJS version (3.0.0b11 instead of 3.0.0)
1682
+ - updated numpy (to 1.15.4) and scipy (to 1.2.0) for windows installs using https://www.lfd.uci.edu/~gohlke/pythonlibs/ in the hope of fixing numpy problems for some windows boxes
1683
+ - JS string values in Py27 were being convert to b'theString' in JS outputs which obviously broke JS
1684
+
1685
+ ADDED:
1686
+
1687
+ - Slider support from JS outputs
1688
+
1689
+ PsychoPy 3.0.0
1690
+ ~~~~~~~~~~~~~~~~~~~~~~
1691
+
1692
+ Although there were several beta versions preceding this, the changes described
1693
+ below are the *broader* changes since 1.90.3 (the previous "stable" version).
1694
+
1695
+ NEW:
1696
+
1697
+ - supports heavily revamped PsychoJS library:
1698
+ - new PsychoJS supports text, images, keyboards, mouse, sounds, movies, sliders
1699
+ - you can also now include Builder Code Components that include both
1700
+ Python and JavaScript optional code so your components will work
1701
+ online too
1702
+
1703
+ - PsychoPy can search, sync and create experiments on Pavlovia.org:
1704
+ - search for existing studies
1705
+ - create your own
1706
+ - run (and collect data into csv files or mongoDB)
1707
+ - sync, including (push changes to the server and fetch back data)
1708
+
1709
+ - Additional new features:
1710
+ - Slider class, recommended replacement for RatingScale (more efficient, more
1711
+ flexible and simpler to use)
1712
+ - support for Oculus Rift (only on Windows 64bit Python 3) all due to Matthew
1713
+ Cutone
1714
+
1715
+ Many bugs have also been fixed, notably in terms of audio library problems and
1716
+ memory problems with MovieStim3.
1717
+
1718
+
1719
+ PsychoPy 3.0.0b7
1720
+ ~~~~~~~~~~~~~~~~~~~~~~
1721
+
1722
+ FIXED:
1723
+
1724
+ - New rating scale (Slider) handles color properly #1944 and better handling of button drag #1945
1725
+ - 'newRating' Builder demo has been fixed (forceEndRoutine shouldn't have been happening)
1726
+ - timeByFrames now renders the graph into the PsychoPy window (was sometimes hanging on mac otherwise)
1727
+
1728
+ PsychoPy 3.0.0b6
1729
+ ~~~~~~~~~~~~~~~~~~~~~~
1730
+
1731
+ FIXED:
1732
+
1733
+ - several sync problems with pavlovia.org: #1f0d8bcab50c1528291adb3a689e95f6e3bf7fc5
1734
+ - sync when an empty project already exists is now fine
1735
+ - after creating the project, changing a file and repeating sync, it didn't detect the changed file
1736
+ - sync to a project that has been deleted remotely now asks if you want to recreate the project
1737
+ - better reporting of error if sync fails
1738
+
1739
+ - further fix to memory leak in MovieStim3 #9d0c127d8e6dfd6efba5f285bed93685980cd443
1740
+ - fix to PsychoJS output code: loops were not being compiled correctly #6a8e700a350b660b6f588c5b902b04a736b023d2
1741
+ - when compiling to JS we now detect tuples and convert to lists for params (JS only has one sequence, with `[ ]` )
1742
+
1743
+ PsychoPy 3.0.0b4
1744
+ ~~~~~~~~~~~~~~~~~~~~~~
1745
+
1746
+ FIXED:
1747
+
1748
+ - some packaging issues on both Windows and Mac (e.g. updates to Pillow=5.2.0, soundfile=0.10.2) also fixes libsndfile error on Mac_Py2 standalone
1749
+ - when the localRoot has been set for a project (before sync) we should get back the sync window
1750
+ - clicking "runOnline" before creating/syncing your project with Pavlovia now does the right thing
1751
+ - fix to MovieStim3 unloading of movies #1917
1752
+
1753
+ PsychoPy 3.0.0b3
1754
+ ~~~~~~~~~~~~~~~~~~~~~~
1755
+
1756
+ FIXED:
1757
+
1758
+ - a further issue with the app not starting on some machines (due to the
1759
+ first-run wizard)
1760
+ - searching pavlovia projects now support stars and forks in sorting
1761
+ - Slider forceEndRoutine was having no effect
1762
+ - sounddevice problem when playing a mono sound to stereo stream or vice-versa
1763
+
1764
+ ADDED:
1765
+
1766
+ - support for Oculus Rift (only on Windows 64bit Python 3) all due to Matthew Cutone
1767
+ - Japanese translations to many of the new features/controls
1768
+
1769
+ PsychoPy 3.0.0b2
1770
+ ~~~~~~~~~~~~~~~~~~~~~~
1771
+
1772
+ FIXED: an issue with the app not starting (if git not installed)
1773
+
1774
+ PsychoPy 3.0.0b1
1775
+ ~~~~~~~~~~~~~~~~~~~~~~
1776
+
1777
+ PsychoPy3 is the new phase of development including support for online studies
1778
+ at the Pavlovia.org experiment server. Right now this is BETA SOFTWARE. It WILL
1779
+ contain bugs but we're fixing them as fast as we/you can find them!
1780
+
1781
+ NEW:
1782
+
1783
+ - supports heavily revamped PsychoJS library
1784
+ - new PsychoJS supports text, images, keboards, mouse and sounds
1785
+ - you can also now include Builder Code Components that include both
1786
+ Python and JavaScript optional code so your components will work
1787
+ online too
1788
+
1789
+ - PsychoPy can search, sync and create experiments on Pavlovia.org
1790
+ - search for existing studies
1791
+ - create your own
1792
+ - run (and collect data into csv files)
1793
+ - sync, including (push changes to the server and fetch back data)
1794
+
1795
+
1796
+ PsychoPy 1.90
1797
+ ------------------------------
1798
+
1799
+ This is a very major refactor of many parts of the PsychoPy code. Treat very
1800
+ carefully for the first few bug-fix releases as there are likely to be errors
1801
+ some of which could be catastrophic to your data!!
1802
+
1803
+ This is the first attempt at support for Python 3, with maintained support for
1804
+ Python 2.7. Note that both are available as Standalone packages for Win and Mac.
1805
+ The Python3.6 version is labelled as Py3 in the download file.
1806
+
1807
+ Stick to Python 2.7 if you want your script to break less. If you upgrade to
1808
+ Python 3 then you'll need to change any print statements to include brackets
1809
+ and you may also get some new errors springing up about unicode/bytes objects.
1810
+
1811
+ PsychoPy 1.90.3
1812
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1813
+
1814
+ Released July 2018
1815
+
1816
+ FIXED:
1817
+
1818
+ * Fixes event code creation for Black Box ToolKit #1830
1819
+ * Removed redundant 'apply' button in preferences #1832
1820
+ * Fixes problem with setting gamma with pyglet v1.3+ #1834
1821
+ * Removes 'unknown color space' warning if user is using named colors #1836
1822
+ * Fixes refcount error, raised when monitor centre was closed #1838
1823
+ * For Py3, JSON calibration files are now loaded into monitor list #1839
1824
+ * Fixes layout problem with RTL locale causing broken dialogs in the app #1840
1825
+ * Anti-buzzing fix applied to sounddevice backend #1847
1826
+ * Implements checks for variable name clashes between builder and conditions file #1852
1827
+ * Reduced code redundancy for _getRegionOfFrame, and can get single pixels from front buffer #1854
1828
+ * Hex color space can now be specified as a window setting in Experiment Settings #1857
1829
+ * Sound duration can now be specified in conditions files #1858
1830
+
1831
+ PsychoPy 1.90.2
1832
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1833
+
1834
+ Released May 2018
1835
+
1836
+ FIXED:
1837
+
1838
+ * TextStim now working GLFW backend #a909c95f
1839
+ * better checks for existing ffmpeg before trying to download #a909c95f
1840
+ * CRS Bits boxes bugs with Python3 #ff5a4ab7
1841
+ * Fixes to window position for Retina displays #e7b111cc #0d4538de
1842
+ * Fixes to sound component with duration=None #9b46ff0c
1843
+ * Fix to Hex-specified colors #6ffa413a
1844
+ * print(RunTimeInfo()) not working due to unicode/str error #29de9501
1845
+ * sounddevice stereo auto-detection wasn't working for wav files #b07f8fb1
1846
+
1847
+ PsychoPy 1.90.1
1848
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1849
+
1850
+ Released April 2018
1851
+
1852
+ ADDED:
1853
+
1854
+ * Option to move Y position of `RatingScale` in code #1776
1855
+ * Added option of providing extra arguments to `scipy.optimize` functions when fitting from `psychopy.data` #1772
1856
+
1857
+ FIXED:
1858
+
1859
+ * Problem with icon path in GLFW backend on linux #bbf51521664
1860
+ * PUINT didn't exist in older `win32` package but was expected by `pyglet`
1861
+ * Better handling of conditions file with empty columns (from Excel adding them or from missing headers)
1862
+ * Several fixes to ioHub in Python3 #1770 #1771 and #1775
1863
+ * Mouse reporting incorrect position when using Mac Retina display #54ced9c2644e
1864
+ * `sounddevice` was failing to find `portaudio.dylib` on Mac
1865
+
1866
+
1867
+ PsychoPy 1.90.0
1868
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1869
+
1870
+ Released March 2018
1871
+
1872
+ ADDED:
1873
+
1874
+ * Standalone distributions for Python 3.6 as well as Python 2.7
1875
+ * Using `pip install psychopy` now installs all the necessary dependencies, making it much easier to install to your own Python installation
1876
+ * Noise stimuli for presenting filtered noise in vision studies (thanks Andrew Schofield)
1877
+ * Second order stimuli for contrast modulated gratings (thanks Andrew Schofield)
1878
+ * Builder: Mouse now allows stimuli to be "clickable" turning them in to buttons
1879
+ * Builder: ShapeStim now handles additional shapes, like Cross (also takes names for shapes rather than just n vertices)
1880
+ * Monitors calibration files can now be saved/loaded in JSON format
1881
+
1882
+ CHANGED:
1883
+
1884
+ * Image stimuli given an image of None (or blank in Builder) will now not display anything, whereas they previously showed a blank white (or colored) patch. To get that behaviour you can set the image to be `color` (in Builder) or "color" (in code).
1885
+
1886
+
1887
+ PsychoPy 1.85
1888
+ ------------------------------
1889
+
1890
+ PsychoPy 1.85.6
1891
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1892
+
1893
+ A bug-fix release to solve a few machine-specific issues.
1894
+
1895
+ FIXED:
1896
+ * on some computers the data weren't being saved if user pressed 'Esc' during experiment. #193ce541
1897
+ * fix for the "Unable to share contexts" error on machines that don't support OpenGL shadow_window #a1c29d3a
1898
+ * pyo not always closing properly #1614
1899
+ * problem with non-ascii characters in conditions file name #32204a200
1900
+ * loading of preferences was failing if the audio backend wasn't a valid option #c2d11477b5
1901
+ * Builder demo images_blocks had wrong units for images #1601
1902
+ * no longer tell people to upgrade if their version is *newer* than the "latest" #1567
1903
+ * added support for newer PST box in ioHub (with 7 buttons not 5) #b9534a28896
1904
+ * Monitor.linearizeLums() was raising an error due to a change in import name
1905
+ * stimuli not switching correctly to desired window in multi-window setups #1514
1906
+ * opencv movie backend had an error that `'float' object cannot be interpreted as an index` #1510
1907
+ * cedrus box had error `AttributeError: 'ResponseDevice' object has no attribute 'status'` #1493
1908
+ * retina displays had some bad scaling. Now strongly recommend using `retina=True` #08163f78a9c8ab9b
1909
+
1910
+
1911
+ PsychoPy 1.85.4
1912
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1913
+
1914
+ Released: Sept 2017
1915
+
1916
+ There was an error building the 1.85.3 release. Rather than building a bug-fix-inly release, version 1.85.3 has accidentally included some substantial code refactoring intended for the 1.86.0 release.
1917
+
1918
+ This version, which we will call 1.85.4 is to replace that 1.85.3 release and provides the same fixes (but not the code refactoring) that was intended in 1.85.3
1919
+
1920
+ PsychoPy 1.85.3
1921
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1922
+
1923
+ Released: Aug 2017
1924
+
1925
+ This release fixes several bugs but it does also add 2 new dependencies:
1926
+
1927
+ * `json_tricks` and `future` are bother required for this version
1928
+ * these are paving the way for updating Python3 (which will be enabled in 1.86.x series of releases)
1929
+
1930
+ FIXED:
1931
+
1932
+ * Problem with text stimuli on Windows not rendering if large (was a bug in pyglet, fixed in 1.3.0b1)
1933
+ * Whitespace/indentation guides were not toggling on/off correctly in Coder #4ebbdb9c5468beebb50d817697c0665450e9a5ad
1934
+ * Added status property to labjack U3 in Builder scripts #b4d16d3d6319d0edeb7a95e774ff60c0ea51a1cf
1935
+ * Fix to iohub.launchHubServer() under Linux #a9392f62e5e819788e77553583b6776d5992b849
1936
+ * Fix to config file for iViewX on ioHub #590fb20de193fd85f66655c0983107a561f3f2d1
1937
+
1938
+ PsychoPy 1.85.2
1939
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1940
+
1941
+ Released: June 2017
1942
+
1943
+ FIXED:
1944
+
1945
+ * several errors with **PsychoJS** outputs from Builder (mostly thanks to Jon Roberts at Colorado):
1946
+
1947
+ * nReps and randomisation now being handled correctly by PsychoJS #ad9a931
1948
+ * "correct" responses were being overwritten by non-responses #f903210
1949
+ * Text components that were static caused a crash (were erroneously given two single-quotes) #b399a50
1950
+
1951
+ * Staircase would finish prematurely if nReversals was None #7148cad
1952
+ * PsychoPy would crash if sound device contained a unicode character #c1ff68f
1953
+ * FrameBufferObject not working correctly for dual-window setups #5e1c045
1954
+ * removed some annoying junk messages about sounddevice #e5ae2fc
1955
+
1956
+ PsychoPy 1.85.1
1957
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1958
+
1959
+ Released: April 2017
1960
+
1961
+ FIXED:
1962
+
1963
+ * several errors with **PsychoJS** outputs from Builder:
1964
+ * early termination of experiments #f1bd15047
1965
+ * incorrect blank email field in info.php #d68c36bf9
1966
+ * incorrect component name sin endRoutine #e47d90a36
1967
+ * incorrect default units for image stims #8c32d1c9a
1968
+ * several problems with **sound**:
1969
+ * pyo not loading #1365
1970
+ * searching for 'auto' instead of 'default' device #d54d14fe
1971
+ * fixed duration calculation (bug in soundfile) for sounddevice #e0e01ad
1972
+ * textbox v textstim demo wasn't working #b2913c12476
1973
+ * error with colors when using TextStim with blendmode='add'
1974
+ * errors in installer package:
1975
+ * windows installer could overwrite system path setting
1976
+ rather than append (NSIS short-string problem came back!)
1977
+ * freetype 32 bit dll is being provided again (was in matplotlib
1978
+ before but disappeared?)
1979
+
1980
+ PsychoPy 1.85.0
1981
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1982
+
1983
+ Released: Feb 2017
1984
+
1985
+ ADDED:
1986
+ * `Online experiments now supported <https://www.psychopy.org/online/online.html>`_ using new `PsychoJS library <https://github.com/psychopy/psychopy/tree/master/psychojs>`_. See what is supported so far at `PsychoPy online status <https://www.psychopy.org/online/status.html>`_
1987
+ * New sound engine using `sounddevice <https://github.com/spatialaudio/python-sounddevice/>`_
1988
+ * Checking of image paths for stimuli (did you forget to add ".jpg"?)
1989
+ * Copy/paste of a Component is now possible in Builder (right-click the component to copy, use the Experiment menu to paste). This essentially duplicates the component.
1990
+
1991
+ FIXED:
1992
+ * crash when increasing size of Flow in Builder #1272
1993
+ * bug in pysoundcard backend preventing file-based sounds playing #1299
1994
+ * excel outputs were failing to save on new versions of openpyxl #1276
1995
+ * `useVersion()` was not fetching new (uninstalled) versions correctly #1301
1996
+ * DotStim now has the option to reset the dots at the beginning of a trial #db6f53d50
1997
+ * better handling of blank cells in Excel conditions files (and xls files now supported)
1998
+ * Excel conditions files now import the "value" of a cell rather than the formula #7f753f5
1999
+
2000
+ DEPENDENCIES/PACKAGING:
2001
+ * pyserial and pyxid were incompatible versions
2002
+ * now packaging 1.2-maintenance branch of pyglet including Text memory fixes
2003
+
2004
+ PsychoPy 1.84
2005
+ ------------------------------
2006
+
2007
+ PsychoPy 1.84.2
2008
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009
+
2010
+ Released: Sept 2016
2011
+
2012
+ FIXED:
2013
+ * Problem with renaming of Routines preventing experiment from re-loading #1248
2014
+ * Several bugs with Builder code generation since PEP8 refactoring:
2015
+ * Static Components gave error compiling script
2016
+ * some Keyboard Components (with variable "allowed keys" settings) gave error compiling script #1245
2017
+ * Mouse Component with "Save state at end of trial" gave indentation error #1253
2018
+ * Loops gave error compiling script if conditions file was a formatted string #1253
2019
+
2020
+ * Standalone distributions were not including the correct `pylink 1.1.0.4` and `pyxid` packages
2021
+
2022
+ ADDED:
2023
+ * Keyfinder demo to Builder view #1252
2024
+ * Support for key modifiers using `event.getKeys()` #1242
2025
+
2026
+ PsychoPy 1.84.1
2027
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2028
+
2029
+ Released: Sept 2016
2030
+
2031
+ FIXED:
2032
+ * Builder Keyboard component was treating non-response as correct answer. #1230 Thanks Jarrod
2033
+ * MovieStim2 (opencv) now compatible with newer versions of opencv (v3.x) #1223
2034
+ * SSL certificates for OS X causing failure to connect to osf.io for projects
2035
+ * dependencies added/updated in Standalone packages:
2036
+
2037
+ * pyHook, pygame, pylink 0.3.2, (win32)
2038
+ * pysoundcard (OS X)
2039
+
2040
+ * hello_world demo crashing the app on load
2041
+
2042
+ ADDED:
2043
+ * Movie **outputs** in gif, mp4, mov formats automatically, using moviepy #1228
2044
+
2045
+ PsychoPy 1.84.0
2046
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2047
+
2048
+ Released: Aug 2016
2049
+
2050
+ ADDED:
2051
+ * Projects (new menu) which can sync files with Open Science Framework
2052
+ * Movies in Builder can now avoid loading audio (i.e. mute). As well as meaning your movie is genuinely silent this saves processing for the computer, so do it unless you need the sound!
2053
+ * menu item to create a .csv (data) file from a .psydat file; see Coder > Tools menu (also: Coder > Demo menu)
2054
+ * Builder experiments force a save before the end of the study so pressing the red stop button is less likely to lose data for you
2055
+ * You can now **rename a Routine** #1136
2056
+ * a Builder experiment setting to specify the version of PsychoPy to be used when running the experiment #1137
2057
+
2058
+ CHANGED:
2059
+
2060
+ * MAJOR REFACTOR: A lot of code has been refactored to be more in line with a thing called PEP8. If that doesn't mean anything to you don't worry, it shouldn't affect you. If you like that sort of thing, sorry we didn't got further and get rid of camelCase. ;-)
2061
+ * setting ShapeStim vertices dynamically now requires an explicit assignment of the new vertex list to shape.vertices; this can be slow for filled shapes with many vertices. See shapes.py, selfx example.
2062
+ * Some file names and locations have changed. To update, replace OLD form in your scripts with NEW form:
2063
+
2064
+ * OLD form --> NEW form
2065
+ * Deprecated since 2012, must now update:
2066
+ * `from psychopy import calib` --> `from psychopy import monitors as calib` (or just use `monitors`)
2067
+ * `from psychopy import bits` --> `from psychopy.hardware.crs import bits`
2068
+ * `from psychopy import log` --> `from psychopy import logging`
2069
+ * Newly deprecated (the old way still works but logs a warning):
2070
+ * `from psychopy import _shadersPyglet` --> `from psychopy.visual import shaders`
2071
+ * `from psychopy import gamma` --> `from psychopy.visual import gamma`
2072
+ * `from psychopy import filters` --> `from psychopy.visual import filters`
2073
+ * API change (only affects people who write their own Builder components):
2074
+ * `from psychopy.app.builder.components._visual import VisualComponent` --> `from psychopy.app.builder.components._base import BaseVisualComponent`
2075
+
2076
+ * PyQt is now default over wx for dialog boxes (if either PyQt4 or PyQt5 are installed). Also fixed bug to support PyQt5
2077
+ * No Static Components are created by default (e.g. ISI). Have to add them manually
2078
+
2079
+ IMPROVED:
2080
+ * ShapeStim can properly fill arbitrary shapes (using tessellation); see new shapes.py Coder demo for examples.
2081
+ * Coder view now has better support for Retina display on OSX. visual.Window also has a new option to use retina for rendering in the experiment (off by default)
2082
+ * better warnings about VLC being wrong architecture for this python install
2083
+ * Code Components now indicate which ones actually contain code. #1204
2084
+
2085
+ FIXED:
2086
+ * bug with Monitor center not creating/saving monitor due to lack of SizePix #1208
2087
+ * window viewScale and viewPos combine correctly; viewScale handles negative values, mirror-image flips the window correctly (except for Text)
2088
+ * Builder experiments will always add their extension (to stop people overwriting them with the python script of the same experiment)
2089
+ * faster writing of multiple lines (bits) to the LabJack
2090
+ * sampling rate when using binocular mode in eyelink 1000 #1146
2091
+ * Aperture now supports infinite durations in Builder #1122
2092
+ * ColorCal II now supports newer pyserial version #1138
2093
+ * Erroneous extra data column added if experiment was aborted #1115
2094
+ * Ubuntu buglet with importing iohub devices caused by outdated psutils #1172
2095
+
2096
+ PsychoPy 1.83
2097
+ ------------------------------
2098
+
2099
+ PsychoPy 1.83.04
2100
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2101
+
2102
+ Released: Feb 2016
2103
+
2104
+ * FIXED:
2105
+ * Mac Standalone was (still) not launching on some versions of OSX
2106
+ * MovieStim3 not working on all graphics cards (glPopAttrib). Thanks Bryan Cort and Frank Papenmeier for their help
2107
+ * MovieStim3 bug with movies that had no audio stream
2108
+ * Data saving is forced at the end of Builder Experiments even if script fails to exit properly (red stop button less likely to lose data)
2109
+ * Setting gamma on OSX 10.11 wasn't working (Apple moved the lib to a new location). #1089
2110
+ * Option to turn off audio in Movies from Builder when not needed (better performance and fewer shutdown-probs)
2111
+
2112
+ PsychoPy 1.83.03
2113
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2114
+
2115
+ Released: Dec 2015 (NB 1.83.02 was never publicly released)
2116
+
2117
+ * FIXED:
2118
+ * problems with the Mac Standalone failing to launch on some OSX versions
2119
+ * reduced impact of pyglet text memory leaks (make fewer updates). (NB There is still a leak in Pyglet's code that we can't fix)
2120
+ * several fixes to RatingScale
2121
+ * window viewScale and viewPos combine correctly; viewScale handles negative values, mirror-image flips the window correctly (except for Text) #1011
2122
+ * fixed memory leak in sounds on 64bit Mac installation (error in pyo)
2123
+ * MovieStim3 was interacting badly with ShapeStim #981
2124
+ * MovieStim3 was failing if no audio stream was present in the file #984
2125
+ * PsychoPy app now gives a warning message if it can't start due to permissions error #1055
2126
+ * Faster rendering of MovieStim2 and Moviestim3 due to removal of mipmapping code
2127
+
2128
+ PsychoPy 1.83.01
2129
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2130
+
2131
+ Released: Oct 2015
2132
+
2133
+ * FIXED:
2134
+ * new bug with pygame sounds giving fileName not defined
2135
+ * several RatingScale bugs; reduce the memory leak (due to pyglet as used in TextStim)
2136
+ *
2137
+ * ADDED: voice-key capability, e.g., for word-naming studies; includes a demo, auxiliary functions (smoothing, zero-crossing, etc), and file-format options (all those supported by pyo)
2138
+ * CHANGED: remove support for google's speech to text (the new google API is for chrome / chromium developers only)
2139
+ * CHANGED: deprecate psychopy.web.upload(); use the requests package instead: requests.post()
2140
+
2141
+ PsychoPy 1.83.00
2142
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2143
+
2144
+ Released: Oct 2015
2145
+
2146
+ * ADDED: MovieStim3 using an alternative backend that doesn’t require avbin, vlc or streamer. It just uses a couple of python libs and FFMPEG, which are relatively easy to package. Seems to have good performance too but this needs more testing
2147
+ * IMPROVED: speed to load psychopy.visual (“lazy loading” only the stimuli you use are loaded)
2148
+ * ADDED: RatingScale precision=60 allows display of time-based values (min:sec or hours:min). Values from .getRating() are decimal proportions (1 min: 59 seconds -> 1.9833 minutes).
2149
+ * ADDED: Coder view can now be set to read-only mode to prevent subjects accidentally altering study #945
2150
+ * ADDED: TextStim now has property `boundingBox` telling you the maximum area of the letters (defined by the font, not by the actual rendered letters) #35c168f1
2151
+ * ADDED: Aperture can now be created using images (anything that worked with ImageStim) #923 and can also be inverted so that opaque becomes transparent and vice versa #922 Thanks Thomas Emerling for both
2152
+ * ADDED: New visual stimulus EnvelopeGrating for contrast-modulated gratings. Thanks Andrew Schofield
2153
+ * ADDED: option to set mouse_exclusive mode (mouse locked to the window boundary and invisible) Thanks Suddha Sourav #898
2154
+ * FIXED: DotStim can now change field size on the fly
2155
+ * FIXED: several (but probably not all) annoying error messages that were unimportant
2156
+ * FIXED: Condition file in Builder no longer abbreviated. Thanks Mike #913
2157
+
2158
+ PsychoPy 1.82
2159
+ ------------------------------
2160
+
2161
+ PsychoPy 1.82.02
2162
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2163
+
2164
+ Released: Aug 2015
2165
+
2166
+ - FIXED: TrialHandler wasn't saving extraInfo (was overwritten during trials) #815
2167
+ - FIXED: don't have pickle file re-saving itself when it comes back from pickling #833
2168
+ - FIXED: Mouse Component could crash data saving if no response was made #839
2169
+ - FIXED: memory leaks in MovieStim2 (opencv backend) #838 and #919
2170
+ - FIXED: checked that window positions are integers #854
2171
+ - FIXED: OSX "10.10" incorrectly looked older than "10.9" #866
2172
+ - FIXED: RatingScale would show "False" for scale description in some cases #870
2173
+ - FIXED: problem with microphone saving files that end with w, a or v #875
2174
+ - FIXED: MonitorCenter failing to create new monitor #887
2175
+ - FIXED: universal line endings in csv outputs files #889
2176
+ - FIXED: unicode in conditions files #892
2177
+ - FIXED: `iohub` not detecting Linux mouse events #894
2178
+ - FIXED: if output file is set to be `stdout` this should then be closed #902
2179
+ - FIXED: don't abbreviate the path name of conditions files #913
2180
+ - FIXED: minor error in logging for `rush()` under win32 #914
2181
+ - FIXED: unicode issues in user preferences panel #930 #932
2182
+ - FIXED: MonitorCenter won't lock you out if given an invalid screen number #937
2183
+ - FIXED: mono++ mode in CRS Bits++/#/Display++ is now using full dynamic range (previously 8bit blue gun overlay was overriding the 16bit screen buffer)
2184
+
2185
+ PsychoPy 1.82.01
2186
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2187
+
2188
+ Released: Feb 2015
2189
+
2190
+
2191
+ PsychoPy 1.82.01
2192
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2193
+
2194
+ Released: Feb 2015
2195
+
2196
+ * FIXED: problem with MovieStim2 showing black box instead of movie on certain systems
2197
+ * FIXED: problem with Tobii eye tracker not closing calibration window (Sol)
2198
+ * FIXED: better timing for non-slip routines that follow dynamic routines (Jeremy) #822
2199
+ * FIXED: problem with stimuli (e.g. shapes) not appearing if a texture had just been created and not yet drawn
2200
+ * FIXED: pygame sound engine complained about "global variable loops not defined"
2201
+ * ENHANCED: Filename collision handling for ExperimentHandler (Richard Höchenberger)
2202
+ * CHANGED: for text data outputs that give delim='\t' the file extension '.tsv' is added instead of '.dlm' (Richard Höchenberger)
2203
+
2204
+
2205
+ PsychoPy 1.82.00
2206
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2207
+
2208
+ Released: Jan 2015
2209
+
2210
+ * ENHANCED: slightly faster rendering of movies for high-rate HD stimuli
2211
+ * CHANGED: `pandas` is now a strict requirement for the `psychopy.data` module
2212
+ * FIXED: Builder sounds from file no longer loop indefinitely
2213
+ * FIXED: Builder: microphone recordings are explicitly stopped at the end of every trial
2214
+ * FIXED: Static Components could become hidden by having unknown durations and then couldn't be changed. Now they are always shown even when times are unknown (Jeremy)
2215
+ * ADDED: improved support for Cambridge Research Systems Display++ and Bits# devices:
2216
+
2217
+ * Color++ and Mono++ modes now supported using shaders
2218
+ * fixed some bugs with search for identityLUT in Display++
2219
+
2220
+ * ADDED: Psi adaptive staircase method (thanks Joseph Glavan for writing this)
2221
+ * ADDED: `bidi` and `xlwt` packages to the Standalone distribution
2222
+ * ADDED: support for Mouse.setPos() under pyglet back end (Jeremy)
2223
+ * ADDED: support for PST response box (Richard Höchenberger)
2224
+ * FIXED: extraInfo was not being saved in wide-text format
2225
+ * FIXED: Builder was not respecting order for drawing polygon - it was always drawn first
2226
+ * ADDED: Builder now supports 'degFlat and 'degFlatPos' units and documentation has been added for these
2227
+
2228
+ PsychoPy 1.81
2229
+ ------------------------------
2230
+
2231
+ PsychoPy 1.81.03
2232
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2233
+
2234
+ Released: Dec 2014
2235
+
2236
+ * ADDED: Sounds in Builder can now have a duration set by a variable (changing each repeat). The work on this may cause some systems to have a periodic 'tick' in the sound if they last longer than 10s (probably dependent on sound card and driver)
2237
+ * IMPROVED: RatingScale will always display a custom description ('scale') if provided by the user
2238
+ * ADDED: Monitor Center can now calibrate non-primary monitors
2239
+ * FIXED: components in Builder can now be 'stopped' at the same time as they are started and never show up (previously at least one frame was always required)
2240
+ * FIXED: several issues with Bits++ causing a rendering glitch and not being able to calibrate from Monitor Centre
2241
+ * FIXED: choice selection boxes stopped working in monitor centre (caused by hardware.crs.bits importing pyglet.gl)
2242
+ * FIXED: Bits# can be set to do gamma correction in the PsychoPy LUT ('software') rather than using the on-board gamma table file ('hardware')
2243
+ * FIXED: bug with monitor calib files not returning their linearization method correctly
2244
+ * ADDED: psychopy.qtgui as alternative to gui which doesn't duffer from problem with choice boxes and pyglet clashing (thanks Sol)
2245
+ * FIXED: data files now correctly include the originPath (the path to the script that created them). Thanks Alex Holcombe for the fix
2246
+
2247
+ PsychoPy 1.81.02
2248
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2249
+
2250
+ Released: Oct 2014
2251
+
2252
+ * FIXED: bug with gamma not being set from the Monitor file
2253
+ * FIXED: MovieStim2 warnings about dropped frames were crippling the output window
2254
+ * FIXED: new issue (in 1.81.01) with several drop-down menus in Builder not allowing to select that option
2255
+
2256
+ PsychoPy 1.81.01
2257
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2258
+
2259
+ Released: Oct 2014
2260
+
2261
+ * FIXED: bug with rendering of Movies from Builder (autoDraw() not working)
2262
+ * ADDED: option to use new movie backend from Builder (there is now an option to select `opencv` or `avbin` for movie rendering)
2263
+ * FIXED: if MovieStim2 couldn't load frames fast enough it ran slow (should drop frames but stay synchronised). (Sol)
2264
+ * FIXED: fix spurious warnings about GratingStim.__del__
2265
+ * FIXED: pyo audio crashed on windows if no mic/input was found (Sogo Hiroyuki)
2266
+ * ADDED: serial port device in iohub (Sol)
2267
+
2268
+ PsychoPy 1.81.00
2269
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2270
+
2271
+ Released: Sept 2014
2272
+
2273
+ * IMPROVED: cross-version compatibility:
2274
+
2275
+ * In Builder experiments from 'future' versions can be opened and unknown objects will be ignored (but kept)
2276
+ * In Code you can now do `import psychopy; psychopy.useVersion('X.XX.XX')` to switch to any version greater than 1.76.00 (including versions not installed and future versions). This only affects the lib, not the application. (Thanks Erik Kastman for most of the work on this)
2277
+
2278
+ * IMPROVED: better unit tests for visual stimuli to prevent future bugs
2279
+ * CHANGED: MovieStim was right-left flipping movies and this has been corrected. If you had been working around that by setting flipVertical=True then you'll need to undo that correction
2280
+ * IMPROVED: Can now select a subset of conditions in Builder loops and in `data.importConditions()` function (thanks Mike MacAskill for help)
2281
+ * IMPROVED: In Builder, loops that don't reflect trials (e.g. stimuli within a trial or blocks of trials) can be flagged as such, resulting in neater data files
2282
+ * ADDED: support for additional hardware:
2283
+
2284
+ * basic support for interacting with BlackBoxToolkit v2 psychopy.hardware.bbtk
2285
+ * CHANGED: added basic support for CRS Bits# in psychopy.hardware.crs. New way to interface with Bits++ as well, using a class rather than a Window argument. See demo in demos>hardware
2286
+ * labjack digital outputs can be used as a Parallel Port Component in Builder
2287
+ * the screen rendering can now include a warping step to simulate spherical, cylindrical or custom warping (Jay Borseth)
2288
+ * the screen now supports 'frame packing' whereby sequential frames can be packed into one, as the red, green and blue channels for monochrome high-rate projectors (Jay Borseth)
2289
+ * ioHub eye tracker interface for GazePoint GP3 (Martin Guest)
2290
+ * ioHub Serial device:
2291
+
2292
+ * Support for simple fixed width or marker delimited serial rx stream -> device event parsing.
2293
+ * Demo created showing usage with PST Response box added (Richard Höchenberger)
2294
+ * ioHub ioSync device:
2295
+
2296
+ * Use Teensy 3.0 / 3.1 MCU. Connect via USB 2.0.
2297
+ * 8 / 8 digital inputs / outputs
2298
+ * 8 analog inputs (~12 - 13 bit effective resolution)
2299
+ * 1000 Hz sampling rate for analog and digital inputs.
2300
+ * Keyboard Host support (useful for testing keyboard delay variability from software alone)
2301
+
2302
+ * IMPROVED packaging:
2303
+
2304
+ * can now install on OSX using miniconda/anaconda distribution (Erik Kastman)
2305
+ * pyopencv (cv2) added to Standalone as an alternative to avbin
2306
+ * PySoundCard and PySoundFile added to Standalone
2307
+ * psutil added to Standalone
2308
+ * application is now compatible with wxPython 2.8, 2.9 and 3.0
2309
+
2310
+ * ADDED: MovieStim2 stimulus type. Compared to MovieStim, improved performance and wider range of media encoding support has been reported from testing feedback on all OS's.
2311
+ * IMPROVED: stimulus attributes:
2312
+
2313
+ * Nearly all stimulus attributes now support new syntax, e.g. `stim.pos = [0,0]` as well as the previous `stim.setPos([0,0])`. All docs are update to reflect this change.
2314
+ * All numeric stimulus attributes now support operations. Use e.g. `stim.pos += [0,0.5]`. Read more in :ref:`Operations <attrib-operations>`.
2315
+ * Many more stimulus attributes can now be set after initialization. They have the same name as the init parameters. E.g. `stim.win = mySecondWindow` changes which Window the stimulus is drawn to
2316
+
2317
+ * IMPROVED: logging
2318
+
2319
+ * CHANGED: `log=None` and `autoLog=None` inherits from parents, with `visual.Window` at the top of the hierarchy. None is now default for all stimuli and setter methods.
2320
+ * FIXED: removed unnecessary (e.g. duplicate) logging.
2321
+ * IMPROVED: unnamed stimuli are now given a default name in the logs for easier identification, e.g. "unnamed ShapeStim".
2322
+
2323
+ * IMPROVED: you can now specify the standard deviation (default=3) for gaussian mask in various stimuli by setting e.g. `maskParams={'sd':5}` during init or after init.
2324
+ * ADDED: language localization (Builder and Coder)
2325
+
2326
+ * Can now display the app menus, tooltips, and so on in a language other than US English (selectable via prefs -> app -> locale)
2327
+ * Almost all displayed text can be translated (Jeremy Gray, Hiroyuki Sogo)
2328
+ * A Japanese translation is available (Hiroyuki Sogo)
2329
+ * Other translations will be easy to add; see online developer notes on using Poedit
2330
+
2331
+ * IMPROVED: psychopy.ioHub
2332
+
2333
+ * CHANGED: Keyboard device and events are more user-friendly.
2334
+ Note: This release is not backwards compatible with earlier versions of the ioHub Keyboard device or event data file.
2335
+ Please see documentation for details.
2336
+ * Backend integration between iohub and psychopy continues to improve.
2337
+ * ioHub can now be used in OS X 10.9 with PsychoPy Coder. NOTE: Must add Coder app to accessibility list.
2338
+ * Several bug fixes.
2339
+
2340
+ * FIXED: several other minor bugs (that would have given exceptions if encountered). Thanks particularly to Philip Wiesemann for finding several of these
2341
+ * FIXED: machines that didn't support shaders or framebuffer objects were raising an error on win.flip() if the useFBO argument was not manually set to False. Machines that don't support the new rendering methods are now handled more gracefully
2342
+
2343
+ PsychoPy 1.80
2344
+ ------------------------------
2345
+
2346
+ PsychoPy 1.80.08
2347
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2348
+
2349
+ Released: Aug 2014
2350
+
2351
+ FIXED: bug with using numpy arrays as masks; they were being interpreted as floats but should have been bytes
2352
+
2353
+
2354
+ PsychoPy 1.80.07
2355
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2356
+
2357
+ Released: Aug 2014
2358
+
2359
+ FIXED: bug with timing of keys when using the `timestamped` argument
2360
+
2361
+ PsychoPy 1.80.06
2362
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2363
+
2364
+ Released: June 2014
2365
+
2366
+ * FIXED: problem with using the framebuffer object (nothing was rendered at all)
2367
+ * ENH: added support for using a stencil when the framebuffer object is turned on
2368
+
2369
+ PsychoPy 1.80.05
2370
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2371
+
2372
+ Released: June 2014
2373
+
2374
+ * IMPROVED: better unit tests for visual stimuli to prevent further regressions of the issues below
2375
+ * FIXED: machines that didn't support shaders or framebuffer objects were raising an error on win.flip() if the useFBO argument was not manually set to False. Machines that don't support the new rendering methods are now handled more gracefully.
2376
+ * FIXED: further fixes to greyscale coloring (some images were not correctly detected as greyscale by PIL so tests weren't working)
2377
+ * FIXED: machines that didn't support shaders or framebuffer objects were raising an error on win.flip() if the useFBO argument was not manually set to False. Machines that don't support the new rendering methods are now handled more gracefully
2378
+ * FIXED: named colors were not interpreted correctly by the visual.Window (but worked fine for stimuli)
2379
+ * FIXED: the error message about TextBox/FontManager not working doesn't show up any more
2380
+ * FIXED: reinstated the requirement that wx is version 2.8.x only until we get time to check 3.0 compatibility more deeply
2381
+
2382
+ PsychoPy 1.80.04
2383
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2384
+
2385
+ Released: April 2014
2386
+
2387
+ * FIXED: buglets in logging. Logging wasn't encoding unicode correctly for console targets (but file targets were OK) and some duplicate messages were occurring for stimulus autologs
2388
+ * FIXED: buglet with GratingStim/PatchStim when texture was not a square power of two (was crashing due to incorrect global variable)
2389
+ * FIXED: ElementArrayStim was not updating its position using .setFieldPos()
2390
+
2391
+ PsychoPy 1.80.03
2392
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2393
+
2394
+ Released: April 2014
2395
+
2396
+ * FIXED: Shader code was ignoring opacity setting for ImageStim
2397
+ * FIXED: Mouse clock was not the same as PsychoPy's general events clock (so out of sync) (Sol & Jeremy)
2398
+
2399
+ PsychoPy 1.80.02
2400
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2401
+
2402
+ Released: April 2014
2403
+
2404
+ * FIXED: ImageStim did not use its mask on some machines (nVidia and ATI?) or did not render at all on others (intel graphics?)
2405
+ * CHANGED: Sound object now checks if the sound is a note name before checking for file names (only affects cases where the file name was something like A.wav)
2406
+ * ADDED: Aperture now supports contains() and overlaps() methods
2407
+ * ADDED: Image/Grating masks can now also be 'cross' (Suddha Sourav)
2408
+ * FIXED: Unicode problem for microphone on non-English installs of win32
2409
+ * FIXED: StairHandler first reversal now changes step size correctly and added option not to use the initial 1-up,1-down regime (Jon maintains that you should though!) (thanks Nathanael Larigaldie)
2410
+ * FIXED: emulator LaunchScan uses new RatingScale syntax
2411
+
2412
+ PsychoPy 1.80.01
2413
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2414
+
2415
+ Released: Mar 2014
2416
+
2417
+ * FIXED: buglet with movie glPopAttrib() on Intel gfx cards (thanks Bryan Cort)
2418
+ * FIXED: problem trying to use FrameBufferObject (FBO) on Intel GMA graphics cards
2419
+ * FIXED: problem with ImageStim not respecting setColor() and setContrast()
2420
+ * FIXED: some stimuli were failing to switch to a second window when requested
2421
+ * FIXED: some rendering glitches with ShapeStim caused by interpolation settings (thanks to Soyogu Matsushita for finding this fix)
2422
+ * FIXED: automated import of gamma for known monitors, which was failing on some monitor calibration files
2423
+ * FIXED: a single-line conditions file is now imported correctly by Builder (Jeremy Gray)
2424
+ * IMPROVED: a Routine not included in a loop now saves its data to a default 'loop' (Jeremy Gray)
2425
+ * IMPROVED: Coder checks for consistency of end-of-line options (thanks Wilbert van Ham)
2426
+
2427
+ PsychoPy 1.80.00
2428
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2429
+
2430
+ Released: Mar 2014
2431
+
2432
+ * Improvements to user interface:
2433
+
2434
+ * the glitch that prevented scrolling the Routine view is gone (win32)
2435
+ * dialog boxes in the Builder now have tabs for categories of controls
2436
+ * Code Components have much more space for each piece of code (again due to tabs)
2437
+
2438
+ * ADDED: In Builder you can now customise the data filename/path in the Experiment Settings. Any variables in the `expInfo`
2439
+ dialog box can be used to create this path. See `dataFileName` for further info
2440
+ * ADDED: support for advanced rendering modes. Can now 'add' rather than average when using transparency. This is better
2441
+ for visual compound stimuli like plaids, and essential for colored anaglyph stimuli where the resulting image needs to
2442
+ be the sum of the left and right eye images.
2443
+ * ADDED: new visual unit options: 'degFlatPos' and 'degFlat' provide more accurate conversions from degrees to pixels for
2444
+ drawing stimuli (although they're more accurate, accounting for the flat screen, they may look strange because 1 degree
2445
+ gets larger with greater eccentricity on a flat screen). The previous unit 'deg' still exists and remains default as, for
2446
+ many studies, these are expected
2447
+ * ADDED: wider support for the functions `contains` and `overlaps`. Most stimuli now have these methods. Also they can
2448
+ now be used irrespective of whether the stimulus and other object have the same units (they used only to work for
2449
+ units of pix)
2450
+ * ADDED: support for other shapes in the Aperture stimulus (and its Builder Component). You can either specify the
2451
+ number of vertices `nVert` and a `size` to get a regular polygon aperture, or you can provide a set of arbitrary
2452
+ vertices as your `shape` argument
2453
+ * CHANGED: Size of 'square' or 'triangle' apertures used to represent the radius of the circle on which their vertices
2454
+ lay. It is now a height/width as you would more likely expect. This means aperture code in scripts may need rewriting
2455
+ to be smaller.
2456
+ * IMPROVED: stimulus duration is now more precise when using `duration (s)` or `time (s)` although using `nFrames`
2457
+ option is still advised for brief stimuli
2458
+ * IMPROVED: there are now fewer irrelevant lines in the log file as stimuli are initially created
2459
+ * IMPROVED: Staircase loops in Builder now initialise just before the staircase is run, rather than at the start of the
2460
+ experiment. This means they can be controlled by an outer loop and, effectively, restarted
2461
+ * FIXED: ElementArrayStim can take Nx3 or 1x3 values for colors again
2462
+ * FIXED: variable names in Builder are now case-sensitive again (they were being forced to lower case when importing csv
2463
+ files)
2464
+ * FIXED: incorrect equation for the Cumulative Normal fitting function
2465
+ * FIXED: If your variable had a new line character in it this was causing a new line to be started in the csv data file.
2466
+ These are now handled correctly
2467
+
2468
+ * ADDED: RatingScale markerStart position can be arbitrary, e.g., can start between items or beyond the end of scale
2469
+ * ADDED: RatingScale tickHeight can be used to control the height of tickMarks, including no tick marks (tickHeight=0)
2470
+ * ADDED: RatingScale marker='hover' is similar to HTML-style hovering over clickable elements
2471
+
2472
+ *psychopy.visual.RatingScale Changes* :
2473
+
2474
+ * CHANGED: Builder: remove option: choiceLabelsAboveLine; change lowAnchorText, highAnchorText -> labels
2475
+ * CHANGED: skipping a rating now adds None as the final element in the history
2476
+ * CHANGED: the default minTime is shorter, now 0.4s
2477
+ * CHANGED: more info in the log when creating a rating scale object
2478
+ * CHANGED: removed showAnchors: now use labels=None (instead of showAnchors=False)
2479
+ * CHANGED: removed lowAnchorText & highAnchorText: now use labels=['leftAnchor', 'rightAnchor'] or with optional 3rd midpoint label
2480
+ * CHANGED: renamed several parameters: stretchHoriz -> stretch, textSizeFactor -> textSize, ticksAboveLine -> tickHeight, displaySizeFactor -> size, markerStyle -> marker, customMarker -> marker
2481
+ * CHANGED: removed showScale: now use scale=None (instead of showScale=False)
2482
+ * CHANGED: removed allowSkip: now use skipKeys=None (instead of allowSkip=False)
2483
+ * CHANGED: removed escapeKeys; no longer supported but it's easy to implement (as now done in the coder demo)
2484
+
2485
+ PsychoPy 1.79
2486
+ ------------------------------
2487
+
2488
+ PsychoPy 1.79.01
2489
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2490
+
2491
+ Released: Dec 2013
2492
+
2493
+ * FIXED: startup crash in 1.79.00
2494
+ * FIXED: long-standing memory leak in MovieStim
2495
+ * FIXED: fixed problem with MovieStim not displaying the image but playing the audio
2496
+ * ADDED: volume attribute to MovieStim (Frank Papenmeier)
2497
+ * FIXED: experiments were crashing if first line of a conditions file contained a float but the rest were integers
2498
+ * FIXED: QuestHandler.addResponse() should not try to replace existing intensity on first trial (Richard Höchenberger)
2499
+ * FIXED: Window's viewPos and viewScale attributes could not be changed
2500
+ * FIXED: Builder code generation for Cedrus Box when user provided a limited set of available buttons
2501
+ * FIXED: multiple issues causing fatal errors when setting stimulus parameters (Pieter Moors and Damien Mannion)
2502
+ * FIXED: Builder experiments would crash under certain conditions when there was no 'participant' in the info dialog box (Philipp Wiesemann)
2503
+ * FIXED: bug toggling readme file window in Builder (Philipp Wiesemann)
2504
+ * FIXED: further fix to the Coder raising excessive 'this file has changed' warnings
2505
+ * FIXED: Component names now update on the Routine panel after being changed in a dialog (Philipp Wiesemann)
2506
+ * FIXED: bug importing conditions if the first row of numbers was the only float. (importFromConditions now uses numpy instead of matplotlib)
2507
+ * FIXED: further fix to the extra "file close" queries during shut-down
2508
+
2509
+ PsychoPy 1.79.00
2510
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2511
+
2512
+ Released: Dec 2013
2513
+
2514
+ * ADDED: attributes for some stimuli can now be updated using e.g. `stim.pos = newPos` rather than using `stim.setPos(newPos)` to make things more like standard Python (thanks Jonas Lindeløv). This version also involved some major restructuring behind the scenes that should not be visible to users (thanks Todd Jennings)
2515
+ * ADDED: Builder Components for
2516
+ * ioLab Systems button-box; refactor PsychoPy's ioLabs code (Jeremy)
2517
+ * Cedrus button-box (tested on RB730)
2518
+ * parallel port output component
2519
+ * ADDED: option for sounds to `loop`
2520
+ * ADDED: volume argument for MovieStim so that sound can be muted (Frank Papenmeier)
2521
+ * ADDED: window now prevents system from sleep/screensaver on windows and OS X
2522
+ * ADDED: builder demo for mental rotation task
2523
+ * ADDED: Alternative Text stimulus, psychopy.visual.TextBox (Sol Simpson)
2524
+ * Two demos in psychopy.coder.visual.textbox
2525
+ * Requires: freetype lib (included in Standalone)
2526
+ * Advantages: Very fast update following text change; very precise character placement.
2527
+ * Disadvantages: Supports monospace fonts only.
2528
+ * IMPORTANT: TextBox is still being finalized and completed; expect to find (and please report) issues. API changes guaranteed.
2529
+ * FIXED: misaligned responses in csv output for QuestHandler (Zhili Zheng)
2530
+ * FIXED: bug when using ElementArrayStim with numpy 1.7.1. Most elements were receiving SF=0
2531
+ * FIXED: 'semi-automatic' calibration (thanks Flip Phillips)
2532
+ * FIXED: shut-down issues. Builder now remembers its last experiment and you don't get multiple messages about the scripts that have changed
2533
+ * FIXED: bugs with MultiStairHandler that were making it unusable (in code and Builder)
2534
+ * FIXED: lists of key presses can now be considered `correct` (Ian Hussey)
2535
+ * FIXED: certain further cases of bitmap images appearing desaturated
2536
+ * FIXED: mono sounds now duplicate to both channels correctly
2537
+ * changes to Standalone packages (require fetching the installer):
2538
+ * pyFileSec for uploading files to server using encryption (this is Jeremy's module)
2539
+ * pandas on win32 is now v1.3 (was already this version on OS X)
2540
+ * pyxid now includes Jared's upstream bug-fix
2541
+ * FIXED: many user interface tweaks, documentation and help string corrections (Philip Wiesemann)
2542
+ * FIXED: PsychoPy Coder view now closes the iohub process when the experiment script is terminated using 'Stop'. (Sol Simpson)
2543
+ * FIXED: Builder use of single staircase loops now respects the min/max values
2544
+ * CHANGED: data curve fitting functions are now using scipy.optimise.curve_fit and should hopefully be more robust to local minima(?)
2545
+
2546
+ *psychopy.iohub Changes* :
2547
+
2548
+ * ADDED: Initial release of the new Touch device:
2549
+ * currently supporting Elo brand Touch Screens.
2550
+ * any Elo model supporting the SmartSet protocol should work (Elo 2700 model used for testing to date)
2551
+ * Touch Events (TouchPress, TouchRelease, TouchMovement) are provided in a separate event stream
2552
+ * Touch and Mouse device events are independent of each other, so both devices can be used in parallel without interference
2553
+ * Touch screen calibration routine provided; calibration state can be saved to device hardware for persistence
2554
+ * See the demos.coder.iohub_extended Touch script for example of calibration graphics front end.
2555
+ * ADDED: Keyboard and Mouse events can be restricted to those events targeted at a PsychoPy Window. Currently supported on Windows and Linux only.
2556
+ * NEW: PsychoPy TrialHandler can now be used to feed experiment condition variables to the ioDataStore.
2557
+ * NEW: Device configuration file can now be specified to the launchHubServer() function when starting the ioHub Process.
2558
+ * NEW: Simple examples of how to use iohub within a Builder project using a Custom Code Component.
2559
+ * FIXED: Analog Input Event delay calculation error that was causing incorrect time correction to be applied to this event type.
2560
+ * NEW: LabJack AnalogInput interface now handles dropped samples and sampling rates that cause multichannel samples to be split between USB packets.
2561
+ * FIXED: Gaze position calculation fix for the SMI eye tracker interface during binocular tracking.
2562
+ * NEW: Enhanced Tobii eye tracker setup and calibration graphics:
2563
+ * Head position within the 3D eye tracking head box can be visualized before and after calibration
2564
+ * Animated fixation target support added during calibration routine
2565
+ * ADDED: Following EXPERIMENTAL stage implementation (Use at Own Risk):
2566
+ * ioDataStore -> Pandas Data Frame based post processing API:
2567
+ * Creates a set of Pandas Data Frames for device events, experiment messages, and experiment condition variables.
2568
+ * Filter, Group, Join data using the Pandas API.
2569
+ * Access event information with associated condition variable states.
2570
+ * Define Interest Periods (IP):
2571
+ * filter event temporally based on start and end time criteria.
2572
+ * define an IP's start and end time criteria using experiment message events, or experiment condition variable columns.
2573
+ * re-occurring IP's supported.
2574
+ * overlapping IP's supported.
2575
+ * Define Regions of Interest (ROI),
2576
+ * filter Mouse, Eye Tracker, and Touch device events based on screen location.
2577
+ * circle, ellipse, rectangle, and general polygon ROI shapes supported. (ROI functionality is dependent on the shapely python package)
2578
+ * IMPORTANT: The ioDataStore->DataFrame API is still being designed and developed. Expect to find issues. API changes guaranteed.
2579
+
2580
+ PsychoPy 1.78
2581
+ ------------------------------
2582
+
2583
+ PsychoPy 1.78.01
2584
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2585
+
2586
+ Released: Aug 2013
2587
+
2588
+ * FIXED: Image Components were showing up a pastel versions when no actual image was provided
2589
+ * FIXED: MultiStairHandler wasn't working on Builder, and had insufficient data outputs when using wide-text csv files
2590
+ * FIXED: loops couldn't be deleted from the Flow if their conditions file couldn't be found (e.g. had been moved)
2591
+ * FIXED: setting of color values was not honouring the autolog setting (was always logging)
2592
+ * FIXED: gui choice boxes now handle unicode in their options as well as ASCII strings (thanks Anne Peschel)
2593
+ * FIXED: Scaling bug for SMI eye-tracker in binocular mode (thanks Sol)
2594
+ * FIXED: Builder Code Components that were showing up in unreadable, single-line boxes
2595
+ * IMPROVED: All Builder Dialogs now appear close to the top of the screen (so they don't shoot off the bottom in most screens)
2596
+
2597
+ PsychoPy 1.78.00
2598
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2599
+
2600
+ Released: Aug 2013
2601
+
2602
+ * ADDED: option to preload during Builder scripts using :ref:`staticcomponent`, which uses :class:`~psychopy.core.StaticPeriod` class
2603
+ * ADDED: Polygon Component to Builder for drawing regular polygons (including simple lines)
2604
+ * ADDED: TrialHander can now fetch previous trials as well as future ones (thanks Mike MacAskill)
2605
+ * ADDED: BufferImageStim accepts mask and pos params (thanks Jeremy)
2606
+ * ADDED: generated Sounds (not sound files) now use a Hamming window to get rid of sharp onset/offset noises (thanks Jeremy)
2607
+ * ADDED: microphone component able to play & identify a marker tone (for vocal RT), compute loudness, compression (Jeremy)
2608
+ * ADDED: sound files: lossless compress / uncompress (requires flac executable installed separately) (Jeremy)
2609
+ * ADDED: microphone compress() audio recordings; requires flac download (not packaged with PsychoPy)
2610
+ * ADDED: new preference `flac` = system path for flac, e.g. c:/Program Files (x86)/FLAC/flac.exe (not always needed)
2611
+ * FIXED: greyscale images were being distorted during display since 1.77.00
2612
+ * FIXED: reduced number of queries when closing down and provides filenames of changed files in msg (thanks Piot Iwaniuk)
2613
+ * FIXED: movieStim.contains() and .overlaps() can work, requires that the visual.Window has units of pix
2614
+
2615
+ PsychoPy 1.77
2616
+ ------------------------------
2617
+
2618
+ PsychoPy 1.77.02
2619
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2620
+
2621
+ Released: July 2013
2622
+
2623
+ * FIXED: problem with Builder Images appearing grey unless they were 'constant'. This is a bug that was introduced in 1.77.00 with the faster loading of images.
2624
+ * FIXED: having a monitors folder with a unicode character in the path doesn't break the app (thanks Sebastiaan Mathot)
2625
+
2626
+ PsychoPy 1.77.01
2627
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2628
+
2629
+ Released: June 2013
2630
+
2631
+ * Standalone package changes:
2632
+ - pytables downgraded to 2.3.5 on Win32 (to be compatible with WinXP)
2633
+ - pyo upgraded to 0.6.6 on OSX and Win32
2634
+ * FIXED: The recent files list in Builder now contains recent files! (Thanks Piotr Iwaniuk)
2635
+ * FIXED: Timing issue with LC Tech eye-tracker in iohub
2636
+
2637
+ PsychoPy 1.77.00
2638
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2639
+
2640
+ Released: June 2013
2641
+
2642
+ * ADDED: preview of Sol Simpson's **ioHub** for faster (asynchronous) polling of hardware including mouse, keyboard, eyetrackers and other devices. See iohub demos for example usage. This provides many advantages over previous event polling:
2643
+ - asynchronous process allows constant polling (not tied to refresh rates) in a way that won't impact the rendering of your stimuli. It even runs on a separate CPU core if possible.
2644
+ - provides up/down/duration for key presses
2645
+ - provides unicode character (rather than simply key name for keyboard)
2646
+ - provides a unified API for eyetracker classes
2647
+ - provides async access to the parallel port
2648
+ - provides an alternative data output format (using hdf5) particularly useful for high-output streaming data (e.g. eye-trackers)
2649
+
2650
+ * DEPRECATED: opensslwrap will soon be replaced by pyFileSec, a much-improved version of the same package (= file-oriented encryption)
2651
+ * IMPROVED: substantially (~40%) faster loading of RGB images from disk (by using byte format rather than float). May also allow storing of more images on graphics card than previously
2652
+ * ADDED: `AdvancedMicrophone` class to add and retrieve a high-frequency tone to indicate the start of recording (e.g., to allow accurate vocal RT estimation), with demo (Jeremy Gray)
2653
+ * REFACTORED: parallel port support. Support for Windows via inpout32/inpout64 and Linux via pyparallel added. Existing API maintained for single port usage, but new PParallel classes added to provide more flexibility when dealing with multiple ports. see `parallel` (Thanks Mark Hymers)
2654
+ * ADDED: `MovieStim` now updates its `status` attribute to FINISHED, in line with other stimuli
2655
+ * CHANGED: microphone default file names include milliseconds (to avoid two files with the same name)
2656
+ * ADDED: color-word speech-recognition demo (coder > input > speech_recognition.py)
2657
+ * ADDED: in Builder components dialog boxes, text that will be interpreted as code is displayed in monospace font
2658
+ * ADDED: remove and warn about trailing whitespace in Builder component values (but not Text fields)
2659
+ * ADDED: support for pyglet version 1.2 alpha (but 1.1.4 is still recommended - it appears to render faster)
2660
+ * ADDED: more sound.SoundPyo methods (get & set duration, volume, looping)
2661
+ * FIXED: event.Mouse() can obtain a default visual.Window(), if one has already been created
2662
+ * ADDED: Builder components generate a compile-time warning if a field's value looks dynamic but its updating is constant (Jeremy Gray)
2663
+ * ADDED: better simulated scanner-noise in launchScan (just for fun)
2664
+ * ADDED: RatingScale.getHistory() returns intermediate time-stamped ratings; allows "continuous" ratings
2665
+ * CHANGED: RatingScale.getRating() no longer returns False prior to an accepted rating (now returns the currently selected value)
2666
+
2667
+ PsychoPy 1.76
2668
+ ------------------------------
2669
+
2670
+ PsychoPy 1.76.00
2671
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2672
+
2673
+ The compatibility changes in this release below are likely to affect very few users.
2674
+
2675
+ * ADDED: Window.callOnFlip() function to allow arbitrary functions to be called, timed precisely to the point where the frame flip has occurred (see Coder Demos>Timing>callOnFlip)
2676
+ * FIXED: a scaling bug in RatingScale descriptions (Giuseppe Pagnoni)
2677
+ * ADDED: support for mirror-image text, and mirror-image BufferImageStim (Jeremy Gray)
2678
+ * ADDED: support for lower latency sound with the pyo library. For now pygame remains the default but this can be changed by setting the order in preferences>general>audio
2679
+ * CHANGED: PsychoPy Standalone is now being built using python 2.7.3 (rather than 2.6). Under OSX psignifit has been removed from this distribution, as have the libraries to create .mov files using Window.saveMovieFrames(). If you need those features then install the 1.75 Standalone and then update to 1.76 using the auto-update system.
2680
+ * ADDED: sound objects (either pygame or pyo) now support autologging
2681
+ * FIXED: a bug in the generation of the LMS color space conversion matrix. It seems nobody was actually using this for real, but if you were contact Jon for details!
2682
+ * CHANGED: various changes to RatingScale (thanks Henrik Singman):
2683
+ * CHANGED: choices are now displayed at the tick marks by default (instead of above the line). To restore the old behavior set labels=False. This does not affect experiments created in older versions of the builder.
2684
+ * ADDED: check box "choiceLabelsAboveLines" to the RatingScale component of the builder (advanced tab) to still have the choice labels above the line.
2685
+ * ADDED: arguments tickMarks and labels to RatingScale class to control where tick marks (for quantitative rating scales) should be placed at the line and how these should be labeled.
2686
+ * ADDED: argument ticksAboveLine to RatingScale class. Controls where the tick marks should be plotted (above or below the line).
2687
+ * FIXED: problem with unset exp.name (was causing wx.Dialog error "TypeError: String or Unicode type required" on new experiments)
2688
+ * CHANGED: exp.name is no longer available from Builder scripts (can use exp.getExpName() instead)
2689
+ * FIXED: problem with tiling of depth values for ElementArrayStim (thanks Yuri Spitsyn)
2690
+ * FIXED: Fix to setContrast for certain visual stimuli (Jonas Lindeløv)
2691
+ * FIXED: inability to launch scripts/experiments if the Mac Standalone was in a folder with a space in it
2692
+ * FIXED: Aperture Component now honours the 'units' (Hiroyuki Sogo)
2693
+ * FIXED: stimulus contains/overlaps functions now use stimulus 'units' and take stimulus orientation into account (Hiroyuki Sogo) NB if you had code in place to perform these corrections yourself you should now remove it!
2694
+ * FIXED: some data outputs were not honouring the 'matrixOnly' option (Mike MacAskill)
2695
+ * FIXED: when loading a psydat file of an ExperimentHandler the file automatically saved new copies of its csv/excel outputs. This no longer occurs (if loaded using misc.fromFile)
2696
+ * ADDED: timestamp option to event.waitKeys() (Jonas Lindeløv)
2697
+ * ADDED: a first-run wizard to check the system, report as html (somewhat experimental) (Jeremy Gray)
2698
+ * ADDED: a benchmark wizard (Tools menu) to test hardware & software, option to share on psychopy.org (Jeremy Gray)
2699
+ * ADDED: info.getRAM() (Jeremy Gray)
2700
+
2701
+ PsychoPy 1.75.01
2702
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2703
+
2704
+ * FIXED: Bug with not being able to play sounds of blank (infinite) duration from Builder
2705
+
2706
+ PsychoPy 1.75.00
2707
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2708
+
2709
+ * CHANGED: New Builder experiments will, by default, save a single csv file, a single psydat file and a single log file. Was previously also saving an Excel file (with one sheet per loop) and many psydat files (one per loop). Psydat files can still be used to re-output any format of data file.
2710
+ * IMPROVED: Experiment info dialog box easier to control now from experiment settings (user doesn't need to write a dictionary by hand any more)
2711
+ * IMPROVED: Components in the Builder are now arranged in categories, including a special 'Favorites' category
2712
+ * IMPROVED: Code Components now support full syntax highlighting and code folding (but still aren't quite big enough!)
2713
+ * ADDED: Builder undo/redo now gives info about what is going to be un/redone
2714
+ * ADDED: Window now supports a `stereo` flag to provide support for quad-buffers (advanced graphics cards only)
2715
+ * FIXED: bug with copying/pasting Routines that was breaking Flow in certain situations and corrupting the experiment file
2716
+ * FIXED: fatal typo in QuestHandler code (Gary Lupyan)
2717
+ * FIXED: data outputs for multiple key/mouse presses
2718
+ * ADDED: Microphone now supports `stop` to abort recording early (Jeremy Gray)
2719
+ * ADDED: beginning of error reporting when generating Builder experiments (thanks Piotr Iwaniuk)
2720
+ * FIXED: csv files now generated from Builder as expected not dlm files (tab-delimited)
2721
+
2722
+ PsychoPy 1.74
2723
+ ------------------------------
2724
+
2725
+ PsychoPy 1.74.04
2726
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2727
+
2728
+ * IMPROVED: larger Code Component boxes (and fixed bug with being only one line on linux)
2729
+ * FIXED: Builder code syntax error when using Mouse set state 'every frame'
2730
+ * FIXED: Builder was erroneously using 'estimated duration' for constraining non-slip timing
2731
+ * FIXED: Builder couldn't open Experiment Settings if the expected screen number didn't exist on this system
2732
+
2733
+ PsychoPy 1.74.03
2734
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2735
+
2736
+ (Released: Aug 2012)
2737
+
2738
+ * FIXED: the multiline text entry box in the Builder Text Component was broken (thanks Piotr Iwaniuk)
2739
+ * IMPROVED: serial (RS232) interface to fORP button box to avoid recording repeated presses (thanks Nate Vack). Does not affect use of fORP box from USB interface.
2740
+
2741
+ PsychoPy 1.74.02
2742
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2743
+
2744
+ (Released: Aug 2012)
2745
+
2746
+ * FIXED: bug leading to message: `IndexError: string index out of range.` This was caused by problem saving excel files
2747
+ * FIXED: bug leading to message: `AttributeError: ImageStim instance has no attribute 'rgbPedestal'.` Was only occurring on non-shaders machines using the new ImageStim.
2748
+ * FIXED: problem loading old ExperimentHandlers that contained MultiStairHandlers
2749
+ * FIXED: Builder Text Components gave an error if letter height was a variable
2750
+ * ADDED: Window.flip() now returns the timestamp for the flip if possible (thanks Sol Simpson)
2751
+ * ADDED: misc.sph2cart (Becky Sharman)
2752
+ * ADDED: warning when user presents SimpleImageStim that seems to extend beyond screen (James McMurray)
2753
+
2754
+ PsychoPy 1.74.01
2755
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2756
+
2757
+ (Released: July 2012)
2758
+
2759
+ * FIXED: the pyo package is now included in the windows Standalone distribution (making audio input available as intended)
2760
+ * FIXED: error saving excel data from numpy.int formats (Erik Kastman)
2761
+ * FIXED: error at end of automated gamma calibration (which was causing a crash of the calibration script)
2762
+ * FIXED: misc.getDateStr() returns numeric date if there's an error with unicode encoding (Jeremy)
2763
+ * FIXED: added partial support for non-ASCII keyboards (Sebastiaan Mathot)
2764
+
2765
+ PsychoPy 1.74.00
2766
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2767
+
2768
+ (https://github.com/psychopy/psychopy)
2769
+
2770
+ Major changes (and compatibility changes):
2771
+
2772
+ * ADDED: Long-wide data file outputs, which are now the default for all new Builder experiments.
2773
+ * ADDED: basic audio capture (and speech recognition via google!). Builder now has a Microphone Component to record inputs, but does not yet use the speech recognition facility. See psychopy.microphone library, coder demo "input/say_rgb.py" and Builder demo "voiceCapture". (Jeremy)
2774
+ * ADDED: HSV color space for all stimuli
2775
+ * CHANGED: in Builder the default dotstim has signal dots='same' (once a signal dot, always a signal dot). Only affects new experiments.
2776
+
2777
+ Tweaks and fixes:
2778
+
2779
+ * FIXED: missing parameter name in conditions file is detected, triggers more informative error message
2780
+ * ADDED: fORP: option asKeys to handle button presses as pyglet keyboard events (when using a serial port); faster getUniqueEvents()
2781
+ * ADDED: basic file encryption (beta) using RSA + AES-256; see API encryption for usage and caveats
2782
+ * ADDED: upload a file to a remote server over http (libs: web.upload) with coder demo, php scripts for server `contrib/http/*`
2783
+ * ADDED: Builder demo (dualRatingScales): show a stim, get two different ratings side by side [unpack the demos again]
2784
+ * ADDED: rating scale options: 'maxTime' to time-out, 'disappear' to hide after a rating; see new Builder demo
2785
+ * FIXED: rating scale bug: skipKeys was not handling 'tab' properly (no skip for tab-key, do skip for 't', 'a', or 'b')
2786
+ * ADDED: new locale pref for explicitly setting locale, used in date format and passed to builder scripts (Jeremy, Hiroku Sogo)
2787
+ * ADDED: 'enable escape' option in experiment settings, default is 'enabled'
2788
+ * ADDED: support for ElementArrayStim to use the same set of color spaces as other stimuli
2789
+ * CHANGED: removed python 2.4 version of sha1 digest from :class:`~psychopy.info.RunTimeInfo`
2790
+ * CHANGED: removed any need for PyOpenGL (pyglet.gl now used throughout even for pygame windows)
2791
+ * FIXED: Builder was ignoring changes to DotStim FieldPos (thanks Mike MacAskill)
2792
+ * FIXED: Builder Flow is smarter about Loops and now stops you creating 'broken' ones (e.g. Loops around nothing)
2793
+ * FIXED: MovieStim used from Builder was not working very well. Sounds continued when it was told to stop and the seek(0.0001) line was causing some file formats not to work from Builder only (those that don't support seeking)
2794
+ * FIXED: Mouse component was not saving clicks in Builder experiments if forceEndOnClick was set to be False
2795
+ * FIXED: DotStim.setFieldCoherence was having no effect if noise dots were updating by 'position'
2796
+
2797
+ PsychoPy 1.73
2798
+ ------------------------------
2799
+
2800
+ PsychoPy 1.73.06
2801
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2802
+
2803
+ (Released: April 2012)
2804
+
2805
+ * FIXED: xlsx outputs were collapsing raw data from trials with non-response
2806
+ * FIXED: monitor gamma grids are now returned as arrays rather than lists (Ariel Rokem)
2807
+ * FIXED: bug with Window.setColor being incorrectly scaled for some spaces
2808
+ * FIXED: buglet preventing unicode from being used in TrialHandler parameter names (William Hogman) and saving to data files (Becky Sharman)
2809
+ * FIXED: StairHandler in Builder now saves the expInfo dictionary (Jeremy)
2810
+ * FIXED: can unpickle from either old-style or new-style data files (using psychopy.compatibility.fromFile()) (Erik Kastman)
2811
+
2812
+ PsychoPy 1.73.05
2813
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2814
+
2815
+ (Released: March 2012)
2816
+
2817
+ * FIXED: Joystick error when calling .getHat() or .getHats() (fixed by Gary Lupyan)
2818
+ * FIXED: BufferImageStim crashing on some linux boxes (due to bug with checking version of OpenGL) (fixed by Jonas Lindelov)
2819
+ * FIXED: fMRI emulator class was providing old-format key events (fixed by Erik Kastman and Jeremy)
2820
+ * FIXED: Win.setRecordFrameIntervals(True) was including the time since it was turned off as a frame interval (fixed by Alex Holcombe)
2821
+ * FIXED: using forceEndtrial from a mouse component in Builder wasn't working (thanks Esteban for the heads-up)
2822
+ * FIXED: visual.Circle now respects the edges parameter (fixed by Jonas Lindelov)
2823
+ * FIXED: having IPython v0.12 should no longer crash psychopy on startup (Jeremy)
2824
+ * FIXED: non-ascii month-name (eg Japanese) from %B is now filtered out to avoid crash when compile a psyexp script (Jeremy)
2825
+ * ADDED: support for usb->serial devices under linux (William Hogman)
2826
+ * ADDED: option to vertically flip a BufferImageStim upon capture (esp for fMRI-related presentation of text) (Jeremy)
2827
+ * ADDED: option to play a sound (simple tone) during fMRI launchScan simulation (Jeremy)
2828
+
2829
+ PsychoPy 1.73.04
2830
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2831
+
2832
+ (Released: Feb 2012)
2833
+
2834
+ * CHANGED: Builder scripts now silently convert division from integers to float where necessary. That means 1/3=0.333 whereas previously 1/3=0. This is done simply by adding the line `from __future__ import division` at the top of the script, which people using Coder might want to think about too.
2835
+ * FIXED: problem with loading .psydat files using misc.fromFile (thanks Becky)
2836
+ * FIXED: issue on OSX with updating from 1.70 binaries to 1.73 patch release
2837
+
2838
+ PsychoPy 1.73.03
2839
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2840
+
2841
+ (Released: Jan 2012)
2842
+
2843
+ * FIXED: problem with loops crashing during save of xlsx/csv files if conditions were empty
2844
+ * FIXED: bugs in Builder setting Dots coherence and direction parameters
2845
+ * FIXED: problem with strange text and image rendering on some combinations of ATI graphics on Windows machines
2846
+
2847
+ PsychoPy 1.73.02
2848
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2849
+
2850
+ (Released: Jan 2012)
2851
+
2852
+ * ADDED: loop property to MovieStim for coder only so far (thanks Ariel Rokem)
2853
+ * FIXED: buglet requesting import of pyaudio (thanks Britt for noticing and Dan Shub for fixing)
2854
+ * FIXED: problem with avbin (win32)
2855
+ * FIXED: problem with unicode characters in filenames preventing startup
2856
+ * FIXED: bug with 'fullRandom' method of TrialHandler missing some trials during data save
2857
+ * FIXED: Mouse.clickReset() now resets the click timers
2858
+ * FIXED(?): problem with avbin.dll not being found under 64-bit windows
2859
+
2860
+ PsychoPy 1.73.00
2861
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2862
+
2863
+ (Released: Jan 2012)
2864
+
2865
+ * CHANGED: psychopy.log has moved to psychopy.logging (Alex Holcombe's suggestion). You'll now get a deprecation warning for using psychopy.log but it will still work (for the foreseeable future)
2866
+ * ADDED: new hardware.joystick module supporting pyglet and pyjame backbends for windows and OSX. Demo in Not working on Linux yet. See demos>input
2867
+ * ADDED: support for CRS ColorCAL mkII for gamma calibrations in Monitor Center.
2868
+ * ADDED: data.ExpHandler to combine data for multiple separate loops in one study, including output of a single wide csv file. See demos>experimental control>experimentHandler. Support from Builder should now be easy to add
2869
+ * ADDED: ability to fix (seed) the pseudorandom order of trials in Builder random/full-random loops
2870
+ * ADDED: auto-update (and usage stats) can now detect proxies in proxy.pac files. Also this now runs in a low-priority background thread to prevent any slowing at startup time.
2871
+ * FIXED: bug when passing variables to Staircase loops in Builder
2872
+ * FIXED: mouse in Builder now ignores button presses that began before the 'start' of the mouse
2873
+ * FIXED: can now use pygame or pyaudio instead of pygame for sounds, although it still isn't recommended (thanks Ariel Rokem for patch)
2874
+
2875
+ PsychoPy 1.72.00
2876
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2877
+
2878
+ (rc1 Released: Nov 2011)
2879
+
2880
+ * CHANGED: gui.Dlg and gui.dlgFromDict can now take a set of choices and will convert to a choice control if this is used (thanks Manuel Ebert)
2881
+ - for gui.Dlg the `.addField()` method now has `choices` attribute
2882
+ - for gui.dlgFromDict if one of the values in the dict is a list it will be interpreted as a set of choices (NB this potentially breaks old code)
2883
+ - for info see API docs for psychopy.gui
2884
+
2885
+ * ADDED: improvements to drawing of shapes (thanks Manuel Ebert for all)
2886
+ - ShapeStim now has a size parameter that scales the locations of vertices
2887
+ - new classes; Rect, Line, Circle, Polygon
2888
+
2889
+ * FIXED: error with DotStim when fieldSize was a tuple and fieldShape was 'sqr'
2890
+ * FIXED: calibration plots in Monitor Center now resize and quit as expected
2891
+ * FIXED: conditions files can now have lists of numbers [0,0]
2892
+ * FIXED: buglet with flushing mouse events (thanks Sebastiaan Mathot)
2893
+ * FIXED: Builder components now draw in order, from top to bottom, so lower items obscure higher ones
2894
+ * FIXED: problem with Patch Component when size was set to be dynamic
2895
+ * FIXED: problem with Builder loops not being able to change type (e.g. change 'random' into 'staircase')
2896
+ * FIXED: data from TrialHandler can be output with unicode contents (thanks Henrik Singmann)
2897
+
2898
+ PsychoPy 1.71
2899
+ ------------------------------
2900
+
2901
+ PsychoPy 1.71.01
2902
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2903
+
2904
+ (Released: Oct 2011)
2905
+
2906
+ * CHANGED: the number of stimulus-resized and frames-dropped warnings is now limited to 5 (could become a preference setting?)
2907
+ * FIXED: Builder now allows images to have size of None (or 'none' or just blank) and reverts to using the native size of the image in the file
2908
+ * FIXED: occasional glitch with rendering caused by recent removal of depth testing (it was getting turned back on by TextStim.draw())
2909
+ * FIXED: opening a builder file from coder window (and vice versa) switches view and opens there
2910
+ * FIXED: problem showing the About... item on OS X Builder view
2911
+ * FIXED problem with loops not showing up if the conditions file wasn't found
2912
+ * FIXED: runTimeInfo: better handling of cwd and git-related info
2913
+ * FIXED: rating scale: single click with multiple rating scales, auto-scale with precision = 1
2914
+ * IMPROVED: rendering speed on slightly older nVidia cards (e.g. GeForce 6000/7000 series) under win32/linux. ElementArrays now render at full speed. Other cards/systems should be unchanged.
2915
+ * IMPROVED: rating scale: better handling of default description, scale=None more intuitive
2916
+ * ADDED: new function getFutureTrial(n=1) to TrialHandler, allowing users to find out what a trial will be without actually going to that trial
2917
+ * ADDED: misc.createXYs() to help creating a regular grid of xy values for ElementArrayStim
2918
+
2919
+ PsychoPy 1.71.00
2920
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2921
+
2922
+ (Released: Sept 2011)
2923
+
2924
+ * CHANGED: Depth testing is now disabled. It was already being recommended that depth was controlled purely by drawing order (not depth settings) but this is now the *only* way to do that
2925
+ * CHANGED: The Builder representation of the Components onset/offset is now based on 'estimatedStart/Stop' where a value has been given. NB this does not affect the actual onset/offset of Components merely its representation on the timeline.
2926
+ * ADDED: Builder loop conditions mini-editor: (right-click in the filename box in a loop dialog)
2927
+ - create, edit, and save conditions from within PsychoPy; save & load using pickle format
2928
+ - preview .csv or .xlsx conditions files (read-only)
2929
+ * ADDED: RatingScale method to allow user to setMarkerPosition()
2930
+ * ADDED: Builder dialogs display a '$' to indicate fields that expect code/numeric input
2931
+ * ADDED: Text Component now has a wrapWidth parameter to control the bounding box of the text
2932
+ * ADDED: Opacity parameter to visual stimulus components in the Builder, so you can now draw plaids etc from the builder
2933
+ * FIXED: can edit or delete filename from loop dialog
2934
+ * FIXED: bug in RunTimeInfo (no longer assumes that the user has git installed)
2935
+ * FIXED: bug in BufferImageStim
2936
+ * FIXED: bug in Builder Ratingscale (was always ending routine on response)
2937
+ * FIXED: problem with nested loops in Builder. Inner loop was not being repeated. Loops are now only created as they are needed in the code, not at the beginning of the script
2938
+ * FIXED: rendering of many stimuli was not working beyond 1000 elements (fixed by removal of depth testing)
2939
+ * FIXED: mouse component now using start/duration correctly (broken since 1.70.00)
2940
+ * FIXED: when changing the texture (image) of a PatchStim, the stimulus now 'remembers' if it had been created with no size/sf set and updates these for the new image (previously the size/sf got set according to the first texture provided)
2941
+ * FIXED: putting a number into Builder Sound Component does now produce a sound of that frequency
2942
+ * FIXED: added 'sound','misc','log' to the component names that PsychoPy will refuse. Also a slightly more informative warning when the name is already taken
2943
+ * FIXED: Opacity parameter was having no effect on TextStim when using shaders
2944
+ * FIXED bug with MovieStim not starting at beginning of movie unless a new movie was added each routine
2945
+
2946
+
2947
+ PsychoPy 1.70
2948
+ ------------------------------
2949
+
2950
+ PsychoPy 1.70.01
2951
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2952
+
2953
+ (Released: Aug 2011)
2954
+
2955
+ * FIXED: buglet with Builder (1.70.00) importing older files not quite right and corrupting the 'allowedKeys' of keyboard component
2956
+ * FIXED: buglet with SimpleImageStim. On machines with no shaders some images were being presented strangely
2957
+ * FIXED: buglet with PatchStim. After a call to setSize, SF was scaling with the stimulus (for unit types where that shouldn't happen)
2958
+
2959
+ PsychoPy 1.70.00
2960
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2961
+
2962
+ (Released: Aug 2011)
2963
+
2964
+ *NB This version introduces a number of changes to Builder experiment files that will prevent files from this version being opened by earlier versions of PsychoPy*
2965
+
2966
+ * CHANGED use of allowedKeys in Keyboard Component. You used to be able to type `ynq` to get those keys, but this was confusing when you then needed `'space'` or `'left'` etc. Now you must type 'y','n','q', which makes it more obvious how to include 'space','left','right'...
2967
+ * CHANGED dot algorithm in DotStim. Previously the signalDots=same/different was using the opposite to Scase et al's terminology, now they match. Also the default method for noiseDots was 'position' and this has been changed to 'direction'. The documentation explaining the algorithms has been clarified. (see :ref:`dotscomponent`)
2968
+ * CHANGED `MovieStim.playing` property to be called `MovieStim.status` (in keeping with other stimuli)
2969
+ * CHANGED names:
2970
+
2971
+ - `data.importTrialTypes` is now `data.importConditions`
2972
+ - `forceEndTrial` in Keyboard Component is now `forceEndRoutine`
2973
+ - `forceEndTrialOnPress` in Mouse Component is now `forceEndRoutineOnPress`
2974
+ - `trialList` and `trialListFile` in Builder are now `conditions` and `conditionsFile`, respectively
2975
+ - 'window units' to set Component units is now 'from exp settings' for less confusion
2976
+
2977
+ * CHANGED numpy imports in Builder scripts:
2978
+
2979
+ - only a subset of numpy features are now imported by default: numpy: sin, cos, tan, log, log10, pi, average, sqrt, std, deg2rad, rad2deg, linspace, asarray, random, randint, normal, shuffle
2980
+ - all items in the numpy namespace are available as np.*
2981
+ - if a pre-v1.70 script breaks due to this change, try prepending 'np.' or 'np.random.'
2982
+
2983
+ * CHANGED Builder use of $. $ can now appear anywhere in the field (previously only the start). To display a `$` character now requires `\$` in a text field (to prevent interpretation of normal text as being code).
2984
+
2985
+ * ADDED flexibility for start/stop in Builder Components. Can now specify stimuli according to;
2986
+
2987
+ - variable values (using $ symbol). You can also specify an 'expected' time/duration so that something is still drawn on the timeline
2988
+ - number of frames, rather than time (s), for greater precision
2989
+ - an arbitrary condition (e.g. otherStim.status==STOPPED )
2990
+
2991
+ * ADDED the option to use a raised cosine as a PatchStim mask (thanks Ariel Rokem)
2992
+ * ADDED a preference setting for adding custom path locations to Standalone PsychoPy
2993
+ * ADDED Dots Component to Builder interface for random dot kinematograms
2994
+ * ADDED wide-format data files (saveAsWideText()) (thanks Michael MacAskill)
2995
+ * ADDED option for full randomization of repeated lists (loop type 'fullRandom') (Jeremy)
2996
+ * ADDED builder icons can now be small or large (in prefs)
2997
+ * ADDED checking of conditions files for parameter name conflicts (thanks Jeremy)
2998
+ * ADDED emulate sync pulses and user key presses for fMRI or other scanners (for testing); see hardware/launchScan in the API reference, and Coder `demos > experimental control > fMRI_launchScan.py` (Jeremy)
2999
+ * ADDED right-clicking the expInfo in Experiment Settings tests & previews the dialog box (Jeremy)
3000
+ * ADDED syntax checking in code component dialog, right-click (Jeremy)
3001
+ * IMPROVED documentation (thanks Becky Sharman)
3002
+ * IMPROVED syntax for using $ in code snippets (e.g., "[$xPos, $yPos]" works) (Jeremy)
3003
+ * IMPROVED Flow and Routine displays in the Builder, with zooming; see the View menu for key-board shortcuts (Jeremy)
3004
+ * IMPROVED Neater (and slightly faster) changing of Builder Routines on file open/close
3005
+ * FIXED demos now unpack to an empty folder (Jeremy)
3006
+ * FIXED deleting an empty loop from the flow now works (Jeremy)
3007
+ * FIXED further issue in QUEST (the addition in 1.65.01 was being used too widely)
3008
+ * FIXED bug with updating of gamma grid values in Monitor Center
3009
+
3010
+ PsychoPy 1.65
3011
+ ------------------------------
3012
+
3013
+ PsychoPy 1.65.02
3014
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3015
+
3016
+ (Released: July 2011)
3017
+
3018
+ * FIXED Builder keyboard component was storing 'all keys' on request but not all RTs
3019
+ * FIXED Aperture Component in Builder, which was on for an entire Routine. Now supports start/stop times like other components
3020
+ * IMPROVED Sound stimuli in Builder:
3021
+
3022
+ * FIXED: sounds could be distorted and would repeat if duration was longer than file
3023
+ * ADDED volume parameter to sound stimuli
3024
+ * FIXED: duration parameter now stops a file half-way through if needed
3025
+
3026
+ * FIXED buglet preventing some warning messages being printed to screen in Builder experiments
3027
+ * FIXED bug in the copying/pasting of Builder Routines, which was previously introducing errors of the script with invalid _continueName values
3028
+
3029
+ PsychoPy 1.65.01
3030
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3031
+
3032
+ (Released: July 2011)
3033
+
3034
+ * FIXED buglets in QUEST handler (thanks Gerrit Maus)
3035
+ * FIXED absence of pygame in 1.65.00 Standalone release
3036
+ * ADDED shelve module to Standalone (needed by scipy.io)
3037
+ * ADDED warnings about going outside the monitor gamut for certain colors (thanks Alex Holcombe)
3038
+
3039
+ PsychoPy 1.65.00
3040
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3041
+
3042
+ (Released: July 2011)
3043
+
3044
+ * ADDED improved gamma correction using L=a+(b+kI)**G formula (in addition to industry-standard form). Existing gamma calibrations will continue to use old equation but new calibrations will take the new extended formula by default.
3045
+ * ADDED MultiStairHandler to run multiple interleaved staircases (also from the Builder)
3046
+ * ADDED createFactorialTrialList, a convenience function for full factorial conditions (thanks Marco Bertamini)
3047
+ * CHANGED Builder keyboard components now have the option to discard previous keys (on by default)
3048
+ * CHANGED RatingScale:
3049
+
3050
+ - ADDED: argument to set lineColor independently (thanks Jeff Bye)
3051
+ - CHANGED default marker is triangle (affects windows only)
3052
+ - ADDED single-click option, custom-marker support
3053
+ - FIXED: bug with precision=1 plus auto-rescaling going in steps of 10 (not 1)
3054
+
3055
+ * FIXED errors with importing from 'ext' and 'contrib'
3056
+ * FIXED error in joystick demos
3057
+ * FIXED bug in ElementArrayStim depth
3058
+ * FIXED bug in misc.maskMatrix. Was not using correct scale (0:1) for the mask stage
3059
+ * FIXED buglet in StairHandler, which was only terminating during a reversal
3060
+ * FIXED bug when loading movies - they should implicitly pause until first draw() (thanks Giovanni Ottoboni)
3061
+ * IMPROVED handling of non-responses in Builder experiments, and this can now be the correct answer too (corrAns=None). ie. can now do go/no-go experiments. (Non-responses are now empty cells in excel file, not "--" as before.)
3062
+
3063
+ PsychoPy 1.64
3064
+ ------------------------------
3065
+
3066
+ PsychoPy 1.64.00
3067
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3068
+ Released: April 2011
3069
+
3070
+ * ADDED option to return field names when importing a trial list (thanks Gary Lupyan)
3071
+ * ADDED Color-picker on toolbar for Coder and context menu for Builder (Jeremy Gray)
3072
+ * ADDED CustomMouse to visual (Jeremy Gray)
3073
+ * ADDED Aperture object to visual (thanks Yuri Spitsyn) and as a component to Builder (Jeremy Gray)
3074
+ * CHANGED RatingScale (Jeremy Gray):
3075
+ - FIXED bug in RatingScale that prevented scale starting at zero
3076
+ - ADDED RatingScale "choices" (non-numeric); text size, color, font, & anchor labels; pos=(x,y) (Jeremy Gray)
3077
+ - CHANGED RatingScale internals; renamed escapeKeys as skipKeys; subject now uses 'tab' to skip (Jeremy Gray)
3078
+ * ADDED user-configurable code/output font (see coder prefs to change)
3079
+ * ADDED gui.Dlg now automatically uses checkboxes for bools in inputs (Yuri Spitsyn)
3080
+ * ADDED RatingScale component for Builder (Jeremy Gray)
3081
+ * ADDED packages to Standalone distros:
3082
+ - pyxid (Cedrus button boxes)
3083
+ - labjack (good, fast, cheap USB I/O device)
3084
+ - egi (pynetstation)
3085
+ - pylink (SR Research eye trackers)
3086
+ - psignifit (bootstrapping, but only added on mac for now)
3087
+ * ADDED option for Builder components to take code (e.g. variables) as start/duration times
3088
+ * ADDED support for RGBA files in SimpleImageStim
3089
+ * IMPROVED namespace management for variables in Builder experiments (Jeremy Gray)
3090
+ * IMPROVED prefs dialog
3091
+ * IMPROVED test sequence for PsychoPy release (so hopefully fewer bugs in future!)
3092
+ * FIXED bug with ElementArrayStim affecting the subsequent color of ShapeStim
3093
+ * FIXED problem with the error dialog from Builder experiments not being a sensible size (since v1.63.03 it was just showing a tiny box instead of an error message)
3094
+ * FIXED Coder now reloads files changed outside the app when needed (thanks William Hogman)
3095
+ * FIXED Builder Text Component now respects the font property
3096
+ * FIXED problem with updating to a downloaded zip file (win32 only)
3097
+ * FIXED bug with ShapeStim.setOpacity when no shaders are available
3098
+ * FIXED *long-standing pygame scaling bug*
3099
+ * FIXED you can now scroll Builder Flow and still insert a Routine way to the right
3100
+
3101
+ PsychoPy 1.63
3102
+ ------------------------------
3103
+
3104
+ PsychoPy 1.63.04
3105
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3106
+ Released: Feb 2011
3107
+
3108
+ * FIXED bug in windows prefs that prevents v1.63.03 from starting up
3109
+ * FIXED bug that prevents minolte LS100 from being found
3110
+
3111
+ PsychoPy 1.63.03
3112
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3113
+ Released: Feb 2011
3114
+
3115
+ * ADDED Interactive shell to the bottom panel of the Coder view. Choose (in prefs) one of;
3116
+ * pyShell (the default, with great tooltips and help)
3117
+ * IPython (for people that like it, but beware it crashes if you create a psychopy.visual.Window() due to some threading issue(?))
3118
+ * ADDED scrollbar to output panel
3119
+ * FIXED small bug in QUEST which gave an incorrectly-scaled value for the next() trial
3120
+ * FIXED ElementArrayStim was not drawing correctly to second window in multi-display setups
3121
+ * FIXED negative sound durations coming from Builder, where sound was starting later than t=0
3122
+ * FIXED a problem where Builder experiments failed to run if 'participant' wasn't in the experiment info dialog
3123
+
3124
+ PsychoPy 1.63.02
3125
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3126
+ Released: Feb 2011
3127
+
3128
+ * ADDED clearFrames option to Window.saveMovieFrames
3129
+ * ADDED support for Spectrascan PR655/PR670
3130
+ * ADDED 'height' as a type of unit for visual stimuli
3131
+ NB. this is likely to become the default unit for new users (set in prefs)
3132
+ but for existing users the unit set in their prefs will remain. That means
3133
+ that your system may behave differently to your (new user) colleague's
3134
+ * IMPROVED handling of damaged experiments in Builder (they don't crash the app any more!)
3135
+ * IMPROVED performance of autoLogging (including demos showing how to turn of autoLog for dynamic stimuli)
3136
+
3137
+ PsychoPy 1.63.01
3138
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3139
+ Released: Jan 2011
3140
+
3141
+ * FIXED bug with ElementArrayStim.setFieldPos() not updating
3142
+ * FIXED mouse release problem with pyglet (since in 1.63.00)
3143
+ * ADDED ability to retrieve a timestamp for a mouse event, similar to those in keyboard events.
3144
+ This is possible even though you may not retrieve the mouse event until later (e.g. waiting
3145
+ for a frame flip). Thanks Dave Britton
3146
+ * FIXED bug with filters.makeGrating: gratType='sqr' was not using ori and phase
3147
+ * FIXED bug with fetching version info for autoupdate (was sometimes causing a crash on startup
3148
+ if users selected 'skip this version')
3149
+ * CHANGED optimisation routine from fmin_powell to fmin_bfgs. It seems more robust to starting params.
3150
+
3151
+ PsychoPy 1.63.00
3152
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3153
+ Released: Dec 2010
3154
+
3155
+ * **ADDED autoLog mechanism:**
3156
+ * many more messages sent, but only written when log.flush() is called
3157
+ * rewritten backend to logging functions to remove file-writing performance hit
3158
+ * added `autoLog` and `name` attributes to visual stimuli
3159
+ * added setAutoDraw() method to visual stimuli (draws on every win.flip() until set to False)
3160
+ * added logNextFlip() method to visual.Window to send a log message time-stamped to flip
3161
+ * **FIXED bug in color calibration for LMS color space (anyone using this space should recalibrate immediately)** Thanks Christian Garber for picking up on this one.
3162
+ * FIXED bug with excel output from StairHandler
3163
+ * FIXED bug in ElemetArray.setSizes()
3164
+ * FIXED bug in running QuestHandler (Zarrar Shehzad)
3165
+ * FIXED bug trying to remove a Routine from Flow when enclosed in a Loop
3166
+ * FIXED bug with inseting Routines into Flow under Linux
3167
+ * FIXED bug with playing a MovieStim when another is already playing
3168
+ * CHANGED default values for Builder experiment settings (minor)
3169
+ * CHANGED ShapeStim default fillColor to None (from (0,0,0))
3170
+ * FIXED DotStim now supports a 2-element fieldSize (x,y) again
3171
+ * CHANGED phase of RadialStim to be 'sin' instead of 'cosine' at phase=0
3172
+ * FIXED rounding issue in RadialStim phase
3173
+ * FIXED ElementArrayStim can now take a 2x1 input for setSizes(), setSFs(), setPhases()
3174
+ * ADDED packages to standalone distributions: pyserial, pyparallel (win32 only), parallel python (pp), IPython
3175
+ * CHANGED Builder demos are now back in the distributed package. Use >Demos>Unpack... to put them in a folder you have access to and you can then run them from the demos menu
3176
+ * FIXED bug with ShapeStim initialisation (since 1.62.02)
3177
+ * UPDATED: Standalone distribution now uses Python2.6 and adds/upgrades;
3178
+ * parallel python (pp)
3179
+ * pyserial
3180
+ * ioLabs
3181
+ * ipython (for future ipython shell view in coder)
3182
+ * numpy=1.5.1, scipy=0.8.0, matplotlib=1.0
3183
+ * UPDATED: Builder demos
3184
+
3185
+ PsychoPy 1.62
3186
+ ------------------------------
3187
+
3188
+ PsychoPy 1.62.02
3189
+ ~~~~~~~~~~~~~~~~~~~~~~~~
3190
+ Released: Oct 2010
3191
+
3192
+ * FIXED: problem with RadialStim causing subsequent TextStims not to be visible
3193
+ * FIXED: bug with saving StairHandler data as .xlsx
3194
+ * ADDED: option for gui.fileOpenDlg and fileSaveDlg to receive a custom file filter
3195
+ * FIXED: builder implementation of staircases (initialisation was buggy)
3196
+ * FIXED: added Sound.setSound() so that sounds in builder can take new values each trial
3197
+ * FIXED: when a Routine was copied and pasted it didn't update its name properly (e.g. when inserted into the Flow it kept the origin name)
3198
+ * FIXED: color rendering for stimuli on non-shader machines using dkl,lms, and named color spaces
3199
+ * ADDED: data.QuestHandler (Thanks to Zarrar Shehzad). This is much like StairHandler but uses the QUEST routine of Watson and Pelli
3200
+ * CHANGED: TextStim orientation now goes the other way, for consistency with other stimuli (thanks Manuel Spitschan for noticing)**
3201
+ * FIXED: Problem with DotStim using 'sqr' fieldShape
3202
+ * ADDED: MovieStim now has a setMovie() method (a copy of loadMovie())
3203
+ * FIXED: problem with MovieStim.loadMovie() when a movie had already been loaded
3204
+
3205
+ PsychoPy 1.62.01
3206
+ ~~~~~~~~~~~~~~~~~~~~~~~~
3207
+ Released: Sept 2010
3208
+
3209
+ * ADDED: clicking on a Routine in the Flow window brings that Routine to current focus above
3210
+ * ADDED: by setting a loop in the Flow to have 0 repeats, that part of your experiment can be skipped
3211
+ * CHANGED: builder hides mouse now during fullscreen experiments (should make this a pref or setting though?)
3212
+ * FIXED: rendering problem with the Flow and Routine panels not updating on some platforms
3213
+ * ADDED: added .pause() .play() and .seek() to MovieStim (calling .draw() while paused will draw current static frame)
3214
+ * FIXED: bug in MovieStim.setOpacity() (Ariel Rokem)
3215
+ * FIXED: bug in win32 - shortcuts were created in user-specific start menu not all-users start menu
3216
+ * CHANGED: data output now uses std with N-1 normalisation rather than (scipy default) N
3217
+ * FIXED: bug when .psyexp files were dropped on Builder frame
3218
+ * FIXED: bug with Builder only storing last letter or multi-key button (e.g. 'left'->'t') under certain conditions
3219
+ * FIXED: when nReps=0 in Builder the loop should be skipped (was raising error)
3220
+ * CHANGED: mouse icon is now hidden for full-screen Builder experiments
3221
+ * FIXED: Builder was forgetting the TrialList file if you edited something else in the loop dialog
3222
+ * ADDED: visual.RatingScale and a demo to show how to use it (Jeremy Gray)
3223
+ * ADDED: The Standalone distributions now includes the following external libs:
3224
+ - pynetstation (import psychopy.hardware.egi)
3225
+ - ioLab library (import psychopy.hardware.ioLab)
3226
+ * ADDED: trial loops in builder can now be aborted by setting someLoopName.finished=True
3227
+ * ADDED: improved timing. *Support for blocking on VBL for all platforms* (may still not work on intel integrated chips)
3228
+ * FIXED: minor bug with closing Coder windows generating spurious error messages
3229
+ * ADDED: 'allowed' parameter to gui.fileOpeNDlg and fileCloseDlg to provide custom file filters
3230
+
3231
+ PsychoPy 1.62.00
3232
+ ~~~~~~~~~~~~~~~~~~~~~~~~
3233
+ Released: August 2010
3234
+
3235
+ * ADDED: support for Excel 2007 files (.xlsx) for data output and trial types input:
3236
+ - psychopy.data now has importTrialList(fileName) to generate a trial list (suitable for TrialHandler) from .xlsx or .csv files
3237
+ - Builder loops now accept either an xlsx or csv file for the TrialList
3238
+ - TrialHandler and StairHandler now have saveToExcel(filename, sheetName='rawData', appendFile=True). This can be used to generate almost identical files to the previous delimited files, but also allows multiple (named) worksheets in a single file. So you could have one file for a participant and then one sheet for each session or run.
3239
+ * CHANGED: for builder experiments the trial list for a loop is now imported from the file on every run, rather than just when the file is initially chosen
3240
+ * CHANGED: data for TrialHandler are now stored as masked arrays where possible. This means that trials with no response can be more easily ignored by analysis
3241
+ * FIXED: bug opening loop properties (bug introduced by new advanced params option)
3242
+ * FIXED: bug in Builder code generation for keyboard (only when using forceEnd=True but store='nothing')
3243
+ * CHANGED: RunTimeInfo is now in psychopy.info not psychopy.data
3244
+ * CHANGED: PatchStim for image files now defaults to showing the image at native size in pixels (making SimpleImageStim is less useful?)
3245
+ * CHANGED: access to the parameters of TrialList in the Builder now (by default) uses a more cluttered namespace for variables. e.g. if your TrialList file has heading rgb, then your components can access that with '$rgb' rather than '$thisTrial.rgb'. This behaviour can be turned off with the new Builder preference 'allowClutteredNamespace'.
3246
+ * FIXED: if Builder needs to output info but user had closed the output window, it is now reopened
3247
+ * FIXED: Builder remembers its window location
3248
+ * CHANGED: Builder demos now need to be fetched by the user - menu item opens a browser (this is slightly more effort, but means the demos aren't stored within the app which is good)
3249
+ * CHANGED: loops/routines now get inserted to Flow by clicking the mouse where you want them :-)
3250
+ * ADDED: you can now have multiple Builder windows open with different experiments
3251
+ * ADDED: you can now copy and paste Routines form one Builder window to another (or itself) - useful for reusing 'template' routines
3252
+ * FIXED: color of window was incorrectly scaled for 'named' and 'rgb256' color spaces
3253
+ * ADDED: quicktime movie output for OSX 10.6 (10.5 support was already working)
3254
+ * ADDED: Mac app can now receive dropped files on the coder and builder panels (but won't check if these are sensible!!)
3255
+ * ADDED: debugMode preference for the app (for development purposes)
3256
+ * ADDED: working version of RatingStim
3257
+
3258
+ PsychoPy 1.61
3259
+ ------------------------------
3260
+
3261
+ PsychoPy 1.61.03
3262
+ ~~~~~~~~~~~~~~~~~~~~~~~~
3263
+ Patch Released: July 2010
3264
+
3265
+ * FIXED: harmless error messages caused by trying to get the file date/time when no file is open
3266
+ * CHANGED: movie file used in movie demo (the chimp had unknown copyright)
3267
+ * FIXED: problem with nVidia cards under win32 being slow to render RadialStim
3268
+ * FIXED bug in filters.makeGrating where gratType='sqr'
3269
+ * FIXED bug in new color spaces for computers that don't support shaders
3270
+ * ADDED option to Builder components to have 'advanced' parameters not shown by default (and put this to use for Patch Component)
3271
+
3272
+ PsychoPy 1.61.02
3273
+ ~~~~~~~~~~~~~~~~~~~~~~
3274
+ Patch Released: June 2010
3275
+
3276
+ * ADDED: Code Component to Builder (to insert arbitrary python code into experiments)
3277
+ * ADDED: visual.RatingScale 'stimulus' (thanks to JG). See ratingScale demo in Coder view
3278
+ * FIXED: TrialHandler can now have dataTypes that contain underscores (thanks fuchs for the fix)
3279
+ * FIXED: loading of scripts by coder on windows assumed ASCII so broke with unicode characters. Now assumes unicode (as was case with other platforms)
3280
+ * FIXED: minor bugs connecting to PR650
3281
+
3282
+ PsychoPy 1.61.01
3283
+ ~~~~~~~~~~~~~~~~~~~~~~
3284
+ Patch Released: May 2010
3285
+
3286
+ * FIXED: Bug in coder spitting out lots of errors about no method BeginTextColor
3287
+ * FIXED: Buglet in rendering of pygame text with our shaders
3288
+ * FIXED: broken link for >Help>Api (reference) menuitem
3289
+
3290
+ PsychoPy 1.61.00
3291
+ ~~~~~~~~~~~~~~~~~~~~~~
3292
+ Released: May 2010
3293
+
3294
+ * CHANGED: color handling substantially. Now supply color and colorSpace arguments and use setColor rather than setRGB etc. Previous methods still work but give deprecation warning.
3295
+ * ADDED: Colors can now also be specified by name (one of the X11 or web colors, e.g. 'DarkSalmon') or hex color spec (e.g. '#E9967A')
3296
+ * REMOVED: TextStimGLUT (assuming nobody uses GLUT backend anymore)
3297
+ * ADDED: 'saw' and 'tri' options to specify grating textures, to give sawtooth and triangle waves
3298
+ * FIXED: visual.DotStim does now update coherence based on setFieldCoherence calls
3299
+ * FIXED: bug in autoupdater for installs with setuptools-style directory structure
3300
+ * FIXED: bug in SimpleImageStim - when graphics card doesn't support shaders colors were incorrectly scaled
3301
+ * CHANGED: console (stdout) default logging level to WARNING. More messages will appear here than before
3302
+ * ADDED: additional log level called DATA for saving data info from experiments to logfiles
3303
+ * ADDED: mouse component to Builder
3304
+ * ADDED: checking of coder script for changes made by an external application (thanks to Jeremy Gray)
3305
+ * ADDED: data.RuntimeInfo() for providing various info about the system at launch of script (thanks to Jeremy Gray)
3306
+ * FIXED: problem with rush() causing trouble between XP/vista (thanks to Jeremy Gray)
3307
+ * AMERICANIZATION: now consistently using 'color' not 'colour' throughout the project! ;-)
3308
+ * FIXED: problem with non-numeric characters being inserted into data structures
3309
+ * CHANGED: stimuli using textures now automatically clean these up, so no need for users to call .clearTextures()
3310
+
3311
+ PsychoPy 1.60
3312
+ ------------------------------
3313
+
3314
+ PsychoPy 1.60.04
3315
+ ~~~~~~~~~~~~~~~~~~~~~~
3316
+ Released: March 2010
3317
+
3318
+ * FIXED build error (OS X 10.6 only)
3319
+
3320
+ PsychoPy 1.60.03
3321
+ ~~~~~~~~~~~~~~~~~~~~~~
3322
+ Released: Feb 2010
3323
+
3324
+ * FIXED buglet in gui.py converting 'false' to True in dialogs (thanks Michael MacAskill)
3325
+ * FIXED bug in winXP version introduced by fixes to the winVista version! Now both should be fine!!
3326
+
3327
+ PsychoPy 1.60.02
3328
+ ~~~~~~~~~~~~~~~~~~~~~~
3329
+ Released: Feb 2010
3330
+
3331
+ * CHANGED ext.rush() is no longer run by default on creation of a window. It seems to be causing more probs and providing little enhancement.
3332
+ * FIXED error messages from vista/7 trying to import pywintypes.dll
3333
+
3334
+ PsychoPy 1.60.01
3335
+ ~~~~~~~~~~~~~~~~~~~~~~
3336
+ Released: Feb 2010
3337
+
3338
+ * FIXED minor bug with the new psychophysicsStaircase demo (Builder)
3339
+ * FIXED problem with importing wx.lib.agw.hyperlink (for users with wx<2.8.10)
3340
+ * FIXED bug in the new win.clearBuffer() method
3341
+ * CHANGED builder component variables so that the user inputs are interpreted as literal text unless preceded by $, in which case they are treated as variables/python code
3342
+ * CHANGED builder handling of keyboard 'allowedKeys' parameter. Instead of `['1','2','q']` you can now simply use `12q` to indicate those three keys. If you want a key like `'right'` and `'left'` you now have to use `$['right','left']`
3343
+ * TWITTER follow on https://twitter.com/psychopy
3344
+ * FIXED? win32 version now compatible with Vista/7? Still compatible with XP?
3345
+
3346
+ PsychoPy 1.60.00
3347
+ ~~~~~~~~~~~~~~~~~~~~~~
3348
+ Released: Feb 2010
3349
+
3350
+ * simplified prefs:
3351
+ - no more site prefs (user prefs only)
3352
+ - changed key bindings for compileScript(F5), runScript(Ctrl+R), stopScript(Ctrl+.)
3353
+ * ADDED: full implementation of staircase to Builder loops and included a demo for it to Builder
3354
+ * CHANGED: builder components now have a 'startTime' and 'duration' rather than 'times'
3355
+ * ADDED: QuickTime output option for movies (OSX only)
3356
+ * ADDED: script is saved by coder before running (can be turned off in prefs)
3357
+ * ADDED: coder checks (and prompts) for filesave before running script
3358
+ * ADDED: setHeight to TextStim objects, so that character height can be set after initialisation
3359
+ * ADDED: setLineRGB, setFillRGB to ShapeStim
3360
+ * ADDED: ability to auto-update form PsychoPy source installer (zip files)
3361
+ * ADDED: Monitor Center can be closed with Ctrl-W
3362
+ * ADDED: visual.Window now has a setRGB() method
3363
+ * ADDED: visual.Window now has a clearBuffer() method
3364
+ * ADDED: context-specific help buttons to Builder dialogs
3365
+ * ADDED: implemented of code to flip SimpleImageStim (added new methods flipHoriz() and flipVert())
3366
+ * ADDED: Butterworth filters to psychopy.filters (thanks Yaroslav Halchenko)
3367
+ * ADDED: options to view whitespace, EOLs and indent guides in Coder
3368
+ * ADDED: auto-scaling of time axis in Routines panel
3369
+ * IMPROVED: Splash screen comes up faster to show the app is loading
3370
+ * FIXED: bug in RadialStim .set functions (default operation should be "" not None)
3371
+ * FIXED: on mac trying to save an unchanged document no longer inserts an 's'
3372
+ * FIXED: bug with SimpleImageStim not drawing to windows except #1
3373
+ * FIXED: one bug preventing PsychoPy from running on vista/win7 (are there more?)
3374
+ * CHANGED: psychopy.filters.makeMask() now returns a mask with values -1:1, not 0:1 (as expected by stimulus masks)
3375
+ * RESTRUCTURED: the serial package is no longer a part of core psychopy and is no longer required (except when hardware is actually being connected). This should now be installed as a dependency by users, but is still included with the Standalone packages.
3376
+ * RESTRUCTURED: preparing for further devices to be added, hardware is now a folder with files for each manufacturer. Now use e.g.::
3377
+
3378
+ from psychopy.hardware.PR import PR650
3379
+ from psychopy.hardware.cedrus import RB730
3380
+
3381
+ PsychoPy 1.51.00
3382
+ ------------------------------
3383
+ (Released: Nov 2009)
3384
+
3385
+ * CHANGED: gamma handling to handle buggy graphics drivers on certain cards - see note below
3386
+ * CHANGED: coord systems for mouse events - both winTypes now provide mouse coords in the same units as the Window
3387
+ * FIXED: mouse in pyglet window does now get hidden with Window allowGUI=False
3388
+ * FIXED: (Builder) failed to open from Coder view menu (or cmd/ctrl L)
3389
+ * FIXED: failure to load user prefs file
3390
+ * ADDED: keybindings can be handled from prefs dialog (thanks to Jeremy Gray)
3391
+ * ADDED: NxNx3 (ie RGB) numpy arrays can now be used as textures
3392
+ * FIXED: MovieStim bug on win32 (was giving spurious avbin error if visual was imported before event)
3393
+
3394
+ NB. The changes to gamma handling should need no changes to your code, but could alter the gamma correction on
3395
+ some machines. For setups/studies that require good gamma correction it is recommended that you recalibrate when
3396
+ you install this version of PsychoPy.
3397
+
3398
+ PsychoPy 1.50
3399
+ ------------------------------
3400
+
3401
+ PsychoPy 1.50.04
3402
+ ~~~~~~~~~~~~~~~~~~~~~~
3403
+ (Released: Sep 09)
3404
+
3405
+ * FIXED (Builder) bug with loading files (monitor fullScr incorrectly reloaded)
3406
+ * FIXED (Coder) bug with Paste in coder
3407
+ * FIXED (Builder) bug with drop-down boxes
3408
+ * FIXED (Builder) bug with removed routines remaining in Flow and InsertRoutineDlg
3409
+ * MOVED demos to demos/scripts and added demos/exps (for forthcoming Builder demos)
3410
+ * CHANGED (Builder) creating a new file in Builder (by any means) automatically adds a 'trial' Routine
3411
+ * FIXED (Builder) various bugs with the Patch component initialisation (params being ignored)
3412
+ * FIXED (Builder) better default parameters for text component
3413
+
3414
+ PsychoPy 1.50.02
3415
+ ~~~~~~~~~~~~~~~~~~~~~~
3416
+ (Released: Sep 09)
3417
+
3418
+ * FIXED bug loading .psydat (files component variables were being saved but not reloaded)
3419
+ * removed debugging messages that were appearing in Coder output panel
3420
+ * FIXED long-standing problem (OS X only) with "save unchanged" dialogs that won't go away
3421
+ * FIXED bug with 'cancel' not always cancelling on "save unchanged" dialogs
3422
+ * ADDED warning dialog if user adds component without having any routines
3423
+ * ADDED builder now remembers its location, size and panel sizes (which can be moved around)
3424
+
3425
+ PsychoPy 1.50.01
3426
+ ~~~~~~~~~~~~~~~~~~~~~~
3427
+ (Released: Sep 09)
3428
+
3429
+ * FIXED problem creating prefs file on first use
3430
+ * FIXED problem with removing (identical) routines in Flow panel
3431
+ * FIXED problem with avbin import (OS X standalone version)
3432
+
3433
+ PsychoPy 1.50.00
3434
+ ~~~~~~~~~~~~~~~~~~~~~~
3435
+ (Released: Sep 09)
3436
+
3437
+ * ADDED A preview of the new application structure and GUI
3438
+ * ADDED performance enhancements (OS X now blocks on vblank, all platforms rush() if user has permissions)
3439
+ * ADDED config files. These are already used by the app, but not the library.
3440
+ * ADDED data.getDateStr() for convenience
3441
+ * FIXED bug on certain intel gfx cards (shaders now require float extension as well as opengl2.0)
3442
+ * FIXED bug scaling pygame text (which caused pygame TextStims not to appear)
3443
+ * BACKWARDS NONCOMPAT: monitors is moved to be a subpackage of psychopy
3444
+ * BACKWARDS NONCOMPAT: added 'all_mean' (and similar) data types to TrialHandler.saveAsText and these are now default
3445
+ * ADDED TrialType object to data (extends traditional dicts so that trial.SF can be used as well as trial['SF'])
3446
+ * converted docs/website to sphinx rather than wiki (contained in svn)
3447
+ * FIXED bug with MovieStim not displaying correctly after SimpleImageStim
3448
+ * FIXED incorrect wx sizing of app(IDE) under OS X on opening
3449
+ * CHANGED license to GPL (more restrictive, preventing proprietary use)
3450
+ * CHANGED gui dialogs are centered on screen rather than wx default position
3451
+ * new dependency on lxml (for saving/loading builder files)
3452
+
3453
+ PsychoPy 1.00
3454
+ ------------------------------
3455
+
3456
+ PsychoPy 1.00.04
3457
+ ~~~~~~~~~~~~~~~~~~~~~~
3458
+ (Released: Jul 09)
3459
+
3460
+ * DotStim can have fieldShape of 'sqr', 'square' or 'circle' (the first two are equiv)
3461
+ * CHANGED interpreters in all .py scripts to be the same (#!/usr/bin/env python). Use PATH env variable to choose non-default python version for your Python scripts
3462
+ * CHANGED pyglet textures to use numpy->ctypes rather than numpy->string
3463
+ * FIXED systemInfo assigned on Linux systems
3464
+
3465
+ PsychoPy 1.00.03
3466
+ ~~~~~~~~~~~~~~~~~~~~~~
3467
+ (Released: Jul 09)
3468
+
3469
+ * FIXED initialisation bug with SimpleImageStimulus
3470
+ * FIXED "useShaders" buglet for TextStim
3471
+ * CHANGED IDE on win32 to run scripts as processes rather than imports (gives better error messages)
3472
+ * ADDED mipmap support for textures (better antialiasing for down-scaling)
3473
+ * CHANGED win32 standalone to include the whole raw python rather than using py2exe
3474
+
3475
+ PsychoPy 1.00.02
3476
+ ~~~~~~~~~~~~~~~~~~~~~~
3477
+ (Released: Jun 09)
3478
+
3479
+ * ADDED SimpleImageStimulus for simple blitting of raw, unscaled images
3480
+ * ADDED collection of anonymous usage stats (e.g.: OSX_10.5.6_i386 1.00.02 2009-04-27_17:26 )
3481
+ * RENAMED DotStim.setDirection to setDir for consistency (the attribute is dir not direction)
3482
+ * FIXED bug with DotStim updating for 'walk' and 'position' noise dots (thanks Alex Holcombe)
3483
+ * FIXED bug with DotStim when fieldSize was initialised with a list rather than an array
3484
+ * FIXED buglet using event.getKeys in pygame (nothing fetched if pyglet installed)
3485
+ * CHANGED image loading code to check whether the image is a file, rather than using try..except
3486
+ * FIXED buglet raising trivial error messages on closing final window in IDE
3487
+ * FIXED problem pasting into find dlg in IDE
3488
+
3489
+ PsychoPy 1.00.01
3490
+ ~~~~~~~~~~~~~~~~~~~~~~
3491
+ (Released: Feb 09)
3492
+
3493
+ * FIXED buglet in windows standalone installer
3494
+
3495
+ PsychoPy 1.00.00
3496
+ ~~~~~~~~~~~~~~~~~~~~~~
3497
+ * ADDED ShapeStim, for drawing geometric stimuli (see demos/shapes.py and new clockface.py)
3498
+ * ADDED support for the tristate ctrl bit on parallel ports (thanks Gary Strangman for the patch)
3499
+ * ADDED standalone installer support for windows (XP, vista?)
3500
+ * FIXED minor bug in Window.flip() with frame recording on (average -> numpy.average)
3501
+ * FIXED minor bug in sound, now forcing pygame.mixer to use numpy (thanks Konstantin for the patch)
3502
+ * FIXED visual stimulus positions forced to be floats on init (thanks C Luhmann)
3503
+
3504
+ ~~~~~~~~~~~~~~~~~~~~~~
3505
+
3506
+ PsychoPy 0.97:
3507
+ ------------------------------
3508
+
3509
+ PsychoPy 0.97.01:
3510
+ ~~~~~~~~~~~~~~~~~~~~~~
3511
+ * FIXED bug with IDE not closing properly (when current file was not right-most)
3512
+ * ADDED parallel.readPin(pinN) so that parallel port can be used for input as well as output
3513
+ * FIXED bug in parallel.setPortAddress(addr)
3514
+ * ADDED check for floats as arguments to ElementArrayStim set___ methods
3515
+ * CHANGED: frame time recording to be *off* by default (for plotting, for Window.fps() and for warnings). To turn it on use Window.setRecordFrameIntervals(True), preferably after first few frames have elapsed
3516
+ * IMPROVED detection of the (truly) dropped frames using log.console.setLevel(log.WARNING)
3517
+ * FIXED bug that was preventing bits++ from detecting LUT on the Mac (ensure screen gamma is 1.0 first)
3518
+ * FIXED buglet with .setRGB on stimuli - that method should require an operation argument (def=None)
3519
+ * ADDED fieldDepth and depths (for elements, relative to fieldDepth) as separate arguments to the ElementArrayStim
3520
+
3521
+ PsychoP 0.97.00:
3522
+ ~~~~~~~~~~~~~~~~~~~~~~
3523
+ * ADDED options to DotStim motions. Two args have been added:
3524
+ * signalDots can be 'different' from or 'same' as the noise dots (from frame to frame)
3525
+ * noiseDots determines the update rule for the distractor dots (random 'position', 'walk', 'direction')
3526
+ * dotLife now works (was previously just a placeholder). Default is -1 (so should be same as before)
3527
+ see Scase, Braddick & Raymond (1996) for further info on the importance of these
3528
+ * ADDED options to event.getKeys
3529
+ * keyList to limit which keys are checked for (thanks Gary Strangman)
3530
+ * timeStamped=False/True/Clock (thanks Dave Britton)
3531
+ * CHANGED pyglet key checking now returns '1' as the key irrespective of numpad or otherwise (used to return '1' or 'NUM_1')
3532
+ * FIXED bug in event.py for machines where pyglet is failing to import
3533
+ * REMOVED AlphaStim (after a long period of 'deprecated')
3534
+
3535
+ ----------
3536
+
3537
+ PsychoPy 0.96:
3538
+ ------------------------------
3539
+
3540
+ PsychoPy 0.96.02:
3541
+ ~~~~~~~~~~~~~~~~~~~~~~
3542
+ * FIXED bug introduced with clipping of text in 0.96.01 using textstimuli with shaders under pygame
3543
+ * FIXED bug with rendering png alpha layer using pyglet shaders
3544
+
3545
+ PsychoPy 0.96.01:
3546
+ ~~~~~~~~~~~~~~~~~~~~~~
3547
+ * FIXED problem with write errors running demos from Mac IDE
3548
+ * ADDED frameWidth to textStim for multiline
3549
+ * ADDED setRecordFrameIntervals, saveFrameTimes() to Window and misc.plotFrameIntervals()
3550
+ * FIXED had accidentally made pygame a full dependency in visual.py
3551
+ * FIXED MovieStim was being affected by texture color of other stimuli
3552
+ * FIXED window now explicitly checks for GL_ARB_texture_float before using shaders
3553
+
3554
+ PsychoPy 0.96.00:
3555
+ ~~~~~~~~~~~~~~~~~~~~~~
3556
+ * FIXED pygame back-end so that can be used as a valid alternative to pyglet (requires pygame1.8+ and PyOpenGL3.0+, both included in mac app)
3557
+ * CHANGED default sound handler to be pygame again. Although pyglet looked promising for this
3558
+ it has turned out to be buggy. Timing of sounds can be very irregular and sometimes they don't even play
3559
+ Although pygame has longer overall latencies (20-30ms) it's behaviour is at least robust. This will be
3560
+ revisited one day when i have time to write driver-specific code for sounds
3561
+ * FIXED image importing - scaling from square image wasn't working and CMYK images weren't imported
3562
+ properly. Both are now fine.
3563
+
3564
+ ----------
3565
+
3566
+
3567
+ PsychoPy 0.95:
3568
+ ------------------------------
3569
+
3570
+ PsychoPy 0.95.11:
3571
+ ~~~~~~~~~~~~~~~~~~~~~~
3572
+ * ADDED sound.Sound.getDuration() method
3573
+ * FIXED spurious (unimportant but ugly) error messages raised by certain threads on core.quit()
3574
+
3575
+ PsychoPy 0.95.9:
3576
+ ~~~~~~~~~~~~~~~~~~~~~~
3577
+ * FIXED further bug in sound.Sound on win32 (caused by thread being polled too frequently)
3578
+ * FIXED new bug in notebook view (introduced in 0.95.8)
3579
+
3580
+ PsychoPy 0.95.8:
3581
+ ~~~~~~~~~~~~~~~~~~~~~~
3582
+ * FIXED bug in sound.Sound not repeating when play() is called repeatedly
3583
+ * IDE uses improved notebook view for code pages
3584
+ * IDE line number column is larger
3585
+ * IDE SaveAs no longer raises (inconsequential) error
3586
+ * IDE Cmd-S or Ctrl-S now clears autocomplete
3587
+
3588
+ PsychoPy 0.95.7:
3589
+ ~~~~~~~~~~~~~~~~~~~~~~
3590
+ * ADDED misc.cart2pol()
3591
+ * ADDED highly optimised ElementArrayStim, suitable for drawing large numbers of elements. Requires fast OpenGL 2.0 gfx card - at least an nVidia 8000 series or ATI HD 2600 are recommended.
3592
+ * FIXED bug in calibTools with MonitorFolder (should have been monitorFolder)
3593
+ * FIXED bug in Sound.stop() for pyglet contexts
3594
+ * FIXED bug in running scripts with spaces in the filename/path (Mac OS X)
3595
+
3596
+ PsychoPy 0.95.6:
3597
+ ~~~~~~~~~~~~~~~~~~~~~~
3598
+ * DISABLED the setting of gamma if this is [1,1,1] (allows the user to set it from a control panel and not have this adjusted)
3599
+ * FIXED gamma setting on linux (thanks to Luca Citi for testing)
3600
+ * FIXED bug in TextStim.setRGB (wasn't setting properly after text had been created)
3601
+ * FIXED bug searching for shaders on ATI graphics cards
3602
+ * FIXED - now no need to download avbin for the mac IDE installation
3603
+
3604
+ PsychoPy 0.95.5:
3605
+ ~~~~~~~~~~~~~~~~~~~~~~
3606
+ * FIXED bug in event.clearEvents() implementation in pyglet (wasn't clearing)
3607
+ * FIXED - psychopy no longer disables ipython shortcut keys
3608
+ * FIXED bug in sound.Sound initialisation without pygame installeds
3609
+ * ADDED core.rush() for increasing thread priority on win32
3610
+ * ADDED Window._haveShaders, XXXStim._useShaders and XXXStim.setUseShaders
3611
+ * FIXED crashes on win32, running a pyglet context after a DlgFromDict
3612
+ * ADDED gamma correction for pyglet contexts (not tested yet on linux)
3613
+
3614
+ PsychoPy 0.95.4:
3615
+ ~~~~~~~~~~~~~~~~~~~~~~
3616
+ * CHANGED PsychoPy options (IDE and monitors) now stored the following, rather than with the app. (monitor calib files will be moved here if possible)
3617
+ * ~/.PsychoPy/IDE (OS X, linux)
3618
+ * <Docs and Settings>/<user>/Application Data/PsychoPy
3619
+ * FIXED bug in text rendering (ATI/win32/pyglet combo only)
3620
+ * FIXED minor bug in handling of images with alpha channel
3621
+
3622
+ PsychoPy 0.95.3:
3623
+ ~~~~~~~~~~~~~~~~~~~~~~
3624
+ * ADDED a .clearTextures() method to PatchStim and RadialStim, which should be called before de-referencing a stimulus
3625
+ * CHANGED input range for numpy array textures to -1:1
3626
+ * ADDED sysInfo.py to demos
3627
+
3628
+ PsychoPy 0.95.2:
3629
+ ~~~~~~~~~~~~~~~~~~~~~~
3630
+ * FIXED quitting PsychoPyIDE now correctly cancels when saving files
3631
+
3632
+ PsychoPy 0.95.1:
3633
+ ~~~~~~~~~~~~~~~~~~~~~~
3634
+ * FIXED problem with saving files from the IDE on Mac
3635
+ * FIXED Cmd-C now copies from the output window of IDE
3636
+ * even nicer IDE icons (thanks to the Crystal project at everaldo.com)
3637
+ * FIXED bug in the shaders code under pyglet (was working fine in pygame already)
3638
+ * (refactored code to use a template visual stimulus)
3639
+
3640
+ PsychoPy 0.95.0:
3641
+ ~~~~~~~~~~~~~~~~~~~~~~
3642
+ * FIXED linux bug preventing repeated dialogs (thanks Luca Citi)
3643
+ * REWRITTEN stimuli to use _BaseClass, defining ._set() method
3644
+ * MAJOR IMPROVEMENTS to IDE:
3645
+ * Intel mac version available as app bundle, including python
3646
+ * FIXED double help menu
3647
+ * cleaned code for fetching icons
3648
+ * fixed code for updating SourceAssistant (now runs from .OnIdle())
3649
+
3650
+ Older
3651
+ ----------------------
3652
+
3653
+ PsychoPy 0.94.0:
3654
+ ~~~~~~~~~~~~~~~~~~~~~~
3655
+ * pyglet:
3656
+ * can use multiple windows and multiple screens (see screensAndWindows demo)
3657
+ * sounds are buffered faster and more precisely (16ms with <0.1ms variability on my system)
3658
+ * creating sounds in pyglet starts a separate thread. If you use sounds in your script you must call core.quit() when you're done to exit the system (or this background thread will continue).
3659
+ * pyglet window.setGamma and setGammaRamp working on win and mac (NOT LINUX)
3660
+ * pyglet event.Mouse complete (and supports wheel as well as buttons)
3661
+ * pyglet is now the default context. pygame will be used if explicitly called or if pyglet (v1.1+) isn't found
3662
+ * pyglet can now get/save movie frames (like pygame)
3663
+ * TextStims are much cleaner (and a bit bigger?) Can use multiple lines too. New method for specifying font
3664
+ * added simpler parallel.py (wraps _parallel which will remain for now)
3665
+ * removed the C code extensions in favour of ctypes (so compiler no longer necessary)
3666
+ * converted "is" for "==" where appropriate (thanks Luca)
3667
+ * Window.getMovieFrame now takes a buffer argument ('front' or 'back')
3668
+ * monitor calibration files now stored in HOME/.psychopy/monitors rather than site-packages
3669
+ * Window.flip() added and supports the option not to clear previous buffer (for incremental drawing). Window.update() is still available for now but can be replaced with flip() commands
3670
+ * updated demos
3671
+
3672
+ PsychoPy 0.93.6:
3673
+ ~~~~~~~~~~~~~~~~~~~~~~
3674
+ * bug fixes for OS X 10.5 and ctypes OpenGL
3675
+ * new improved OS X installer for dependencies
3676
+ * moved to egg for OS X distribution
3677
+
3678
+ PsychoPy 0.93.5:
3679
+ ~~~~~~~~~~~~~~~~~~~~~~
3680
+
3681
+ * added rich text ctrl to IDE output, including links to lines of errors
3682
+ * IDE now only opens one copy of a given text file
3683
+ * improved (chances of) sync-to-vertical blank on windows without adjusting driver settings (on windows it's still better to set driver to force sync to be safe!)
3684
+ * added center and radius arguments to filters.makeMask and filters.makeRadialMatrix
3685
+ * implemented pyglet backend for;
3686
+ * better screen handling (can specify which screen a window should appear in)
3687
+ * fewer dependencies (takes care of pygame and opengl)
3688
+ * faster sound production
3689
+ * TextStims can be multi-line
3690
+ * NO GAMMA-SETTING as yet. Don't use this backend if you need a gamma-corrected window and aren't using Bits++.
3691
+ * changed the behaviour of Window winTypes
3692
+ If you leave winType as None PsychoPy tries to use Pygame, Pyglet, GLUT in that order
3693
+ (when Pyglet can handle gamma funcs it will become default). Can be overridden by specifying winType.
3694
+ * turned off depth testing for drawing of text (will simply be overlaid in the order called)
3695
+ * changes to TextStim: pyglet fonts are loaded by name only, not filename. PsychoPy TextStim now has an additional argument called 'fontFiles=[]' to allow the adding of custom ttf fonts, but the font name should be used as the font=" " argument.
3696
+ * updated some of the Reference docs
3697
+
3698
+ PsychoPy 0.93.3:
3699
+ ~~~~~~~~~~~~~~~~~~~~~~
3700
+ * fixed problem with 'dynamic loading of multitextureARB' (only found on certain graphics cards)
3701
+
3702
+ PsychoPy 0.93.2:
3703
+ ~~~~~~~~~~~~~~~~~~~~~~
3704
+ * improved detection of non-OpenGL2.0 drivers
3705
+
3706
+ PsychoPy 0.93.1:
3707
+ ~~~~~~~~~~~~~~~~~~~~~~
3708
+ * now automatically uses shaders only if available (older machines can use this version but will not benefit from the speed up)
3709
+ * slight speed improvement for TextStim rendering (on all machines)
3710
+
3711
+ PsychoPy 0.93.0:
3712
+ ~~~~~~~~~~~~~~~~~~~~~~
3713
+ * new requirement of PyOpenGL3.0+ (and a graphics card with OpenGL2.0 drivers?)
3714
+ * much faster implementation of setRGB, setContrast and setOpacity (using fragment shaders)
3715
+ * images (and other textures) need not be square. They will be automatically resampled if they are not. Square power-of-two image textures are still recommended
3716
+ * Fixed problem in calibTools.DACrange caused by change in numpy rounding behaviour. (symptom was strange choice of lum values for calibrations)
3717
+ * numpy arrays as textures currently need to be NxM intensity arrays
3718
+ * multitexturing now handled by OpenGL2.0 rather than ARB
3719
+ * added support for Cedrus response pad
3720
+ * if any component of rgb*contrast>1 then the stimulus will be drawn as low contrast and b/y (rgb=[0.2,0.2,-0.2]) in an attempt to alert the user that this is out of range
3721
+
3722
+ PsychoPy 0.92.5:
3723
+ ~~~~~~~~~~~~~~~~~~~~~~
3724
+ * Fixed issue with stairhandler (it was terminating based only on the nTrials). It does now terminate when both the nTrials and the nReversals [or length(stepSizes) if this is greater] are exceeded.
3725
+ * Minor enhancements to IDE (added explicit handlers to menus for Ctrl-Z, Ctrl-Y, Ctrl-D)
3726
+
3727
+ PsychoPy 0.92.4:
3728
+ ~~~~~~~~~~~~~~~~~~~~~~
3729
+ * fixed some source packaging problems for linux (removed trademark symbols from serialposix.py and fixed directory capitalisation of IDE/Resources in setup.py). Thanks to Jason Locklin and Samuele Carcagno for picking them up.
3730
+ * numerous minor improvements to the IDE
3731
+ * reduced the buffer size of sound stream to reduce latency of sound play
3732
+ * fixed error installing start menu links (win32)
3733
+
3734
+ PsychoPy 0.92.3:
3735
+ ~~~~~~~~~~~~~~~~~~~~~~
3736
+ * new source .zip package (switched away from the use of setuptools - it didn't include files properly in a source dist)
3737
+ * Fixed problem on very fast computers that meant error messages weren't always displayed in the IDE
3738
+
3739
+ PsychoPy 0.92.2:
3740
+ ~~~~~~~~~~~~~~~~~~~~~~
3741
+ * have been trying (and failing) to make scripts run faster from the IDE under Mac OS X. Have tried using threads and debug modules (which would mean you didn't need to import all the libs every time). All these work fine under win32 but not under OS X every time :-( If anyone has a new idea for how to run a pygame window in the same process as the IDE thread I'd love hear it
3742
+ * removed the messages from the new TextStim stimuli
3743
+ * fixed bug in IDE that caused it to crash before starting if pythonw.exe was run rather than python.exe on first run(!)
3744
+ * improvements to the source assistant window (better help and now fetches function arguments)
3745
+
3746
+ Known Problems:
3747
+ * The IDE isn't collecting all errors that are returned - a problem with the process redirection mechanism? FIXED in 0.92.3
3748
+
3749
+ PsychoPy 0.92.1
3750
+ ~~~~~~~~~~~~~~~~~~~~~~
3751
+ * fixed minor bug in IDE - wouldn't open if it had been closed with no open docs.
3752
+ * fixed problem with pushing/popping matrix that caused the stimuli to disappear (only if a TextStim was rendered repeatedly)
3753
+
3754
+ PsychoPy 0.92.0:
3755
+ ~~~~~~~~~~~~~~~~~~~~~~
3756
+ * 'sequential' ordering now implemented for data.TrialHandler (thx Ben Webb)
3757
+ * moved to pygame fonts (with unicode support and any TT font on the system). The switch will break any code that was using TextStim with lineWidth or letterWidth as args. Users wanting to continue using the previous TextStim can call textStimGLUT instead (although I think the new pygame fonts are superior in every way).
3758
+ * improved IDE handling of previous size (to cope with being closed in the maximised or minimised state, which previously caused the window not to return)
3759
+
3760
+ PsychoPy 0.91.5:
3761
+ ~~~~~~~~~~~~~~~~~~~~~~
3762
+ * fixed minor bug in using numpy.array as a mask (was only working if array was 128x128)
3763
+ * faster startup for IDE (added threading class for importing modules)
3764
+ * fixed very minor bug in IDE when searching for attributes that don't exist
3765
+ * fixed minor bug where scripts with syntax errors didn't run but didn't complain either
3766
+ * IDE FileOpen now tries the folder that the current file is in first
3767
+ * IDE removed threading class for running scripts
3768
+
3769
+ PsychoPy 0.91.4
3770
+ ~~~~~~~~~~~~~~~~~~~~~~
3771
+ * fixed the problem of stimulus order/depth. Now the default depth is set (more intuitively) by the order of drawing not creating.
3772
+ * IDE added recent files to file menu
3773
+ * IDE minor bug fixes
3774
+ * IDE rewrite of code inspection using wx.py.instrospect
3775
+
3776
+ PsychoPy 0.91.3
3777
+ ~~~~~~~~~~~~~~~~~~~~~~
3778
+ * added find dialog to IDE
3779
+ * added ability of data.FunctionFromStaircase to create unique bins rather than averaging several x values. Give bins='unique' (rather than bins=someInteger). Also fixed very minor issue where this func would only take a list of lists, rather than a single list.
3780
+
3781
+ PsychoPy 0.91.2
3782
+ ~~~~~~~~~~~~~~~~~~~~~~
3783
+ * fixed IDE problem running filenames containing spaces (only necessary on win32)
3784
+
3785
+ PsychoPy 0.91.1
3786
+ ~~~~~~~~~~~~~~~~~~~~~~
3787
+ * added reasonable SourceAssistant to IDE
3788
+ * added a stop button to abort scripts in IDE
3789
+ * IDE scripts now run as sub process rather than within the main process: slower but safer
3790
+ * added an autoflushing stdout to psychopy.__init__. Where lots of text is written to stdout this may be a problem, but turing it off means that stdout doesn't get properly picked up by the IDE :-(
3791
+
3792
+ PsychoPy 0.91.0
3793
+ ~~~~~~~~~~~~~~~~~~~~~~
3794
+ * PsychoPy now has its own IDE!! With syntax-highlighting, code-folding and auto-complete!! :-)
3795
+ * gui.py had to be refactored a little but (I think) should not be noticed by the end user (gui.Dlg is now a subclass of wx.Dialog rather than a modified instance)
3796
+ * gui.Dlg and DlgFromDict now end up with an attribute .OK that is either True or False
3797
+ * fixed bug in data.StairHandler that could result in too many trials being run (since v0.89)
3798
+
3799
+ PsychoPy 0.90.4
3800
+ ~~~~~~~~~~~~~~~~~~~~~~
3801
+ * resolved deprecation warning with wxPython (now using "import wx")
3802
+
3803
+ PsychoPy 0.90.3
3804
+ ~~~~~~~~~~~~~~~~~~~~~~
3805
+ * used the new numpy.mgrid commands throughout filters and visual modules
3806
+ * sorted out the rounding probs on RadialStim
3807
+ * fixed import bug in calibtools.py
3808
+
3809
+ PsychoPy 0.90.2
3810
+ ~~~~~~~~~~~~~~~~~~~~~~
3811
+ * fixed new bug in the minVal/maxVal handling of StairHandler (where these have not been specified)
3812
+ * changed the default console log level to be ERROR, due to too much log output!
3813
+
3814
+ PsychoPy 0.90.1
3815
+ ~~~~~~~~~~~~~~~~~~~~~~
3816
+ * fixed new bug in Sound object
3817
+ * changed the default log file to go to the script directory rather than site-packages/psychopy
3818
+
3819
+ PsychoPy 0.90
3820
+ ~~~~~~~~~~~~~~~~~~~~~~
3821
+ * sounds now in stereo and a new function to allow you to choose the settings for the sound system.
3822
+ * LMS colors (cone-isolating stimuli) are now tested and accurate (when calibrated)
3823
+ * added logging module (errors, warnings, info). And removed other messages:
3824
+ * @Verbose@ flags have become log.info messages
3825
+ * @Warn@ commands have become log.warning messages
3826
+ * added minVal and maxVal arguments to data.StairHandler so that range can be bounded
3827
+ * @import psychopy@ no longer imports anything other than core
3828
+
3829
+ Psychopy 0.89.1
3830
+ ~~~~~~~~~~~~~~~~~~~~~~
3831
+ * fixed bug in new numpy's handling of bits++ header
3832
+
3833
+ Psychopy 0.89
3834
+ ~~~~~~~~~~~~~~~~~~~~~~
3835
+ * optimised DotStim to use vertex arrays (can now draw several thousand dots)
3836
+ * optimised RadialStim to use vertex arrays (can increase radial resolution without much loss)
3837
+
3838
+ Psychopy 0.88
3839
+ ~~~~~~~~~~~~~~~~~~~~~~
3840
+ * fixed problem with MonitorCenter on OSX (buttons not working on recent version of wxPython)
3841
+
3842
+ Psychopy 0.87
3843
+ ~~~~~~~~~~~~~~~~~~~~~~
3844
+ * added sqrXsqr to RadialStim and made it default texture
3845
+ * fixed a minor bug in RadialStim rendering (stimuli failed to appear under certain stimulus orderings)
3846
+ * changed RadialStim size parameter to be diameter rather than radius (to be like AlphaStim)
3847
+ * namechange: introduced PatchStim (currently identical to AlphaStim which may one day become deprecated)
3848
+
3849
+ Psychopy 0.86
3850
+ ~~~~~~~~~~~~~~~~~~~~~~
3851
+ * distributed as an .egg
3852
+
3853
+ Psychopy 0.85
3854
+ ~~~~~~~~~~~~~~~~~~~~~~
3855
+ * upgraded for numpy1.0b and scipy0.50. Hopefully those packages are now stable enough that they won't need further PsychoPy compatibility changes
3856
+
3857
+ Psychopy 0.84
3858
+ ~~~~~~~~~~~~~~~~~~~~~~
3859
+ * NEW (alpha) support for radial patterns rather than linear ones
3860
+ * changed Clock behaviour to use time.clock() on win32 rather than time.time()
3861
+ * fixed a bug in the shuffle seeding behaviour
3862
+ * added a noise pattern to background in monitor calibration
3863
+
3864
+ Psychopy 0.83
3865
+ ~~~~~~~~~~~~~~~~~~~~~~
3866
+ * NEW post-install script for Win32 installs shortcuts to your >>Start>Programs menu
3867
+ * NEW parallel port code (temporary form) using DLportIO.dll can be found under _parallel
3868
+ * NEW hardware module with support for fORP response box (for MRI) using serial port
3869
+ * added iterator functionality to data.TrialHandler and data.StairHandler you can now use ::
3870
+ for thisTrial in allTrials:
3871
+
3872
+ but a consequence was that .nextTrial() will be deprecated in favour of .next().
3873
+ Also, when the end of the trials is reached a StopIteration is raised.
3874
+ * added the ability to seed the shuffle mechanism (and trial handler) so you can repeat experiments with the same trial sequence
3875
+
3876
+ Psychopy 0.82
3877
+ ~~~~~~~~~~~~~~~~~~~~~~
3878
+ * rewritten code for bits++ LUT drawing, raised by changes in pyOpenGL(2.0.1.09) call to drawpixels
3879
+ * minor change to exit behaviour. pyGame.quit() is now called and then sys.exit(0) rather than sys.exit(1)
3880
+ * bug fixes in type handling (from Numeric to numpy)
3881
+
3882
+ Psychopy 0.81
3883
+ ~~~~~~~~~~~~~~~~~~~~~~
3884
+ * changes to gui caused by new threading behaviour of wxPython and PyGame (DlgFromDict must now be a class not a function).
3885
+
3886
+ Psychopy 0.80
3887
+ ~~~~~~~~~~~~~~~~~~~~~~
3888
+ * switching numeric code to new python24 and new scipy/numpy. MUCH nicer
3889
+ * new (reduced requirements):
3890
+ * numpy 0.9 or newer (the replacement for Numeric/numarray)
3891
+ * numpy 0.4.4 or newer
3892
+ * pyOpenGL
3893
+ * pygame
3894
+ * PIL
3895
+ * matplotlib (for data plotting)
3896
+
3897
+ PsychoPy 0.72
3898
+ ~~~~~~~~~~~~~~~~~~~~~~
3899
+ * tested (and fixed) compatibility with wxPython 2.6. Will now be using this as my primary handler for GUIs
3900
+ * ADDED ability to quit during run of getLumSeries
3901
+
3902
+ PsychoPy 0.71
3903
+ ~~~~~~~~~~~~~~~~~~~~~~
3904
+ * FIXED filename bug in makeMovies.makeAnimatedGIF
3905
+ * slight change to monitors that it uses testMonitor.calib as a default rather than default.calib (testMonitor.calib is packaged with the installation)
3906
+
3907
+ PsychoPy 0.70
3908
+ ~~~~~~~~~~~~~~~~~~~~~~
3909
+ * FIXED bug in setSize. Wasn't updating correctly
3910
+ * ADDED ability to append to a data file rather than create new
3911
+ * bits.lib (from CRS) is now distributed directly with psychopy rather than needing separate install)
3912
+ * ADDED db/log/linear step methods to StairHandler
3913
+ * ADDED logistic equation to data.FitFunction
3914
+
3915
+ PsychoPy 0.69
3916
+ ~~~~~~~~~~~~~~~~~~~~~~
3917
+ * ADDED a testMonitor to the monitors package so that demos can use it for pseudo*calibrated stimuli.
3918
+ * REDUCED the attempt to use _bits.pyd. Was only necessary for machines that had bits++ monitor center
3919
+ * ADDED basic staircase method
3920
+ * CHANGED dlgFromDict to return None on cancel rather than 0
3921
+ * CHANGED the description of sin textures so that the centre of the patch had the color of dkl or rgb rather
3922
+ than the edge. (Effectively all sin textures are now shifted in phase by pi radians).
3923
+ -Demos removed from the main package - now ONLY distributed as a separate library
3924
+
3925
+ PsychoPy 0.68
3926
+ ~~~~~~~~~~~~~~~~~~~~~~
3927
+ * FIXED toFile and fromFile so they work!?
3928
+ * Demos being distributed as a separate .zip file (may be removed from the main package someday)
3929
+
3930
+ PsychoPy 0.67
3931
+ ~~~~~~~~~~~~~~~~~~~~~~
3932
+ * ADDED toFile, fromFile, pol2cart functions to psychopy.misc
3933
+ * CHANGED waitKeys to return a list of keys (usually of length one) so that it's compatible with getKeys
3934
+
3935
+ PsychoPy 0.66
3936
+ ~~~~~~~~~~~~~~~~~~~~~~
3937
+ * serial is now a subpackage of psychopy and so doesn't need additional installation
3938
+ * REMOVED the code to try and query the graphics card about the scr dimensions. From now on, if yo uwish to use real world units, you MUST specify scrWidthPIX and scrWidthCM when you make your visual.Window
3939
+ * ADDED flag to data output to output matrixOnly (useful for matlab imports)
3940
+ * REVERTED the default numeric handler to be Numeric rather than numarray (because it looks like numarray hasn't taken off as much as thought)
3941
+ * FIXED minor bug in text formatting for TrialHandler.saveAsText()
3942
+ * CHANGED visual.Window so that the monitor argument prefers to receive a Monitor object (rather than just a dictionary) or just the name of one. MonitorCenter makes it so easy to create these now that they should be the default.
3943
+ * CHANGED Photometer initialisation behaviour - used to raise an error on a fail but now sets an internal attribute .OK to False rather than True
3944
+
3945
+ PsychoPy 0.65
3946
+ ~~~~~~~~~~~~~~~~~~~~~~
3947
+ * MonitorCenter now complete. Plots and checks gamma correction.
3948
+ * can write movies out to animated gifs(any platform) or mpg/avi (both windows only)
3949
+
3950
+ PsychoPy 0.64
3951
+ ~~~~~~~~~~~~~~~~~~~~~~
3952
+ * CHANGED monitor key dkl_rgb_matrix to dkl_rgb (also for lms)
3953
+ * ADDED code for PR650 to get the monitor color calibration and calculate the color conversion matrices automatically. Will be implemented via the MonitorCenter application.
3954
+ * ADDED pyserial2.0 as a subpackage of psychopy so that it needn't be separately installed
3955
+ * Much improved MonitorCenter with DKL and LMS calibration buttons and matrix output
3956
+ * Double-click installer for Mac now available
3957
+
3958
+ PsychoPy 0.63
3959
+ ~~~~~~~~~~~~~~~~~~~~~~
3960
+ * ADDED ability to capture frames from the window as images (tif, jpg...) or as animated GIF files :) see demo
3961
+ * ADDED ability for elements in DotStim to be any arbitrary stimulus with a methods for .setPos(), .draw()
3962
+
3963
+ PsychoPy 0.62
3964
+ ~~~~~~~~~~~~~~~~~~~~~~
3965
+ * FIXED the circular mask for DotStim
3966
+ * FIXED bug in the new text alignment method (was being aligned but not positioned?!)
3967
+
3968
+ PsychoPy 0.61
3969
+ ~~~~~~~~~~~~~~~~~~~~~~
3970
+ * FIXED minor bug in MonitorCenter (OS X only)
3971
+
3972
+ PsychoPy 0.60
3973
+ ~~~~~~~~~~~~~~~~~~~~~~
3974
+ * ADDED a GUI application for looking after monitors and calibrations. SEE MonitorCenter.py in the new package monitors
3975
+ * MOVED "psychopy.calib" subpackage to a whole separate package "monitors". Calibration files will now be stored alongside the calibration code. This makes it easier to develop the new calibration GUI application that I'm working on. Also means that if you delete the psychopy folder for a new installation you won't lose your calibration files.
3976
+ * ADDED optional maxWait argument to event.waitKeys()
3977
+ * CHANGED TextStim to take the font as a name rather than font number
3978
+ * ADDED alignment to text stimuli (alignVert, alignHoriz)
3979
+ * CHANGED waitKeys to implicitly clear keys from the event queue so that it only finds the first keypress after its called. As result it now returns a single character rather than list of them
3980
+ * CHANGED visual.Window so that it no longer overrides monitor settings if arguments are specified. Easy now to create a monitor in the monitors GUI and use that instead
3981
+ * ADDED the circular mask for DotStimulus