psychopy 2024.2.0__py3-none-any.whl → 2024.2.1__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (143) hide show
  1. psychopy/.DS_Store +0 -0
  2. psychopy/GIT_SHA +1 -1
  3. psychopy/VERSION +1 -1
  4. psychopy/app/Resources/routine_templates/Trials.psyexp +5 -5
  5. psychopy/{experiment → app/locale/ar_001}/.DS_Store +0 -0
  6. psychopy/{tests/data/correctScript → app/locale/ar_001/LC_MESSAGE}/.DS_Store +0 -0
  7. psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo +0 -0
  8. psychopy/app/locale/es_CO/LC_MESSAGE/messages.mo +0 -0
  9. psychopy/app/locale/es_CO/LC_MESSAGE/messages.po +13 -14
  10. psychopy/{demos → app/locale/es_ES/LC_MESSAGE}/.DS_Store +0 -0
  11. psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo +0 -0
  12. psychopy/app/locale/es_ES/LC_MESSAGE/messages.po +12 -13
  13. psychopy/app/locale/es_US/LC_MESSAGE/messages.mo +0 -0
  14. psychopy/app/locale/es_US/LC_MESSAGE/messages.po +12 -13
  15. psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo +0 -0
  16. psychopy/data/trial.py +10 -1
  17. psychopy/experiment/components/movie/__init__.py +13 -9
  18. psychopy/iohub/__init__.py +8 -3
  19. psychopy/tests/.DS_Store +0 -0
  20. psychopy/tests/data/corrRandomTH2.csv +16 -16
  21. psychopy/tests/test_data/test_TrialHandler2.py +34 -14
  22. psychopy/visual/.DS_Store +0 -0
  23. {psychopy-2024.2.0.dist-info → psychopy-2024.2.1.dist-info}/METADATA +8 -4
  24. {psychopy-2024.2.0.dist-info → psychopy-2024.2.1.dist-info}/RECORD +33 -143
  25. psychopy/contrib/.DS_Store +0 -0
  26. psychopy/demos/builder/.DS_Store +0 -0
  27. psychopy/demos/builder/Design Templates/.DS_Store +0 -0
  28. psychopy/demos/builder/Experiments/.DS_Store +0 -0
  29. psychopy/demos/builder/Feature Demos/.DS_Store +0 -0
  30. psychopy/demos/builder/Hardware/.DS_Store +0 -0
  31. psychopy/demos/builder/Helper Tools/.DS_Store +0 -0
  32. psychopy/demos/coder/.DS_Store +0 -0
  33. psychopy/demos/coder/iohub/.DS_Store +0 -0
  34. psychopy/experiment/components/.DS_Store +0 -0
  35. psychopy/experiment/components/aperture/.DS_Store +0 -0
  36. psychopy/experiment/components/brush/.DS_Store +0 -0
  37. psychopy/experiment/components/button/.DS_Store +0 -0
  38. psychopy/experiment/components/buttonBox/.DS_Store +0 -0
  39. psychopy/experiment/components/camera/.DS_Store +0 -0
  40. psychopy/experiment/components/code/.DS_Store +0 -0
  41. psychopy/experiment/components/dots/.DS_Store +0 -0
  42. psychopy/experiment/components/eyetracker_record/.DS_Store +0 -0
  43. psychopy/experiment/components/form/.DS_Store +0 -0
  44. psychopy/experiment/components/grating/.DS_Store +0 -0
  45. psychopy/experiment/components/image/.DS_Store +0 -0
  46. psychopy/experiment/components/joyButtons/.DS_Store +0 -0
  47. psychopy/experiment/components/joystick/.DS_Store +0 -0
  48. psychopy/experiment/components/keyboard/.DS_Store +0 -0
  49. psychopy/experiment/components/microphone/.DS_Store +0 -0
  50. psychopy/experiment/components/mouse/.DS_Store +0 -0
  51. psychopy/experiment/components/movie/.DS_Store +0 -0
  52. psychopy/experiment/components/panorama/.DS_Store +0 -0
  53. psychopy/experiment/components/parallelOut/.DS_Store +0 -0
  54. psychopy/experiment/components/patch/.DS_Store +0 -0
  55. psychopy/experiment/components/polygon/.DS_Store +0 -0
  56. psychopy/experiment/components/progress/.DS_Store +0 -0
  57. psychopy/experiment/components/ratingScale/.DS_Store +0 -0
  58. psychopy/experiment/components/resourceManager/.DS_Store +0 -0
  59. psychopy/experiment/components/roi/.DS_Store +0 -0
  60. psychopy/experiment/components/routineSettings/.DS_Store +0 -0
  61. psychopy/experiment/components/serialOut/.DS_Store +0 -0
  62. psychopy/experiment/components/settings/.DS_Store +0 -0
  63. psychopy/experiment/components/slider/.DS_Store +0 -0
  64. psychopy/experiment/components/sound/.DS_Store +0 -0
  65. psychopy/experiment/components/static/.DS_Store +0 -0
  66. psychopy/experiment/components/text/.DS_Store +0 -0
  67. psychopy/experiment/components/textbox/.DS_Store +0 -0
  68. psychopy/experiment/components/unknown/.DS_Store +0 -0
  69. psychopy/experiment/components/unknownPlugin/.DS_Store +0 -0
  70. psychopy/experiment/components/variable/.DS_Store +0 -0
  71. psychopy/experiment/routines/.DS_Store +0 -0
  72. psychopy/experiment/routines/counterbalance/.DS_Store +0 -0
  73. psychopy/experiment/routines/eyetracker_calibrate/.DS_Store +0 -0
  74. psychopy/experiment/routines/eyetracker_validate/.DS_Store +0 -0
  75. psychopy/experiment/routines/pavlovia_survey/.DS_Store +0 -0
  76. psychopy/experiment/routines/photodiodeValidator/.DS_Store +0 -0
  77. psychopy/experiment/routines/unknown/.DS_Store +0 -0
  78. psychopy/hardware/.DS_Store +0 -0
  79. psychopy/iohub/.DS_Store +0 -0
  80. psychopy/iohub/devices/.DS_Store +0 -0
  81. psychopy/iohub/devices/eyetracker/.DS_Store +0 -0
  82. psychopy/tests/data/.DS_Store +0 -0
  83. psychopy/tests/data/beatandrcos_normAddBlend_local.png +0 -0
  84. psychopy/tests/data/beatandrcos_normHexbackground_local.png +0 -0
  85. psychopy/tests/data/beatandrcos_norm_local.png +0 -0
  86. psychopy/tests/data/blend_add_normAddBlend_local.png +0 -0
  87. psychopy/tests/data/blend_add_normHexbackground_local.png +0 -0
  88. psychopy/tests/data/blend_add_norm_local.png +0 -0
  89. psychopy/tests/data/bufferimg_gabor_normAddBlend_local.png +0 -0
  90. psychopy/tests/data/bufferimg_gabor_normHexbackground_local.png +0 -0
  91. psychopy/tests/data/bufferimg_gabor_norm_local.png +0 -0
  92. psychopy/tests/data/circleHex_normAddBlend_local.png +0 -0
  93. psychopy/tests/data/circleHex_normHexbackground_local.png +0 -0
  94. psychopy/tests/data/circleHex_norm_local.png +0 -0
  95. psychopy/tests/data/dots_normAddBlend_local.png +0 -0
  96. psychopy/tests/data/dots_normHexbackground_local.png +0 -0
  97. psychopy/tests/data/dots_norm_local.png +0 -0
  98. psychopy/tests/data/elarray1_normAddBlend_local.png +0 -0
  99. psychopy/tests/data/elarray1_normHexbackground_local.png +0 -0
  100. psychopy/tests/data/elarray1_norm_local.png +0 -0
  101. psychopy/tests/data/envelopeandrcos_normAddBlend_local.png +0 -0
  102. psychopy/tests/data/envelopeandrcos_normHexbackground_local.png +0 -0
  103. psychopy/tests/data/envelopeandrcos_norm_local.png +0 -0
  104. psychopy/tests/data/envelopepowerandrcos_normAddBlend_local.png +0 -0
  105. psychopy/tests/data/envelopepowerandrcos_normHexbackground_local.png +0 -0
  106. psychopy/tests/data/envelopepowerandrcos_norm_local.png +0 -0
  107. psychopy/tests/data/gabor1_normAddBlend_local.png +0 -0
  108. psychopy/tests/data/gabor1_normHexbackground_local.png +0 -0
  109. psychopy/tests/data/gabor1_norm_local.png +0 -0
  110. psychopy/tests/data/imageAndGauss_normAddBlend_local.png +0 -0
  111. psychopy/tests/data/imageAndGauss_normHexbackground_local.png +0 -0
  112. psychopy/tests/data/imageAndGauss_norm_local.png +0 -0
  113. psychopy/tests/data/noiseAndRcos_normAddBlend_local.png +0 -0
  114. psychopy/tests/data/noiseAndRcos_normHexbackground_local.png +0 -0
  115. psychopy/tests/data/noiseAndRcos_norm_local.png +0 -0
  116. psychopy/tests/data/noiseFiltersAndRcos_normAddBlend_local.png +0 -0
  117. psychopy/tests/data/noiseFiltersAndRcos_normHexbackground_local.png +0 -0
  118. psychopy/tests/data/noiseFiltersAndRcos_norm_local.png +0 -0
  119. psychopy/tests/data/numpyImage_normAddBlend_local.png +0 -0
  120. psychopy/tests/data/numpyImage_normHexbackground_local.png +0 -0
  121. psychopy/tests/data/numpyImage_norm_local.png +0 -0
  122. psychopy/tests/data/shape2_1_normAddBlend_local.png +0 -0
  123. psychopy/tests/data/shape2_1_norm_local.png +0 -0
  124. psychopy/tests/data/test_session/.DS_Store +0 -0
  125. psychopy/tests/data/text1_normAddBlend_local.png +0 -0
  126. psychopy/tests/data/text1_normHexbackground_local.png +0 -0
  127. psychopy/tests/data/text1_norm_local.png +0 -0
  128. psychopy/tests/data/text2_height.png +0 -0
  129. psychopy/tests/data/text2_stencil.png +0 -0
  130. psychopy/tests/data/wedge1_normAddBlend_local.png +0 -0
  131. psychopy/tests/data/wedge1_normHexbackground_local.png +0 -0
  132. psychopy/tests/data/wedge1_norm_local.png +0 -0
  133. psychopy/tests/test_app/.DS_Store +0 -0
  134. psychopy/tests/test_experiment/.DS_Store +0 -0
  135. /psychopy/demos/builder/Experiments/{goNoGo → GoNoGo}/conditions.xlsx +0 -0
  136. /psychopy/demos/builder/Experiments/{goNoGo → GoNoGo}/gng.psyexp +0 -0
  137. /psychopy/demos/builder/Experiments/{goNoGo → GoNoGo}/go.png +0 -0
  138. /psychopy/demos/builder/Experiments/{goNoGo → GoNoGo}/nogo.png +0 -0
  139. /psychopy/demos/builder/Experiments/{goNoGo → GoNoGo}/readme.md +0 -0
  140. {psychopy-2024.2.0.dist-info → psychopy-2024.2.1.dist-info}/WHEEL +0 -0
  141. {psychopy-2024.2.0.dist-info → psychopy-2024.2.1.dist-info}/entry_points.txt +0 -0
  142. {psychopy-2024.2.0.dist-info → psychopy-2024.2.1.dist-info}/licenses/AUTHORS.md +0 -0
  143. {psychopy-2024.2.0.dist-info → psychopy-2024.2.1.dist-info}/licenses/LICENSE +0 -0
psychopy/.DS_Store CHANGED
Binary file
psychopy/GIT_SHA CHANGED
@@ -1 +1 @@
1
- 21e8c98452ff86f45dcc22206bef29647fe6a0da
1
+ 872d0a686f2d3765ef56ac771ab7d4291f735839
psychopy/VERSION CHANGED
@@ -1 +1 @@
1
- 2024.2.0
1
+ 2024.2.1
@@ -482,7 +482,7 @@
482
482
  <Param val="" valType="code" updates="None" name="durationEstim"/>
483
483
  <Param val="False" valType="bool" updates="constant" name="flipHoriz"/>
484
484
  <Param val="False" valType="bool" updates="constant" name="flipVert"/>
485
- <Param val="default.png" valType="file" updates="set during: Images_2AFC.ISI_load_images" name="image"/>
485
+ <Param val="default.png" valType="file" updates="set during: images_2afc.ISI_load_images" name="image"/>
486
486
  <Param val="linear" valType="str" updates="constant" name="interpolate"/>
487
487
  <Param val="" valType="str" updates="constant" name="mask"/>
488
488
  <Param val="left_img" valType="code" updates="None" name="name"/>
@@ -522,7 +522,7 @@
522
522
  <Param val="" valType="code" updates="None" name="durationEstim"/>
523
523
  <Param val="False" valType="bool" updates="constant" name="flipHoriz"/>
524
524
  <Param val="False" valType="bool" updates="constant" name="flipVert"/>
525
- <Param val="default.png" valType="file" updates="set during: Images_2AFC.ISI_load_images" name="image"/>
525
+ <Param val="default.png" valType="file" updates="set during: images_2afc.ISI_load_images" name="image"/>
526
526
  <Param val="linear" valType="str" updates="constant" name="interpolate"/>
527
527
  <Param val="" valType="str" updates="constant" name="mask"/>
528
528
  <Param val="right_img" valType="code" updates="None" name="name"/>
@@ -598,7 +598,7 @@
598
598
  <Param val="" valType="code" updates="None" name="durationEstim"/>
599
599
  <Param val="False" valType="bool" updates="constant" name="flipHoriz"/>
600
600
  <Param val="False" valType="bool" updates="constant" name="flipVert"/>
601
- <Param val="default.png" valType="file" updates="set during: Images_2AFC.ISI_load_images" name="image"/>
601
+ <Param val="default.png" valType="file" updates="set during: images_2afc.ISI_load_images" name="image"/>
602
602
  <Param val="linear" valType="str" updates="constant" name="interpolate"/>
603
603
  <Param val="" valType="str" updates="constant" name="mask"/>
604
604
  <Param val="top_left_img" valType="code" updates="None" name="name"/>
@@ -638,7 +638,7 @@
638
638
  <Param val="" valType="code" updates="None" name="durationEstim"/>
639
639
  <Param val="False" valType="bool" updates="constant" name="flipHoriz"/>
640
640
  <Param val="False" valType="bool" updates="constant" name="flipVert"/>
641
- <Param val="default.png" valType="file" updates="set during: Images_2AFC.ISI_load_images" name="image"/>
641
+ <Param val="default.png" valType="file" updates="set during: images_2afc.ISI_load_images" name="image"/>
642
642
  <Param val="linear" valType="str" updates="constant" name="interpolate"/>
643
643
  <Param val="" valType="str" updates="constant" name="mask"/>
644
644
  <Param val="top_right_img" valType="code" updates="None" name="name"/>
@@ -665,7 +665,7 @@
665
665
  <Param val="" valType="code" updates="None" name="durationEstim"/>
666
666
  <Param val="False" valType="bool" updates="constant" name="flipHoriz"/>
667
667
  <Param val="False" valType="bool" updates="constant" name="flipVert"/>
668
- <Param val="default.png" valType="file" updates="set during: Images_2AFC.ISI_load_images" name="image"/>
668
+ <Param val="default.png" valType="file" updates="set during: images_2afc.ISI_load_images" name="image"/>
669
669
  <Param val="linear" valType="str" updates="constant" name="interpolate"/>
670
670
  <Param val="" valType="str" updates="constant" name="mask"/>
671
671
  <Param val="bott_left_img" valType="code" updates="None" name="name"/>
@@ -14,7 +14,7 @@ msgstr ""
14
14
  "Content-Type: text/plain; charset=UTF-8\n"
15
15
  "Content-Transfer-Encoding: 8bit\n"
16
16
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
- "X-Generator: Poedit 3.4.2\n"
17
+ "X-Generator: Poedit 3.4.4\n"
18
18
  "X-Poedit-Basepath: ../../../../..\n"
19
19
  "X-Poedit-SourceCharset: UTF-8\n"
20
20
  "X-Poedit-KeywordsList: _translate\n"
@@ -23,7 +23,7 @@ msgstr ""
23
23
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:12
24
24
  #, python-brace-format
25
25
  msgid "Your stimulus size exceeds the {dimension} dimension of your window."
26
- msgstr "El tamaño de su estímulo excede la dimensión{dimension} de su ventana."
26
+ msgstr "El tamaño de su estímulo excede la dimensión {dimension} de su ventana."
27
27
 
28
28
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:16
29
29
  #, python-brace-format
@@ -145,8 +145,7 @@ msgstr ""
145
145
 
146
146
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:94
147
147
  msgid "Experiment includes components or routines which use eyetracking, but no eye tracker is configured."
148
- msgstr ""
149
- "El experimento incluye componentes o rutinas que utilizan seguimiento ocular, pero ningún rastreador ocular se ha configurado."
148
+ msgstr "El experimento incluye componentes o rutinas que utilizan rastreo ocular, pero ningún rastreador ocular se ha configurado."
150
149
 
151
150
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:98
152
151
  #, python-brace-format
@@ -170,15 +169,15 @@ msgstr "Los Eyetrackers de {brand} no admiten ritmo manual"
170
169
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:108
171
170
  msgid "Window mode is set to be windowed, but eyetracking requires the window to be full screen."
172
171
  msgstr ""
173
- "El modo de ventana está configurado para ser en ventana, pero el seguimiento ocular requiere que la ventana sea pantalla completa."
172
+ "El modo de ventana está configurado para ser en ventana, pero el rastreo ocular requiere que la ventana sea pantalla completa."
174
173
 
175
174
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:112
176
175
  msgid "A monitor config is required for accurate eyetracking measurements, but none was found."
177
- msgstr "Se requiere una configuración de monitor para mediciones precisas de seguimiento ocular, pero ninguna ha sido encontrada."
176
+ msgstr "Se requiere una configuración de monitor para mediciones precisas de rastreo ocular, pero ninguna ha sido encontrada."
178
177
 
179
178
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:116
180
179
  msgid "Eye tracker experiments should use 'ioHub' as the Input -> Keyboard Backend setting"
181
- msgstr "Los experimentos de seguimiento ocular deben usar 'ioHub' como entrada -> Backend del tecladoconfiguración"
180
+ msgstr "Los experimentos de rastreo ocular deben usar 'ioHub' como entrada -> Configuración del Backend del teclado"
182
181
 
183
182
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:120
184
183
  #, python-brace-format
@@ -1472,7 +1471,7 @@ msgstr "Formateando"
1472
1471
 
1473
1472
  #: psychopy/app/builder/localizedStrings.py:39
1474
1473
  msgid "Eyetracking"
1475
- msgstr "Seguimiento ocular"
1474
+ msgstr "Rastreo ocular"
1476
1475
 
1477
1476
  #: psychopy/app/builder/localizedStrings.py:40
1478
1477
  msgid "Target"
@@ -5367,7 +5366,7 @@ msgstr "Botones permitidos"
5367
5366
  #: psychopy/experiment/components/joyButtons/__init__.py:17 psychopy/experiment/components/joyButtons/__init__.py:74
5368
5367
  #: psychopy/experiment/components/keyboard/__init__.py:22 psychopy/experiment/components/keyboard/__init__.py:100
5369
5368
  msgid "Store"
5370
- msgstr "Tienda"
5369
+ msgstr "Almacenar"
5371
5370
 
5372
5371
  #: psychopy/experiment/components/joyButtons/__init__.py:19 psychopy/experiment/components/joyButtons/__init__.py:90
5373
5372
  #: psychopy/experiment/components/keyboard/__init__.py:24 psychopy/experiment/components/keyboard/__init__.py:116
@@ -5456,7 +5455,7 @@ msgstr "Joystick: consultar posición y botones del joystick"
5456
5455
  msgid ""
5457
5456
  "How often should the joystick state (x,y,buttons) be stored? On every video frame, every click or just at the end of the Routine?"
5458
5457
  msgstr ""
5459
- "¿Con qué frecuencia se debe almacenar el estado del joystick (botones x,y)? En cada vídeocuadro, ¿cada clic o simplemente al "
5458
+ "¿Con qué frecuencia se debe almacenar el estado del joystick (botones x,y)? En cada cuadro del video, ¿cada clic o simplemente al "
5460
5459
  "final de la rutina?"
5461
5460
 
5462
5461
  #: psychopy/experiment/components/joystick/__init__.py:67 psychopy/experiment/components/mouse/__init__.py:65
@@ -6724,7 +6723,7 @@ msgstr "Puerto GazePoint"
6724
6723
 
6725
6724
  #: psychopy/experiment/components/settings/__init__.py:508 psychopy/experiment/components/settings/__init__.py:578
6726
6725
  msgid "Eye tracker model."
6727
- msgstr "Modelo de seguimiento ocular."
6726
+ msgstr "Modelo de Rastreador Ocular."
6728
6727
 
6729
6728
  #: psychopy/experiment/components/settings/__init__.py:509 psychopy/experiment/components/settings/__init__.py:579
6730
6729
  msgid "Model name"
@@ -6752,7 +6751,7 @@ msgstr "Seleccione con ojo(s) para rastrear."
6752
6751
 
6753
6752
  #: psychopy/experiment/components/settings/__init__.py:529
6754
6753
  msgid "Track eyes"
6755
- msgstr "Ojos de seguimiento"
6754
+ msgstr "Rastrear ojos"
6756
6755
 
6757
6756
  #: psychopy/experiment/components/settings/__init__.py:535
6758
6757
  msgid "Filter eye sample data live, as it is streamed to the driving device. This may reduce the sampling speed."
@@ -6774,11 +6773,11 @@ msgstr "Filtrado de muestra guardada"
6774
6773
 
6775
6774
  #: psychopy/experiment/components/settings/__init__.py:551
6776
6775
  msgid "Track Pupil-CR or Pupil only."
6777
- msgstr "Seguimiento de Pupil-CR o Pupil solamente."
6776
+ msgstr "Rastreo de Pupila-CR o Pupila solamente."
6778
6777
 
6779
6778
  #: psychopy/experiment/components/settings/__init__.py:552
6780
6779
  msgid "Pupil tracking mode"
6781
- msgstr "Modo de seguimiento de pupila"
6780
+ msgstr "Modo de rastreo de pupila"
6782
6781
 
6783
6782
  #: psychopy/experiment/components/settings/__init__.py:558
6784
6783
  msgid "Algorithm used to detect the pupil center."
@@ -23,7 +23,7 @@ msgstr ""
23
23
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:12
24
24
  #, python-brace-format
25
25
  msgid "Your stimulus size exceeds the {dimension} dimension of your window."
26
- msgstr "El tamaño de su estímulo excede la dimensión{dimension} de su ventana."
26
+ msgstr "El tamaño de su estímulo excede la dimensión {dimension} de su ventana."
27
27
 
28
28
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:16
29
29
  #, python-brace-format
@@ -145,8 +145,7 @@ msgstr ""
145
145
 
146
146
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:94
147
147
  msgid "Experiment includes components or routines which use eyetracking, but no eye tracker is configured."
148
- msgstr ""
149
- "El experimento incluye componentes o rutinas que utilizan seguimiento ocular, pero ningún rastreador ocular se ha configurado."
148
+ msgstr "El experimento incluye componentes o rutinas que utilizan rastreo ocular, pero ningún rastreador ocular se ha configurado."
150
149
 
151
150
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:98
152
151
  #, python-brace-format
@@ -170,15 +169,15 @@ msgstr "Los Eyetrackers de {brand} no admiten ritmo manual"
170
169
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:108
171
170
  msgid "Window mode is set to be windowed, but eyetracking requires the window to be full screen."
172
171
  msgstr ""
173
- "El modo de ventana está configurado para ser en ventana, pero el seguimiento ocular requiere que la ventana sea pantalla completa."
172
+ "El modo de ventana está configurado para ser en ventana, pero el rastreo ocular requiere que la ventana sea pantalla completa."
174
173
 
175
174
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:112
176
175
  msgid "A monitor config is required for accurate eyetracking measurements, but none was found."
177
- msgstr "Se requiere una configuración de monitor para mediciones precisas de seguimiento ocular, pero ninguna ha sido encontrada."
176
+ msgstr "Se requiere una configuración de monitor para mediciones precisas de rastreo ocular, pero ninguna ha sido encontrada."
178
177
 
179
178
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:116
180
179
  msgid "Eye tracker experiments should use 'ioHub' as the Input -> Keyboard Backend setting"
181
- msgstr "Los experimentos de seguimiento ocular deben usar 'ioHub' como entrada -> Backend del tecladoconfiguración"
180
+ msgstr "Los experimentos de rastreo ocular deben usar 'ioHub' como entrada -> Configuración del Backend del teclado"
182
181
 
183
182
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:120
184
183
  #, python-brace-format
@@ -1474,7 +1473,7 @@ msgstr "Formateando"
1474
1473
 
1475
1474
  #: psychopy/app/builder/localizedStrings.py:39
1476
1475
  msgid "Eyetracking"
1477
- msgstr "Seguimiento ocular"
1476
+ msgstr "Rastreo ocular"
1478
1477
 
1479
1478
  #: psychopy/app/builder/localizedStrings.py:40
1480
1479
  msgid "Target"
@@ -5369,7 +5368,7 @@ msgstr "Botones permitidos"
5369
5368
  #: psychopy/experiment/components/joyButtons/__init__.py:17 psychopy/experiment/components/joyButtons/__init__.py:74
5370
5369
  #: psychopy/experiment/components/keyboard/__init__.py:22 psychopy/experiment/components/keyboard/__init__.py:100
5371
5370
  msgid "Store"
5372
- msgstr "Tienda"
5371
+ msgstr "Almacenar"
5373
5372
 
5374
5373
  #: psychopy/experiment/components/joyButtons/__init__.py:19 psychopy/experiment/components/joyButtons/__init__.py:90
5375
5374
  #: psychopy/experiment/components/keyboard/__init__.py:24 psychopy/experiment/components/keyboard/__init__.py:116
@@ -5458,7 +5457,7 @@ msgstr "Joystick: consultar posición y botones del joystick"
5458
5457
  msgid ""
5459
5458
  "How often should the joystick state (x,y,buttons) be stored? On every video frame, every click or just at the end of the Routine?"
5460
5459
  msgstr ""
5461
- "¿Con qué frecuencia se debe almacenar el estado del joystick (botones x,y)? En cada vídeocuadro, ¿cada clic o simplemente al "
5460
+ "¿Con qué frecuencia se debe almacenar el estado del joystick (botones x,y)? En cada cuadro del video, ¿cada clic o simplemente al "
5462
5461
  "final de la rutina?"
5463
5462
 
5464
5463
  #: psychopy/experiment/components/joystick/__init__.py:67 psychopy/experiment/components/mouse/__init__.py:65
@@ -6726,7 +6725,7 @@ msgstr "Puerto GazePoint"
6726
6725
 
6727
6726
  #: psychopy/experiment/components/settings/__init__.py:508 psychopy/experiment/components/settings/__init__.py:578
6728
6727
  msgid "Eye tracker model."
6729
- msgstr "Modelo de seguimiento ocular."
6728
+ msgstr "Modelo de Rastreador Ocular."
6730
6729
 
6731
6730
  #: psychopy/experiment/components/settings/__init__.py:509 psychopy/experiment/components/settings/__init__.py:579
6732
6731
  msgid "Model name"
@@ -6754,7 +6753,7 @@ msgstr "Seleccione con ojo(s) para rastrear."
6754
6753
 
6755
6754
  #: psychopy/experiment/components/settings/__init__.py:529
6756
6755
  msgid "Track eyes"
6757
- msgstr "Ojos de seguimiento"
6756
+ msgstr "Rastrear ojos"
6758
6757
 
6759
6758
  #: psychopy/experiment/components/settings/__init__.py:535
6760
6759
  msgid "Filter eye sample data live, as it is streamed to the driving device. This may reduce the sampling speed."
@@ -6776,11 +6775,11 @@ msgstr "Filtrado de muestra guardada"
6776
6775
 
6777
6776
  #: psychopy/experiment/components/settings/__init__.py:551
6778
6777
  msgid "Track Pupil-CR or Pupil only."
6779
- msgstr "Seguimiento de Pupil-CR o Pupil solamente."
6778
+ msgstr "Rastreo de Pupila-CR o Pupila solamente."
6780
6779
 
6781
6780
  #: psychopy/experiment/components/settings/__init__.py:552
6782
6781
  msgid "Pupil tracking mode"
6783
- msgstr "Modo de seguimiento de pupila"
6782
+ msgstr "Modo de rastreo de pupila"
6784
6783
 
6785
6784
  #: psychopy/experiment/components/settings/__init__.py:558
6786
6785
  msgid "Algorithm used to detect the pupil center."
@@ -23,7 +23,7 @@ msgstr ""
23
23
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:12
24
24
  #, python-brace-format
25
25
  msgid "Your stimulus size exceeds the {dimension} dimension of your window."
26
- msgstr "El tamaño de su estímulo excede la dimensión{dimension} de su ventana."
26
+ msgstr "El tamaño de su estímulo excede la dimensión {dimension} de su ventana."
27
27
 
28
28
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:16
29
29
  #, python-brace-format
@@ -145,8 +145,7 @@ msgstr ""
145
145
 
146
146
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:94
147
147
  msgid "Experiment includes components or routines which use eyetracking, but no eye tracker is configured."
148
- msgstr ""
149
- "El experimento incluye componentes o rutinas que utilizan seguimiento ocular, pero ningún rastreador ocular se ha configurado."
148
+ msgstr "El experimento incluye componentes o rutinas que utilizan rastreo ocular, pero ningún rastreador ocular se ha configurado."
150
149
 
151
150
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:98
152
151
  #, python-brace-format
@@ -170,15 +169,15 @@ msgstr "Los Eyetrackers de {brand} no admiten ritmo manual"
170
169
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:108
171
170
  msgid "Window mode is set to be windowed, but eyetracking requires the window to be full screen."
172
171
  msgstr ""
173
- "El modo de ventana está configurado para ser en ventana, pero el seguimiento ocular requiere que la ventana sea pantalla completa."
172
+ "El modo de ventana está configurado para ser en ventana, pero el rastreo ocular requiere que la ventana sea pantalla completa."
174
173
 
175
174
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:112
176
175
  msgid "A monitor config is required for accurate eyetracking measurements, but none was found."
177
- msgstr "Se requiere una configuración de monitor para mediciones precisas de seguimiento ocular, pero ninguna ha sido encontrada."
176
+ msgstr "Se requiere una configuración de monitor para mediciones precisas de rastreo ocular, pero ninguna ha sido encontrada."
178
177
 
179
178
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:116
180
179
  msgid "Eye tracker experiments should use 'ioHub' as the Input -> Keyboard Backend setting"
181
- msgstr "Los experimentos de seguimiento ocular deben usar 'ioHub' como entrada -> Backend del tecladoconfiguración"
180
+ msgstr "Los experimentos de rastreo ocular deben usar 'ioHub' como entrada -> Configuración del Backend del teclado"
182
181
 
183
182
  #: psychopy/alerts/alertsCatalogue/alertmsg.py:120
184
183
  #, python-brace-format
@@ -1472,7 +1471,7 @@ msgstr "Formateando"
1472
1471
 
1473
1472
  #: psychopy/app/builder/localizedStrings.py:39
1474
1473
  msgid "Eyetracking"
1475
- msgstr "Seguimiento ocular"
1474
+ msgstr "Rastreo ocular"
1476
1475
 
1477
1476
  #: psychopy/app/builder/localizedStrings.py:40
1478
1477
  msgid "Target"
@@ -5367,7 +5366,7 @@ msgstr "Botones permitidos"
5367
5366
  #: psychopy/experiment/components/joyButtons/__init__.py:17 psychopy/experiment/components/joyButtons/__init__.py:74
5368
5367
  #: psychopy/experiment/components/keyboard/__init__.py:22 psychopy/experiment/components/keyboard/__init__.py:100
5369
5368
  msgid "Store"
5370
- msgstr "Tienda"
5369
+ msgstr "Almacenar"
5371
5370
 
5372
5371
  #: psychopy/experiment/components/joyButtons/__init__.py:19 psychopy/experiment/components/joyButtons/__init__.py:90
5373
5372
  #: psychopy/experiment/components/keyboard/__init__.py:24 psychopy/experiment/components/keyboard/__init__.py:116
@@ -5456,7 +5455,7 @@ msgstr "Joystick: consultar posición y botones del joystick"
5456
5455
  msgid ""
5457
5456
  "How often should the joystick state (x,y,buttons) be stored? On every video frame, every click or just at the end of the Routine?"
5458
5457
  msgstr ""
5459
- "¿Con qué frecuencia se debe almacenar el estado del joystick (botones x,y)? En cada vídeocuadro, ¿cada clic o simplemente al "
5458
+ "¿Con qué frecuencia se debe almacenar el estado del joystick (botones x,y)? En cada cuadro del video, ¿cada clic o simplemente al "
5460
5459
  "final de la rutina?"
5461
5460
 
5462
5461
  #: psychopy/experiment/components/joystick/__init__.py:67 psychopy/experiment/components/mouse/__init__.py:65
@@ -6724,7 +6723,7 @@ msgstr "Puerto GazePoint"
6724
6723
 
6725
6724
  #: psychopy/experiment/components/settings/__init__.py:508 psychopy/experiment/components/settings/__init__.py:578
6726
6725
  msgid "Eye tracker model."
6727
- msgstr "Modelo de seguimiento ocular."
6726
+ msgstr "Modelo de Rastreador Ocular."
6728
6727
 
6729
6728
  #: psychopy/experiment/components/settings/__init__.py:509 psychopy/experiment/components/settings/__init__.py:579
6730
6729
  msgid "Model name"
@@ -6752,7 +6751,7 @@ msgstr "Seleccione con ojo(s) para rastrear."
6752
6751
 
6753
6752
  #: psychopy/experiment/components/settings/__init__.py:529
6754
6753
  msgid "Track eyes"
6755
- msgstr "Ojos de seguimiento"
6754
+ msgstr "Rastrear ojos"
6756
6755
 
6757
6756
  #: psychopy/experiment/components/settings/__init__.py:535
6758
6757
  msgid "Filter eye sample data live, as it is streamed to the driving device. This may reduce the sampling speed."
@@ -6774,11 +6773,11 @@ msgstr "Filtrado de muestra guardada"
6774
6773
 
6775
6774
  #: psychopy/experiment/components/settings/__init__.py:551
6776
6775
  msgid "Track Pupil-CR or Pupil only."
6777
- msgstr "Seguimiento de Pupil-CR o Pupil solamente."
6776
+ msgstr "Rastreo de Pupila-CR o Pupila solamente."
6778
6777
 
6779
6778
  #: psychopy/experiment/components/settings/__init__.py:552
6780
6779
  msgid "Pupil tracking mode"
6781
- msgstr "Modo de seguimiento de pupila"
6780
+ msgstr "Modo de rastreo de pupila"
6782
6781
 
6783
6782
  #: psychopy/experiment/components/settings/__init__.py:558
6784
6783
  msgid "Algorithm used to detect the pupil center."
psychopy/data/trial.py CHANGED
@@ -1070,6 +1070,15 @@ class TrialHandler2(_BaseTrialHandler):
1070
1070
 
1071
1071
  next = __next__ # allows user to call without a loop `val = trials.next()`
1072
1072
 
1073
+ @property
1074
+ def thisIndex(self):
1075
+ if self.thisTrial is None:
1076
+ if len(self.elapsedTrials):
1077
+ return self.elapsedTrials[-1].thisIndex
1078
+ else:
1079
+ return -1
1080
+ return self.thisTrial.thisIndex
1081
+
1073
1082
  @property
1074
1083
  def thisN(self):
1075
1084
  if self.thisTrial is None:
@@ -1108,7 +1117,7 @@ class TrialHandler2(_BaseTrialHandler):
1108
1117
  # start off at 0 trial
1109
1118
  thisTrialN = 0
1110
1119
  thisN = 0
1111
- thisRepN = 0
1120
+ thisRepN = -1
1112
1121
  # empty array to store indices once taken
1113
1122
  prevIndices = []
1114
1123
  # empty array to store remaining indices
@@ -274,6 +274,17 @@ class MovieComponent(BaseVisualComponent):
274
274
  """
275
275
  buff.writeIndented("\n")
276
276
  buff.writeIndented("# *%s* updates\n" % self.params['name'])
277
+
278
+ # set parameters that need updating every frame
279
+ # do any params need updating? (this method inherited from _base)
280
+ if self.checkNeedToUpdate('set every frame'):
281
+ code = "if %(name)s.status == STARTED: # only update if being drawn\n" % self.params
282
+ buff.writeIndented(code)
283
+
284
+ buff.setIndentLevel(+1, relative=True) # to enter the if block
285
+ self.writeParamUpdates(buff, 'set every frame')
286
+ buff.setIndentLevel(-1, relative=True) # to exit the if block
287
+
277
288
  # writes an if statement to determine whether to draw etc
278
289
  indented = self.writeStartTestCode(buff)
279
290
  if indented:
@@ -286,7 +297,8 @@ class MovieComponent(BaseVisualComponent):
286
297
  # because of the 'if' statement of the time test
287
298
  buff.setIndentLevel(-indented, relative=True)
288
299
 
289
- indented = self.writeStopTestCode(buff)
300
+ # write code for stopping
301
+ indented = self.writeStopTestCode(buff, extra=" or %(name)s.isFinished")
290
302
  if indented:
291
303
  code = (
292
304
  "%(name)s.setAutoDraw(False)\n"
@@ -296,15 +308,7 @@ class MovieComponent(BaseVisualComponent):
296
308
  buff.writeIndentedLines(code % self.params)
297
309
  # to get out of the if statement
298
310
  buff.setIndentLevel(-indented, relative=True)
299
- # set parameters that need updating every frame
300
- # do any params need updating? (this method inherited from _base)
301
- if self.checkNeedToUpdate('set every frame'):
302
- code = "if %(name)s.status == STARTED: # only update if being drawn\n" % self.params
303
- buff.writeIndented(code)
304
311
 
305
- buff.setIndentLevel(+1, relative=True) # to enter the if block
306
- self.writeParamUpdates(buff, 'set every frame')
307
- buff.setIndentLevel(-1, relative=True) # to exit the if block
308
312
  # do force end of trial code
309
313
  if self.params['forceEndRoutine'].val is True:
310
314
  code = ("if %s.isFinished: # force-end the Routine\n"
@@ -5,6 +5,7 @@
5
5
  # Distributed under the terms of the GNU General Public License (GPL).
6
6
 
7
7
  import sys
8
+ import platform
8
9
  from .errors import print2err, printExceptionDetailsToStdErr
9
10
  from .util import module_directory
10
11
 
@@ -20,13 +21,17 @@ def _localFunc():
20
21
 
21
22
  IOHUB_DIRECTORY = module_directory(_localFunc)
22
23
 
23
- _DATA_STORE_AVAILABLE = False
24
24
  try:
25
25
  import tables
26
26
  _DATA_STORE_AVAILABLE = True
27
- except ImportError:
27
+ except ModuleNotFoundError:
28
28
  print2err('WARNING: pytables package not found. ',
29
- 'ioHub hdf5 datastore functionality will be disabled.')
29
+ 'ioHub hdf5 datastore functionality will be disabled.')
30
+ _DATA_STORE_AVAILABLE = False
31
+ except ImportError:
32
+ print2err('WARNING: pytables package failed to load. ',
33
+ 'ioHub hdf5 datastore functionality will be disabled.')
34
+ _DATA_STORE_AVAILABLE = False
30
35
  except Exception:
31
36
  printExceptionDetailsToStdErr()
32
37
 
psychopy/tests/.DS_Store CHANGED
Binary file
@@ -1,16 +1,16 @@
1
- trialType,thisN,thisTrialN,thisRepN,resp,rand
2
- 1,0,0,1,resp1,0.543404942
3
- 2,1,1,1,resp2,0.278369385
4
- 4,2,2,1,resp4,0.424517591
5
- 3,3,3,1,resp3,0.844776132
6
- 0,4,4,1,resp0,0.004718856
7
- 2,5,0,2,resp2,0.121569121
8
- 4,6,1,2,resp4,0.670749085
9
- 1,7,2,2,resp1,0.825852755
10
- 3,8,3,2,resp3,0.13670659
11
- 0,9,4,2,resp0,0.575093329
12
- 3,10,0,3,resp3,0.891321954
13
- 0,11,1,3,resp0,0.209202122
14
- 4,12,2,3,resp4,0.18532822
15
- 1,13,3,3,resp1,0.10837689
16
- 2,14,4,3,resp2,0.219697493
1
+ trialType,thisN,thisTrialN,thisRepN,resp,rand
2
+ 1,0,0,0,resp1,0.543404942
3
+ 2,1,1,0,resp2,0.278369385
4
+ 4,2,2,0,resp4,0.424517591
5
+ 3,3,3,0,resp3,0.844776132
6
+ 0,4,4,0,resp0,0.004718856
7
+ 2,5,0,1,resp2,0.121569121
8
+ 4,6,1,1,resp4,0.670749085
9
+ 1,7,2,1,resp1,0.825852755
10
+ 3,8,3,1,resp3,0.13670659
11
+ 0,9,4,1,resp0,0.575093329
12
+ 3,10,0,2,resp3,0.891321954
13
+ 0,11,1,2,resp0,0.209202122
14
+ 4,12,2,2,resp4,0.18532822
15
+ 1,13,3,2,resp1,0.10837689
16
+ 2,14,4,2,resp2,0.219697493
@@ -28,6 +28,26 @@ class TestTrialHandler2:
28
28
 
29
29
  def teardown_class(self):
30
30
  shutil.rmtree(self.temp_dir)
31
+
32
+ def test_th1_indexing_unchanged(self):
33
+ """
34
+ Checks that indexing style is the same for TrialHandler2 as TrialHandler
35
+ """
36
+ # make both trial handlers
37
+ th1 = data.trial.TrialHandler(self.conditions, nReps=3, method="sequential")
38
+ th2 = data.trial.TrialHandler2(self.conditions, nReps=3, method="sequential")
39
+ # start a trials loop
40
+ for n in range(9):
41
+ # iterate trial
42
+ th1.next()
43
+ th2.next()
44
+ # make sure thisN is the same
45
+ for attr in ("thisN", "thisIndex", "thisRepN", "thisTrialN"):
46
+ assert getattr(th1, attr) == getattr(th2, attr), (
47
+ f"Expected `.{attr}` to be the same between TrialHandler and TrialHandler2, "
48
+ f"but on iteration {n} got {getattr(th1, attr)} for TrialHandler and "
49
+ f"{getattr(th2, attr)} for TrialHandler2."
50
+ )
31
51
 
32
52
  def test_underscores_in_datatype_names2(self):
33
53
  trials = data.TrialHandler2([], 1, autoLog=False)
@@ -299,12 +319,12 @@ class TestTrialHandler2:
299
319
  t.__next__()
300
320
  # define array of answers
301
321
  answers = [
302
- {'thisN': 5, 'thisRepN': 2, 'thisTrialN': 2, 'thisIndex': 2},
303
- {'thisN': 1, 'thisRepN': 1, 'thisTrialN': 1, 'thisIndex': 1},
304
- {'thisN': 2, 'thisRepN': 1, 'thisTrialN': 2, 'thisIndex': 2},
305
- {'thisN': 3, 'thisRepN': 2, 'thisTrialN': 0, 'thisIndex': 0},
306
- {'thisN': 4, 'thisRepN': 2, 'thisTrialN': 1, 'thisIndex': 1},
307
- {'thisN': 5, 'thisRepN': 2, 'thisTrialN': 2, 'thisIndex': 2},
322
+ {'thisN': 5, 'thisRepN': 1, 'thisTrialN': 2, 'thisIndex': 2},
323
+ {'thisN': 1, 'thisRepN': 0, 'thisTrialN': 1, 'thisIndex': 1},
324
+ {'thisN': 2, 'thisRepN': 0, 'thisTrialN': 2, 'thisIndex': 2},
325
+ {'thisN': 3, 'thisRepN': 1, 'thisTrialN': 0, 'thisIndex': 0},
326
+ {'thisN': 4, 'thisRepN': 1, 'thisTrialN': 1, 'thisIndex': 1},
327
+ {'thisN': 5, 'thisRepN': 1, 'thisTrialN': 2, 'thisIndex': 2},
308
328
  None,
309
329
  ]
310
330
  # get future trials
@@ -333,16 +353,16 @@ class TestTrialHandler2:
333
353
  # some values to move forwards/backwards by and the values at that point
334
354
  cases = [
335
355
  # move backwards and forwards and check we land in the right place
336
- (+4, {'thisN': 4, 'thisRepN': 2, 'thisTrialN': 1, 'thisIndex': 1}),
337
- (-1, {'thisN': 3, 'thisRepN': 2, 'thisTrialN': 0, 'thisIndex': 0}),
338
- (-3, {'thisN': 0, 'thisRepN': 1, 'thisTrialN': 0, 'thisIndex': 0}),
339
- (+2, {'thisN': 2, 'thisRepN': 1, 'thisTrialN': 2, 'thisIndex': 2}),
340
- (-1, {'thisN': 1, 'thisRepN': 1, 'thisTrialN': 1, 'thisIndex': 1}),
341
- (+2, {'thisN': 3, 'thisRepN': 2, 'thisTrialN': 0, 'thisIndex': 0}),
356
+ (+4, {'thisN': 4, 'thisRepN': 1, 'thisTrialN': 1, 'thisIndex': 1}),
357
+ (-1, {'thisN': 3, 'thisRepN': 1, 'thisTrialN': 0, 'thisIndex': 0}),
358
+ (-3, {'thisN': 0, 'thisRepN': 0, 'thisTrialN': 0, 'thisIndex': 0}),
359
+ (+2, {'thisN': 2, 'thisRepN': 0, 'thisTrialN': 2, 'thisIndex': 2}),
360
+ (-1, {'thisN': 1, 'thisRepN': 0, 'thisTrialN': 1, 'thisIndex': 1}),
361
+ (+2, {'thisN': 3, 'thisRepN': 1, 'thisTrialN': 0, 'thisIndex': 0}),
342
362
  # move back past the start and check we land at the start
343
- (-10, {'thisN': 0, 'thisRepN': 1, 'thisTrialN': 0, 'thisIndex': 0}),
363
+ (-10, {'thisN': 0, 'thisRepN': 0, 'thisTrialN': 0, 'thisIndex': 0}),
344
364
  # move forwards past the end and check we land at the end
345
- (+10, {'thisN': 5, 'thisRepN': 2, 'thisTrialN': 2, 'thisIndex': 2}),
365
+ (+10, {'thisN': 5, 'thisRepN': 1, 'thisTrialN': 2, 'thisIndex': 2}),
346
366
  ]
347
367
  # iterate through cases
348
368
  for inc, answer in cases:
psychopy/visual/.DS_Store CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: psychopy
3
- Version: 2024.2.0
3
+ Version: 2024.2.1
4
4
  Summary: PsychoPy provides easy, precise, flexible experiments in behavioural sciences
5
5
  Author-Email: Open Science Tools Ltd <support@opensciencetools.org>
6
6
  Maintainer-Email: Open Science Tools Ltd <support@opensciencetools.org>
@@ -71,9 +71,7 @@ Requires-Dist: pyobjc; platform_system == "Darwin"
71
71
  Requires-Dist: zeroconf; platform_system == "Darwin"
72
72
  Requires-Dist: python-xlib; platform_system == "Linux"
73
73
  Requires-Dist: distro; platform_system == "Linux"
74
- Requires-Dist: tables<3.9; python_version < "3.9"
75
- Requires-Dist: tables; python_version >= "3.9"
76
- Requires-Dist: blosc2<2.2.8; python_version < "3.9"
74
+ Requires-Dist: tables!=3.9.2
77
75
  Requires-Dist: packaging>=24.1
78
76
  Requires-Dist: pytest>=6.2.5; extra == "tests"
79
77
  Requires-Dist: pytest-codecov; extra == "tests"
@@ -110,6 +108,12 @@ Description-Content-Type: text/markdown
110
108
 
111
109
  ---
112
110
 
111
+ **Announcement!!**
112
+
113
+ We are excited to announce that PsychoPy will be hosting a 3-day in-person code-sprint at the University of Nottingham from 15-17 April 2024. The code sprint will be an opportunity for us to get together in person and improve PsychoPy/JS. Anyone who would like to attend will need to fill out the [online application](https://run.pavlovia.org/pavlovia/survey/?surveyId=171ed328-d5ea-4819-83dc-9ba00ef5683b) by 31 January 2024. Those selected will be notified by the end of February.
114
+
115
+ ---
116
+
113
117
  PsychoPy is an open-source package for creating experiments in behavioral science. It aims to provide a single package that is:
114
118
 
115
119
  * precise enough for psychophysics