psychopy 2024.1.1__py3-none-any.whl → 2024.1.3__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 (96) hide show
  1. psychopy/__init__.py +2 -2
  2. psychopy/alerts/_alerts.py +6 -2
  3. psychopy/alerts/alertsCatalogue/alertmsg.py +15 -0
  4. psychopy/app/builder/dialogs/paramCtrls.py +4 -2
  5. psychopy/app/builder/localizedStrings.py +16 -4
  6. psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo +0 -0
  7. psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.mo +0 -0
  8. psychopy/app/locale/da_DK/LC_MESSAGE/messages.mo +0 -0
  9. psychopy/app/locale/de_DE/LC_MESSAGE/messages.mo +0 -0
  10. psychopy/app/locale/el_GR/LC_MESSAGE/messages.mo +0 -0
  11. psychopy/app/locale/en_NZ/LC_MESSAGE/messages.mo +0 -0
  12. psychopy/app/locale/en_US/LC_MESSAGE/messages.mo +0 -0
  13. psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo +0 -0
  14. psychopy/app/locale/fa_IR/LC_MESSAGE/messages.mo +0 -0
  15. psychopy/app/locale/fi_FI/LC_MESSAGE/messages.mo +0 -0
  16. psychopy/app/locale/fr_FR/LC_MESSAGE/messages.mo +0 -0
  17. psychopy/app/locale/he_IL/LC_MESSAGE/messages.mo +0 -0
  18. psychopy/app/locale/hi_IN/LC_MESSAGE/messages.mo +0 -0
  19. psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo +0 -0
  20. psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo +0 -0
  21. psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo +0 -0
  22. psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po +3548 -5422
  23. psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo +0 -0
  24. psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo +0 -0
  25. psychopy/app/locale/nl_NL/LC_MESSAGE/messages.mo +0 -0
  26. psychopy/app/locale/nn_NO/LC_MESSAGE/messages.mo +0 -0
  27. psychopy/app/locale/pl_PL/LC_MESSAGE/messages.mo +0 -0
  28. psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo +0 -0
  29. psychopy/app/locale/ro_RO/LC_MESSAGE/messages.mo +0 -0
  30. psychopy/app/locale/ru_RU/LC_MESSAGE/messages.mo +0 -0
  31. psychopy/app/locale/sv_SE/LC_MESSAGE/messages.mo +0 -0
  32. psychopy/app/locale/tr_TR/LC_MESSAGE/messages.mo +0 -0
  33. psychopy/app/locale/zh_CN/LC_MESSAGE/messages.mo +0 -0
  34. psychopy/app/locale/zh_TW/LC_MESSAGE/messages.mo +0 -0
  35. psychopy/app/plugin_manager/plugins.py +1 -1
  36. psychopy/app/preferencesDlg.py +2 -1
  37. psychopy/demos/builder/Hardware/EEG_parallel_component/EEG_triggers_parallel_comp.psyexp +552 -550
  38. psychopy/demos/builder/Hardware/EEG_serial_component/EEG_triggers_serial_comp.psyexp +572 -570
  39. psychopy/demos/coder/timing/timeByFrames.py +7 -1
  40. psychopy/experiment/components/_base.py +122 -0
  41. psychopy/experiment/components/aperture/__init__.py +6 -2
  42. psychopy/experiment/components/brush/__init__.py +3 -1
  43. psychopy/experiment/components/button/__init__.py +6 -2
  44. psychopy/experiment/components/buttonBox/__init__.py +2 -1
  45. psychopy/experiment/components/camera/__init__.py +13 -0
  46. psychopy/experiment/components/code/__init__.py +34 -1
  47. psychopy/experiment/components/form/formItems.xltx +0 -0
  48. psychopy/experiment/components/mouse/__init__.py +12 -0
  49. psychopy/experiment/components/polygon/__init__.py +14 -3
  50. psychopy/experiment/components/settings/__init__.py +4 -1
  51. psychopy/experiment/components/sound/__init__.py +1 -1
  52. psychopy/experiment/components/text/__init__.py +1 -1
  53. psychopy/experiment/params.py +17 -0
  54. psychopy/experiment/routines/_base.py +122 -0
  55. psychopy/experiment/routines/counterbalance/__init__.py +1 -1
  56. psychopy/hardware/button.py +4 -3
  57. psychopy/hardware/camera/__init__.py +6 -0
  58. psychopy/hardware/keyboard.py +8 -3
  59. psychopy/iohub/devices/eyetracker/hw/gazepoint/__init__.py +1 -1
  60. psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/__init__.py +1 -1
  61. psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/calibration.py +1 -1
  62. psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/eyetracker.py +1 -1
  63. psychopy/localization/generateTranslationTemplate.py +45 -19
  64. psychopy/localization/messages.pot +5049 -3418
  65. psychopy/preferences/Darwin.spec +2 -0
  66. psychopy/preferences/FreeBSD.spec +2 -0
  67. psychopy/preferences/Linux.spec +2 -0
  68. psychopy/preferences/Windows.spec +2 -0
  69. psychopy/preferences/baseNoArch.spec +2 -0
  70. psychopy/preferences/generateHints.py +2 -1
  71. psychopy/preferences/hints.py +118 -97
  72. psychopy/tests/test_experiment/test_components/__init__.py +1 -1
  73. psychopy/tests/test_experiment/test_components/{test_ButtonBox.py → test_ButtonBoxComponent.py} +9 -27
  74. psychopy/tests/test_experiment/test_components/{test_Code.py → test_CodeComponent.py} +8 -20
  75. psychopy/tests/test_experiment/test_components/test_GratingComponent.py +7 -0
  76. psychopy/tests/test_experiment/test_components/test_ImageComponent.py +8 -0
  77. psychopy/tests/test_experiment/test_components/{test_Mouse.py → test_MouseComponent.py} +44 -57
  78. psychopy/tests/test_experiment/test_components/{test_Polygon.py → test_PolygonComponent.py} +9 -25
  79. psychopy/tests/test_experiment/test_components/{test_ResourceManager.py → test_ResourceManagerComponent.py} +3 -13
  80. psychopy/tests/test_experiment/test_components/{test_Settings.py → test_SettingsComponent.py} +1 -3
  81. psychopy/tests/test_experiment/test_components/{test_Static.py → test_StaticComponent.py} +3 -12
  82. psychopy/tests/test_experiment/test_components/test_all_components.py +8 -66
  83. psychopy/tests/test_experiment/test_components/test_base_components.py +212 -125
  84. psychopy/tools/fontmanager.py +1 -1
  85. psychopy/tools/versionchooser.py +1 -1
  86. psychopy/visual/noise.py +9 -0
  87. psychopy/visual/radial.py +8 -0
  88. psychopy/visual/secondorder.py +9 -0
  89. psychopy/visual/textbox2/textbox2.py +19 -21
  90. {psychopy-2024.1.1.dist-info → psychopy-2024.1.3.dist-info}/METADATA +1 -1
  91. {psychopy-2024.1.1.dist-info → psychopy-2024.1.3.dist-info}/RECORD +95 -66
  92. {psychopy-2024.1.1.dist-info → psychopy-2024.1.3.dist-info}/WHEEL +1 -1
  93. psychopy/tests/test_experiment/test_components/test_Image.py +0 -24
  94. {psychopy-2024.1.1.dist-info → psychopy-2024.1.3.dist-info}/entry_points.txt +0 -0
  95. {psychopy-2024.1.1.dist-info → psychopy-2024.1.3.dist-info}/licenses/AUTHORS.md +0 -0
  96. {psychopy-2024.1.1.dist-info → psychopy-2024.1.3.dist-info}/licenses/LICENSE +0 -0
psychopy/__init__.py CHANGED
@@ -12,14 +12,14 @@
12
12
  import os
13
13
  import sys
14
14
 
15
- __version__ = '2024.1.1'
15
+ __version__ = '2024.1.3'
16
16
  __license__ = 'GPL v3'
17
17
  __author__ = 'Open Science Tools Ltd'
18
18
  __author_email__ = 'support@opensciencetools.org'
19
19
  __maintainer_email__ = 'support@opensciencetools.org'
20
20
  __url__ = 'https://www.psychopy.org/'
21
21
  __download_url__ = 'https://github.com/psychopy/psychopy/releases/'
22
- __git_sha__ = '5b4d38cde'
22
+ __git_sha__ = 'a2e6ccdec'
23
23
  __build_platform__ = 'n/a'
24
24
 
25
25
  __all__ = ["gui", "misc", "visual", "core",
@@ -118,10 +118,14 @@ class AlertEntry:
118
118
  else:
119
119
  self.name = None
120
120
 
121
+ # _translate(catalog.alert[code]['msg']) works, but string literals
122
+ # in _translate() (i.e., 'msg' in this case) cause false detection
123
+ # by pybabel.
124
+ msg = catalog.alert[code]['msg']
121
125
  if strFields:
122
- self.msg = _translate(catalog.alert[code]['msg']).format(**strFields)
126
+ self.msg = _translate(msg).format(**strFields)
123
127
  else:
124
- self.msg = _translate(catalog.alert[code]['msg'])
128
+ self.msg = _translate(msg)
125
129
 
126
130
  if trace:
127
131
  self.trace = ''.join(traceback.format_exception(
@@ -47,6 +47,10 @@ _translate(
47
47
  _translate(
48
48
  "Component {component} has stop time set as a duration, but doesn't have a start time")
49
49
 
50
+ # Alert 4125
51
+ _translate(
52
+ "Microphone component `{name}` given blank stop time, using max duration allowed by buffer size ({stopVal}s).")
53
+
50
54
  # Alert 4205
51
55
  _translate(
52
56
  "Python Syntax Error in '{codeTab}' tab. See '{code}' on line number {lineNumber} of the '{codeTab}' tab.")
@@ -127,6 +131,13 @@ _translate(
127
131
  _translate(
128
132
  "Chosen transcriber '{engine}' requires an API key, please supply one in Preferences.")
129
133
 
134
+ # Alert 4705
135
+ _translate(
136
+ "Column name '{param}' in conditions file already exists as a variable in this experiment ({category}).")
137
+
138
+ # Alert 4710
139
+ _translate("Column name '{param}' is likely to cause name clashes. {msg}.")
140
+
130
141
  # Alert 5055
131
142
  _translate(
132
143
  "Device parameter of microphone component \"{name}\" will not be used online.")
@@ -135,6 +146,10 @@ _translate(
135
146
  _translate(
136
147
  "The file you are attempting to run does not seem to exist, the full path supplied to Runner was {path}")
137
148
 
149
+ # Alert 7105
150
+ _translate(
151
+ "Component {name} comes from the plugin {plugin}, which is either not installed or not activated.")
152
+
138
153
  # Alert 8105
139
154
  _translate(
140
155
  "Color space attribute `.{colorSpaceAttrib}` is no longer in use, as colors are no longer tied to one space.")
@@ -362,9 +362,9 @@ class ChoiceCtrl(wx.Choice, _ValidatorMixin, _HideMixin):
362
362
  _labels = {}
363
363
  for i, value in enumerate(choices):
364
364
  if i < len(labels):
365
- _labels[value] = labels[i]
365
+ _labels[value] = _translate(labels[i]) if labels[i] != '' else ''
366
366
  else:
367
- _labels[value] = value
367
+ _labels[value] = _translate(value) if value != '' else ''
368
368
  labels = _labels
369
369
  # store labels and choices
370
370
  self.labels = labels
@@ -995,6 +995,8 @@ class TableCtrl(wx.TextCtrl, _ValidatorMixin, _HideMixin, _FileMixin):
995
995
  thisType = frame.component.type
996
996
  elif hasattr(frame, "routine"):
997
997
  thisType = frame.routine.type
998
+ elif hasattr(frame, "type"):
999
+ thisType = frame.type
998
1000
  else:
999
1001
  thisType = "None"
1000
1002
  # open type specific template, or blank
@@ -26,6 +26,10 @@ _localizedCategories = {
26
26
  'Dots': _translate('Dots'),
27
27
  'Grating': _translate('Grating'),
28
28
  'Advanced': _translate('Advanced'),
29
+ 'Favorites': _translate('Favorites'),
30
+ 'Stimuli': _translate('Stimuli'),
31
+ 'Responses': _translate('Responses'),
32
+ 'I/O': _translate('I/O'),
29
33
  'Custom': _translate('Custom'),
30
34
  'Carrier': _translate('Carrier'),
31
35
  'Envelope': _translate('Envelope'),
@@ -41,7 +45,8 @@ _localizedCategories = {
41
45
  'Animation':_translate('Animation'),
42
46
  'Transcription':_translate('Transcription'),
43
47
  'Timing':_translate('Timing'),
44
- 'Playback':_translate('Playback')
48
+ 'Playback':_translate('Playback'),
49
+ 'Window':_translate('Window')
45
50
  }
46
51
 
47
52
  _localizedDialogs = {
@@ -86,6 +91,11 @@ _localizedDialogs = {
86
91
  'pix': 'pix', 'deg': 'deg', 'cm': 'cm',
87
92
  'norm': 'norm', 'height': 'height',
88
93
  'degFlat': 'degFlat', 'degFlatPos':'degFlatPos',
94
+ # background image:
95
+ 'cover':_translate('cover'),
96
+ 'contain':_translate('contain'),
97
+ 'fill':_translate('fill'),
98
+ 'scale-down':_translate('scale-down'),
89
99
  # anchor
90
100
  'center': _translate('center'),
91
101
  'top-center': _translate('top-center'),
@@ -107,7 +117,7 @@ _localizedDialogs = {
107
117
  'add': _translate('add'),
108
118
  'avg': _translate('average'),
109
119
  'average (no FBO)': _translate('average (no FBO)'), # blend mode
110
- 'use prefs': _translate('use preferences'),
120
+ 'use prefs': _translate('use prefs'),
111
121
  'on Sync': _translate('on Sync'), # export HTML
112
122
  'on Save': _translate('on Save'),
113
123
  'manually': _translate('manually'),
@@ -123,6 +133,9 @@ _localizedDialogs = {
123
133
  'data': _translate('data'),
124
134
  'warning': _translate('warning'),
125
135
  'error': _translate('error'),
136
+ # Clock format:
137
+ 'Experiment start':_translate('Experiment start'),
138
+ 'Wall clock':_translate('Wall clock'),
126
139
  # Experiment info dialog:
127
140
  'Field': _translate('Field'),
128
141
  'Default': _translate('Default'),
@@ -155,6 +168,7 @@ _localizedDialogs = {
155
168
  # Form
156
169
  'rows': _translate('rows'),
157
170
  'columns': _translate('columns'),
171
+ 'custom...': _translate('custom...'),
158
172
  # Variable component
159
173
  'first': _translate('first'),
160
174
  'last': _translate('last'),
@@ -199,8 +213,6 @@ _localizedDialogs = {
199
213
  'visible': _translate('visible'),
200
214
  'scroll': _translate('scroll'),
201
215
  'hidden': _translate('hidden'),
202
- # Form
203
- 'custom...': _translate('custom...')
204
216
  }
205
217
 
206
218