psychopy 2024.1.2__py3-none-any.whl → 2024.1.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.
Potentially problematic release.
This version of psychopy might be problematic. Click here for more details.
- psychopy/__init__.py +2 -2
- psychopy/app/builder/localizedStrings.py +11 -9
- psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po +359 -346
- psychopy/app/plugin_manager/plugins.py +7 -0
- psychopy/demos/builder/Feature Demos/progress/progressBar.psyexp +4 -4
- psychopy/experiment/components/buttonBox/__init__.py +21 -12
- psychopy/experiment/components/mouse/__init__.py +12 -0
- psychopy/experiment/components/progress/__init__.py +1 -1
- psychopy/experiment/routines/counterbalance/__init__.py +1 -1
- psychopy/experiment/routines/photodiodeValidator/__init__.py +1 -1
- psychopy/hardware/keyboard.py +1 -2
- psychopy/tests/test_experiment/test_components/__init__.py +1 -1
- psychopy/tests/test_experiment/test_components/{test_ButtonBox.py → test_ButtonBoxComponent.py} +9 -27
- psychopy/tests/test_experiment/test_components/{test_Code.py → test_CodeComponent.py} +8 -20
- psychopy/tests/test_experiment/test_components/test_GratingComponent.py +7 -0
- psychopy/tests/test_experiment/test_components/test_ImageComponent.py +8 -0
- psychopy/tests/test_experiment/test_components/{test_Mouse.py → test_MouseComponent.py} +44 -57
- psychopy/tests/test_experiment/test_components/{test_Polygon.py → test_PolygonComponent.py} +9 -25
- psychopy/tests/test_experiment/test_components/{test_ResourceManager.py → test_ResourceManagerComponent.py} +3 -13
- psychopy/tests/test_experiment/test_components/{test_Settings.py → test_SettingsComponent.py} +1 -3
- psychopy/tests/test_experiment/test_components/{test_Static.py → test_StaticComponent.py} +3 -12
- psychopy/tests/test_experiment/test_components/test_all_components.py +8 -66
- psychopy/tests/test_experiment/test_components/test_base_components.py +212 -125
- psychopy/tests/test_hardware/test_keyboard.py +153 -16
- psychopy/visual/progress.py +1 -1
- psychopy/web.py +5 -2
- {psychopy-2024.1.2.dist-info → psychopy-2024.1.4.dist-info}/METADATA +2 -2
- {psychopy-2024.1.2.dist-info → psychopy-2024.1.4.dist-info}/RECORD +33 -32
- {psychopy-2024.1.2.dist-info → psychopy-2024.1.4.dist-info}/WHEEL +1 -1
- psychopy/tests/test_experiment/test_components/test_Image.py +0 -24
- {psychopy-2024.1.2.dist-info → psychopy-2024.1.4.dist-info}/entry_points.txt +0 -0
- {psychopy-2024.1.2.dist-info → psychopy-2024.1.4.dist-info}/licenses/AUTHORS.md +0 -0
- {psychopy-2024.1.2.dist-info → psychopy-2024.1.4.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
from psychopy.hardware import keyboard
|
|
3
|
-
|
|
3
|
+
import pytest
|
|
4
4
|
import time
|
|
5
|
+
from psychopy import logging
|
|
5
6
|
|
|
6
7
|
|
|
7
|
-
class
|
|
8
|
-
|
|
8
|
+
class _TestBaseKeyboard:
|
|
9
|
+
"""
|
|
10
|
+
Tests for the general functionality which should exist across Keyboard backends.
|
|
11
|
+
"""
|
|
12
|
+
def testReceiveGeneratedKeypress(self):
|
|
13
|
+
"""
|
|
14
|
+
Test that `KeyboardDevice.receiveMessage` can receive and interpret a KeyPress object
|
|
15
|
+
correctly, even when that object isn't linked to a physical keypress.
|
|
16
|
+
"""
|
|
9
17
|
# list of events to fake, time to fake them and state of getKeys outputs afterwards
|
|
10
18
|
cases = [
|
|
11
19
|
{'val': "a", 't': 0.1, 'len': 1},
|
|
@@ -24,10 +32,7 @@ class _TestKeyboard:
|
|
|
24
32
|
"""
|
|
25
33
|
# skip this test on Linux (as MOP *is* slower due to having to use subprocess)
|
|
26
34
|
if sys.platform == "linux":
|
|
27
|
-
skip()
|
|
28
|
-
# delete test kb
|
|
29
|
-
backend = self.kb._backend
|
|
30
|
-
del self.kb
|
|
35
|
+
pytest.skip()
|
|
31
36
|
|
|
32
37
|
# array to store times
|
|
33
38
|
times = {}
|
|
@@ -36,38 +41,170 @@ class _TestKeyboard:
|
|
|
36
41
|
|
|
37
42
|
for mop in (True, False):
|
|
38
43
|
# make new keyboard with muteOutsidePsychopy set as desired
|
|
39
|
-
kb =
|
|
44
|
+
self.kb.muteOutsidePsychopy = mop
|
|
40
45
|
# start timer
|
|
41
46
|
start = time.time()
|
|
42
47
|
# make 10000 responses
|
|
43
48
|
for n in range(nResps):
|
|
44
|
-
kb.makeResponse(
|
|
49
|
+
self.kb.makeResponse(
|
|
45
50
|
code="a", tDown=0
|
|
46
51
|
)
|
|
47
52
|
# get time
|
|
48
53
|
times[mop] = time.time() - start
|
|
49
|
-
# delete keyboard
|
|
50
|
-
del kb
|
|
51
54
|
|
|
52
55
|
# work out average difference per-response
|
|
53
56
|
avg = (times[True] - times[False]) / nResps
|
|
54
57
|
# make sure average difference will still be less than a frame on high performance monitors
|
|
55
58
|
assert avg < 1/240
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
def teardown_method(self):
|
|
61
|
+
# clear any keypresses
|
|
62
|
+
self.kb.getKeys(clear=True)
|
|
63
|
+
# set mute outside psychopy back to False
|
|
64
|
+
self.kb.muteOutsidePsychopy = False
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class _MillikeyMixin:
|
|
68
|
+
"""
|
|
69
|
+
Mixin to add tests which use a Millikey device to generate keypresses. If no such device is
|
|
70
|
+
connected, these tests will all skip.
|
|
71
|
+
"""
|
|
72
|
+
# this attribute should be overwritten when setup_class is called
|
|
73
|
+
millikey = None
|
|
74
|
+
|
|
75
|
+
def setup_class(self):
|
|
76
|
+
"""
|
|
77
|
+
Create a serial object to interface with a Millikey device,
|
|
78
|
+
"""
|
|
79
|
+
from psychopy.hardware.serialdevice import SerialDevice
|
|
80
|
+
from psychopy.tools import systemtools as st
|
|
81
|
+
|
|
82
|
+
# systemtools only works on Windows so skip millikey-dependent tests on other OS's
|
|
83
|
+
if sys.platform != "win32":
|
|
84
|
+
return
|
|
59
85
|
|
|
86
|
+
# use systemtools to find millikey port
|
|
87
|
+
for profile in st.systemProfilerWindowsOS(classname="Ports", connected=True):
|
|
88
|
+
# identify by driver name
|
|
89
|
+
if "usbser.inf" not in profile['Driver Name']:
|
|
90
|
+
continue
|
|
91
|
+
# find "COM" in profile description
|
|
92
|
+
desc = profile['Device Description']
|
|
93
|
+
start = desc.find("COM") + 3
|
|
94
|
+
end = desc.find(")", start)
|
|
95
|
+
# if there's no reference to a COM port, skip
|
|
96
|
+
if -1 in (start, end):
|
|
97
|
+
continue
|
|
98
|
+
# get COM port number
|
|
99
|
+
num = desc[start:end]
|
|
100
|
+
# if we've got this far, create device
|
|
101
|
+
self.millikey = SerialDevice(f"COM{num}", baudrate=128000)
|
|
102
|
+
# stop looking once we've got one
|
|
103
|
+
break
|
|
60
104
|
|
|
61
|
-
|
|
105
|
+
def teardown_class(self):
|
|
106
|
+
"""
|
|
107
|
+
Close Millikey before finishing tests.
|
|
108
|
+
"""
|
|
109
|
+
if self.millikey is not None:
|
|
110
|
+
self.millikey.close()
|
|
111
|
+
|
|
112
|
+
def assertMillikey(self):
|
|
113
|
+
"""
|
|
114
|
+
Make sure a Millikey device is connected (and skip the current test if not)
|
|
115
|
+
"""
|
|
116
|
+
# if we didn't find a device, skip current test
|
|
117
|
+
if self.millikey is None:
|
|
118
|
+
pytest.skip()
|
|
119
|
+
|
|
120
|
+
def makeMillikeyKeypress(self, key, duration, delay=0):
|
|
121
|
+
"""
|
|
122
|
+
Send a trigger to the Millikey device telling to to press a particular key.
|
|
123
|
+
|
|
124
|
+
Parameters
|
|
125
|
+
----------
|
|
126
|
+
key : str
|
|
127
|
+
Key to press
|
|
128
|
+
duration : int
|
|
129
|
+
Duration (ms) of the keypress
|
|
130
|
+
delay : int
|
|
131
|
+
Delay (ms) before making the keypress
|
|
132
|
+
"""
|
|
133
|
+
# make sure we have a millikey device
|
|
134
|
+
self.assertMillikey()
|
|
135
|
+
# construct command (see https://blog.labhackers.com/?p=285)
|
|
136
|
+
cmd = "KGEN {} {} {}".format(key, duration, delay)
|
|
137
|
+
# send
|
|
138
|
+
self.millikey.sendMessage(cmd)
|
|
139
|
+
# read any resp1
|
|
140
|
+
return self.millikey.getResponse()
|
|
141
|
+
|
|
142
|
+
def testReceivePhysicalKeypress(self):
|
|
143
|
+
"""
|
|
144
|
+
Test that physical keypresses are detected.
|
|
145
|
+
|
|
146
|
+
Requires a Millikey device to run.
|
|
147
|
+
"""
|
|
148
|
+
self.makeMillikeyKeypress(key="a", duration=10, delay=10)
|
|
149
|
+
# get last message
|
|
150
|
+
resp = self.kb.getKeys()[-1]
|
|
151
|
+
# check whether the created press was received
|
|
152
|
+
assert resp.name == "a"
|
|
153
|
+
|
|
154
|
+
def testPhysicalKeypressTiming(self):
|
|
155
|
+
"""
|
|
156
|
+
Test that timing (tDown, rt, etc.) on KeyPress objects received via a physical key press
|
|
157
|
+
are correct.
|
|
158
|
+
|
|
159
|
+
Requires a Millikey device to run.
|
|
160
|
+
"""
|
|
161
|
+
# define tolerance (ms) for this test
|
|
162
|
+
tolerance = 4
|
|
163
|
+
# try a few times to make sure times aren't cumulative
|
|
164
|
+
for ans, dur, rt in [
|
|
165
|
+
("a", 123, 456),
|
|
166
|
+
("b", 456, 123),
|
|
167
|
+
("c", 123, 123),
|
|
168
|
+
("d", 456, 456),
|
|
169
|
+
]:
|
|
170
|
+
# reset keyboard clock
|
|
171
|
+
self.kb.clock.reset()
|
|
172
|
+
# wait for rt
|
|
173
|
+
time.sleep(rt / 1000)
|
|
174
|
+
# store start time
|
|
175
|
+
start = logging.defaultClock.getTime()
|
|
176
|
+
# make a keypress
|
|
177
|
+
self.makeMillikeyKeypress(key=ans, duration=dur)
|
|
178
|
+
# wait for press to finish
|
|
179
|
+
time.sleep(dur / 500)
|
|
180
|
+
# get last message
|
|
181
|
+
resp = self.kb.getKeys()[-1]
|
|
182
|
+
# check correct key
|
|
183
|
+
assert resp.name == ans
|
|
184
|
+
# check correct rt
|
|
185
|
+
assert abs(resp.rt - rt / 1000) <= tolerance / 1000
|
|
186
|
+
# check correct duration
|
|
187
|
+
assert abs(resp.duration - dur / 1000) <= tolerance / 1000
|
|
188
|
+
# check correct start time
|
|
189
|
+
assert abs(resp.tDown - start) <= tolerance / 1000
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
class TestIohubKeyboard(_TestBaseKeyboard, _MillikeyMixin):
|
|
62
193
|
def setup_method(self):
|
|
63
194
|
self.kb = keyboard.KeyboardDevice(backend="iohub", muteOutsidePsychopy=False)
|
|
64
195
|
|
|
65
196
|
|
|
66
|
-
class TestPtbKeyboard(
|
|
197
|
+
class TestPtbKeyboard(_TestBaseKeyboard, _MillikeyMixin):
|
|
67
198
|
def setup_method(self):
|
|
68
199
|
self.kb = keyboard.KeyboardDevice(backend="ptb", muteOutsidePsychopy=False)
|
|
69
200
|
|
|
201
|
+
def teardown_method(self):
|
|
202
|
+
self.kb.getKeys(clear=True)
|
|
203
|
+
|
|
70
204
|
|
|
71
|
-
class TestEventKeyboard(
|
|
205
|
+
class TestEventKeyboard(_TestBaseKeyboard, _MillikeyMixin):
|
|
72
206
|
def setup_method(self):
|
|
73
207
|
self.kb = keyboard.KeyboardDevice(backend="event", muteOutsidePsychopy=False)
|
|
208
|
+
|
|
209
|
+
def teardown_method(self):
|
|
210
|
+
self.kb.getKeys(clear=True)
|
psychopy/visual/progress.py
CHANGED
|
@@ -83,7 +83,7 @@ class Progress(shape.ShapeStim):
|
|
|
83
83
|
def __init__(
|
|
84
84
|
self, win, name="pb",
|
|
85
85
|
progress=0, direction="horizontal",
|
|
86
|
-
pos=(-.5, 0), size=(1, 0.1), anchor="center
|
|
86
|
+
pos=(-.5, 0), size=(1, 0.1), anchor="center-left", units=None,
|
|
87
87
|
barColor=False, backColor=False, borderColor=False, colorSpace=None,
|
|
88
88
|
lineWidth=1.5, opacity=1.0, ori=0.0,
|
|
89
89
|
depth=0, autoLog=None, autoDraw=False,
|
psychopy/web.py
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
# Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2024 Open Science Tools Ltd.
|
|
8
8
|
# Distributed under the terms of the GNU General Public License (GPL).
|
|
9
9
|
|
|
10
|
+
import pathlib
|
|
10
11
|
import sys
|
|
11
12
|
import socket
|
|
12
13
|
import re
|
|
@@ -115,8 +116,10 @@ def getPacFiles():
|
|
|
115
116
|
pacFiles.append(subkeys['AutoConfigURL'])
|
|
116
117
|
elif sys.platform == 'darwin':
|
|
117
118
|
import plistlib
|
|
118
|
-
|
|
119
|
-
|
|
119
|
+
prefs_loc = pathlib.Path('/Library/Preferences/SystemConfiguration/preferences.plist')
|
|
120
|
+
if prefs_loc.exists():
|
|
121
|
+
with open(prefs_loc, 'rb') as fp :
|
|
122
|
+
sysPrefs = plistlib.loads(fp.read())
|
|
120
123
|
networks = sysPrefs['NetworkServices']
|
|
121
124
|
# loop through each possible network (e.g. Ethernet, Airport...)
|
|
122
125
|
for network in list(networks.items()):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: psychopy
|
|
3
|
-
Version: 2024.1.
|
|
3
|
+
Version: 2024.1.4
|
|
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>
|
|
@@ -23,7 +23,7 @@ Requires-Dist: matplotlib
|
|
|
23
23
|
Requires-Dist: pyglet==1.4.11; platform_system == "Windows"
|
|
24
24
|
Requires-Dist: pyglet==1.5.27; platform_system != "Windows"
|
|
25
25
|
Requires-Dist: pillow>=9.4.0
|
|
26
|
-
Requires-Dist:
|
|
26
|
+
Requires-Dist: pyqt6
|
|
27
27
|
Requires-Dist: pandas>=1.5.3
|
|
28
28
|
Requires-Dist: questplus>=2023.1
|
|
29
29
|
Requires-Dist: openpyxl
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
psychopy-2024.1.
|
|
2
|
-
psychopy-2024.1.
|
|
3
|
-
psychopy-2024.1.
|
|
4
|
-
psychopy-2024.1.
|
|
5
|
-
psychopy-2024.1.
|
|
1
|
+
psychopy-2024.1.4.dist-info/METADATA,sha256=fDCS681nI8qyi-KWW8r5C0-9COz7XzsvfWVXnTU_dsY,6993
|
|
2
|
+
psychopy-2024.1.4.dist-info/WHEEL,sha256=vnE8JVcI2Wz7GRKorsPArnBdnW2SWKWGow5gu5tHlRU,90
|
|
3
|
+
psychopy-2024.1.4.dist-info/entry_points.txt,sha256=1LXVqRMSILrbEagrzpJDtmXyEPHX3GnpBJ85TEnxuoI,56
|
|
4
|
+
psychopy-2024.1.4.dist-info/licenses/AUTHORS.md,sha256=MmZf-GmSBscBa_z7ePoqYxbaGe6XOJnld_s6JIQGfS4,2395
|
|
5
|
+
psychopy-2024.1.4.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
6
6
|
psychopy/CHANGELOG.txt,sha256=bRyB9AEemUO4KBYhtBOIWOaXFmX9X3pHgMMF9QyeITA,203527
|
|
7
7
|
psychopy/LICENSE.txt,sha256=d2HeFOYbuXc2LZobE1EkFq3lYV5ge3YSaTL3y1r7KQc,746
|
|
8
8
|
psychopy/LICENSES.txt,sha256=T59KljDkUEEtd40IHWS-S0OTSjzqueGD6oNmgqpRIf0,3145
|
|
9
|
-
psychopy/__init__.py,sha256=
|
|
9
|
+
psychopy/__init__.py,sha256=Ui1G3d_Pxm-Ywc1gHe96JBFCD82M4IacVgxhkLGyHqU,2757
|
|
10
10
|
psychopy/alerts/__init__.py,sha256=buvC7HFn71FhIp1D4XGXkZLeNLk22uO9TSQsxLlYZqU,2178
|
|
11
11
|
psychopy/alerts/_alerts.py,sha256=IMHMXY1mzTCmlOYhHW0_Upb9oAcYzzTWe44BUNXj-ec,6120
|
|
12
12
|
psychopy/alerts/_errorHandler.py,sha256=JNkdx3OJv0PeAeARG09Rgne7dH-aGgUdxdoriDd4KW4,1501
|
|
@@ -919,7 +919,7 @@ psychopy/app/builder/dialogs/dlgsCode.py,sha256=e6L80eZjVidfL3UwCLsGpha1uBJkfi3g
|
|
|
919
919
|
psychopy/app/builder/dialogs/dlgsConditions.py,sha256=Q0yQaZCuWAMXKYboe4wiOrfFJxhr6rrhzvV00ZU16F8,29203
|
|
920
920
|
psychopy/app/builder/dialogs/findDlg.py,sha256=XNixASyu0cUDRNuwxeixwA0U7-05QVmqJw2GfnexLwk,6839
|
|
921
921
|
psychopy/app/builder/dialogs/paramCtrls.py,sha256=wWv2OB_ho1fLNTuOBvzh_oiI7CCbgLPd63QfSCTbMrY,47654
|
|
922
|
-
psychopy/app/builder/localizedStrings.py,sha256=
|
|
922
|
+
psychopy/app/builder/localizedStrings.py,sha256=nmXSLbpYhKWjGxPXKvwWmkY3foAIWVt0p1m0jM2wRUw,9043
|
|
923
923
|
psychopy/app/builder/validators.py,sha256=9UNzKWZbza_8E9zptgZ9RiXEEpKQLyL8OnHkZMdQH74,21342
|
|
924
924
|
psychopy/app/coder/__init__.py,sha256=hF476K91n-eIQmcyIKtOTM5Wwu5TOAni2mjg7dATlqA,164
|
|
925
925
|
psychopy/app/coder/codeEditorBase.py,sha256=-y5ZtDeEV6KKCFzOFo4O3KlrHVUJ3UEiIQFHvp6aj64,18016
|
|
@@ -979,8 +979,8 @@ psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo,sha256=YL0OkWylqScel5-55e0UOTbr
|
|
|
979
979
|
psychopy/app/locale/hu_HU/LC_MESSAGE/messages.po,sha256=lUwWIx2w6yCg1oSFolOAGoWTYq6gilECmOe8MzmSU1c,750
|
|
980
980
|
psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo,sha256=ZKMzzkn-3x5ctpBDJv25-S-4Q9dlaVD8MDgCBhJDbpg,625
|
|
981
981
|
psychopy/app/locale/it_IT/LC_MESSAGE/messages.po,sha256=Hn2PHcXpyupdKp1vWZLV0T5Th1hSyaY59d7f0mVNE0c,247774
|
|
982
|
-
psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo,sha256=
|
|
983
|
-
psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po,sha256=
|
|
982
|
+
psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo,sha256=aH5GhAQmHkaHqj3KpiL9dsAgWvcAGU6DYCqTr1L2aPw,217528
|
|
983
|
+
psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po,sha256=ZjOPBBkeyTZd_z1yHv_1X92T_7QonM1dMT7iPhpgiOM,326647
|
|
984
984
|
psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo,sha256=aH0Bw3Wg0KaxWPYu9pNfA8zLizw2fCg6YP191aL63Us,561
|
|
985
985
|
psychopy/app/locale/ko_KR/LC_MESSAGE/messages.po,sha256=Og8xPQ0fmSCKOMp-rFBiPDAACi56C8LdjH7mFuVTwoA,719
|
|
986
986
|
psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo,sha256=IbykycFb3cwbl7OOa9-iJemo7ep92PiV5pEtPse4SrA,2213
|
|
@@ -1017,7 +1017,7 @@ psychopy/app/plugin_manager/__init__.py,sha256=bSD1HYo2TXCFMith4-erfzv_PHP6p-qhB
|
|
|
1017
1017
|
psychopy/app/plugin_manager/dialog.py,sha256=YW5OfmQ79cPOZ40Vx1yctKy5gDth4Q4qQw1VOw4Dm_I,15102
|
|
1018
1018
|
psychopy/app/plugin_manager/output.py,sha256=BUfmvr7EGkDJlj97wku-GKI_vhzx2mNGCAepUHlzyRc,4045
|
|
1019
1019
|
psychopy/app/plugin_manager/packages.py,sha256=gykd4LcQJVU5jexhYsoQDeplXBpFo1GQOOS_Yzmz56Q,20072
|
|
1020
|
-
psychopy/app/plugin_manager/plugins.py,sha256=
|
|
1020
|
+
psychopy/app/plugin_manager/plugins.py,sha256=1ULbiIG89uVE9qvuBgI00-XwZWvD-J5k7V_2PilKj3s,47705
|
|
1021
1021
|
psychopy/app/plugin_manager/utils.py,sha256=2xEcau7amzOXs9P2QZbLeuvN_437ttyCWYCKC-lCGG4,4267
|
|
1022
1022
|
psychopy/app/preferencesDlg.py,sha256=Y476Y_GRp2FUOtZL8o3u2ktVoNPNx3B6fpsxnfJ70Es,32028
|
|
1023
1023
|
psychopy/app/psychopyApp.py,sha256=71Hn-zIRzukQmFhN4H6UMCTf6DQFE5eQ8JdFIMaeh0o,3369
|
|
@@ -1169,7 +1169,7 @@ psychopy/demos/builder/Feature Demos/noise/noise.psyexp,sha256=awd_ocUQyLKDrcX8o
|
|
|
1169
1169
|
psychopy/demos/builder/Feature Demos/noise/readme.md,sha256=380VfNp6kH-rwYvf2-MafaFPEV98xi9B0XuRQQUwgs0,121
|
|
1170
1170
|
psychopy/demos/builder/Feature Demos/panorama/panImg.jpg,sha256=oOlPPTaGBVsiMZ3iBHFO7k1JDZRRMRGsok9CGEtOULE,14084972
|
|
1171
1171
|
psychopy/demos/builder/Feature Demos/panorama/panorama.psyexp,sha256=P-3WLaKPXEsSMkgiGvv6rEWmmTh6RXhv1z_eCfLMyyo,10578
|
|
1172
|
-
psychopy/demos/builder/Feature Demos/progress/progressBar.psyexp,sha256=
|
|
1172
|
+
psychopy/demos/builder/Feature Demos/progress/progressBar.psyexp,sha256=m5jQrfb61APm32KvzdpXvHZnn2HpsZRxo0XAbeJoRKs,31782
|
|
1173
1173
|
psychopy/demos/builder/Feature Demos/progress/readme.md,sha256=eMIuawrNMyfOzV9-BNvmfYHWAD9hjsjaNWqf_BMuxQE,264
|
|
1174
1174
|
psychopy/demos/builder/Feature Demos/sliders/README.md,sha256=DESTwlzvnTKU7Pmtx26E5L3McMLjeJv4z_TfjrzX9tU,394
|
|
1175
1175
|
psychopy/demos/builder/Feature Demos/sliders/fruitConditions.xlsx,sha256=XVronDakp0VkWNB_dMDwLBR8CmIUa44CYZcyajeOq80,11587
|
|
@@ -1357,7 +1357,7 @@ psychopy/experiment/components/button/dark/button.png,sha256=SBAbSgqTPCYaAZTZUzL
|
|
|
1357
1357
|
psychopy/experiment/components/button/dark/button@2x.png,sha256=rOaQQiDzIod3CJOS-9QB03FG3ftNTc0qYxwn2hAgnVU,2189
|
|
1358
1358
|
psychopy/experiment/components/button/light/button.png,sha256=96qG9x_4BgTmLhlrEJgG5NnxYIKFsowgOMSX_FBg4WM,1124
|
|
1359
1359
|
psychopy/experiment/components/button/light/button@2x.png,sha256=UaoRfEq-FAfsPW7DQ7TqXH9XEMOfKfrI2BnKTaLHx0M,2179
|
|
1360
|
-
psychopy/experiment/components/buttonBox/__init__.py,sha256
|
|
1360
|
+
psychopy/experiment/components/buttonBox/__init__.py,sha256=-jrtsdw3FYFs-ROHLia94GQ2bDuAjFYgj4DBnfSWym4,12382
|
|
1361
1361
|
psychopy/experiment/components/buttonBox/classic/buttonBox.png,sha256=mPWJ3fiZ9lbHMxDuC5NOOH4oXuKdApEThXfXcRro4Y4,2672
|
|
1362
1362
|
psychopy/experiment/components/buttonBox/classic/buttonBox@2x.png,sha256=G64Vfyg4Cie1MRf_1wNN8Xr23VolKsNLLQTGXoWRn8k,6094
|
|
1363
1363
|
psychopy/experiment/components/buttonBox/dark/buttonBox.png,sha256=G3JfdQ3zLSRTSTz0t6GfKkt7ihEhhw2AJs0u_FGTwSs,1259
|
|
@@ -1446,7 +1446,7 @@ psychopy/experiment/components/microphone/dark/microphone.png,sha256=q6XPPab-nnF
|
|
|
1446
1446
|
psychopy/experiment/components/microphone/dark/microphone@2x.png,sha256=x58B_E0YQNUV2dyye52APaf-25S7nfpP70j-2-7PpLQ,1853
|
|
1447
1447
|
psychopy/experiment/components/microphone/light/microphone.png,sha256=bQztv6e7oCUK8852Zc5RcLt_kEgqI9c_d_S8W-6WEt4,988
|
|
1448
1448
|
psychopy/experiment/components/microphone/light/microphone@2x.png,sha256=swrycVelLJd8k57jbaS5AYXq5ievFSs-rhsNePv_rQM,1841
|
|
1449
|
-
psychopy/experiment/components/mouse/__init__.py,sha256=
|
|
1449
|
+
psychopy/experiment/components/mouse/__init__.py,sha256=pT5xrJxpOhiZEUKrbkPBFgTGG_yA6xgsDYmZj9dNqUE,34739
|
|
1450
1450
|
psychopy/experiment/components/mouse/classic/mouse.png,sha256=rXSJ4vFYekhNjANSuJnLdLmCF0-Y6p6s8b7JyL6It9Y,3735
|
|
1451
1451
|
psychopy/experiment/components/mouse/classic/mouse@2x.png,sha256=Ms-piLdbP1zKFBP5bbiBb7sF_Bps67GG7ZpBnItxoNM,11310
|
|
1452
1452
|
psychopy/experiment/components/mouse/dark/mouse.png,sha256=KWXV2z5bUx80lwu3H98-8h2XWo9ZyQvM3iRU22CQ7z8,772
|
|
@@ -1487,7 +1487,7 @@ psychopy/experiment/components/polygon/dark/polygon.png,sha256=6ZCyor1NM4i7kLpXy
|
|
|
1487
1487
|
psychopy/experiment/components/polygon/dark/polygon@2x.png,sha256=GVoiBNpjoSPRFIKoqc542SyWssn53exU3qyPqtRYD2w,1608
|
|
1488
1488
|
psychopy/experiment/components/polygon/light/polygon.png,sha256=D2UXeVnUpQIEL4vizve-T93NckPTHu8_jDeRZPPAvLU,890
|
|
1489
1489
|
psychopy/experiment/components/polygon/light/polygon@2x.png,sha256=NAmC9ZRAEgG1CZIdfjEEEMP0EZuPzp6i927enCtF8QM,1610
|
|
1490
|
-
psychopy/experiment/components/progress/__init__.py,sha256=
|
|
1490
|
+
psychopy/experiment/components/progress/__init__.py,sha256=Xxyk3m-wbYor_kF4eR2YHyj-m1cJue4xu8rDZ65uv9g,5516
|
|
1491
1491
|
psychopy/experiment/components/progress/classic/progress.png,sha256=Gp4am-n_1PAv8fk8W0lrHZzaIe4FkjAUMVNFjJ242Mc,1224
|
|
1492
1492
|
psychopy/experiment/components/progress/classic/progress@2x.png,sha256=bv1QzZVgbvRXn0Hcppyk3znleGJi2mCVQVWnlXXm_RI,2394
|
|
1493
1493
|
psychopy/experiment/components/progress/dark/progress.png,sha256=mHkbscXItnKvZY5AL8lzjjRvTDWcxr1hKJe3ibmsz-0,852
|
|
@@ -1609,7 +1609,7 @@ psychopy/experiment/questPlusTemplate.xltx,sha256=8c1yt6el4v_iE79FoelLX267TpFrPs
|
|
|
1609
1609
|
psychopy/experiment/questTemplate.xltx,sha256=p0FzYmMWJH0uaGRFlAdPT4uSzNBHpV7uPM0gZN5yYds,20668
|
|
1610
1610
|
psychopy/experiment/routines/__init__.py,sha256=mQTjLeu5H7K_EGp_WZ7I5jXDKNgPF4ViJz00aG_pV-g,3672
|
|
1611
1611
|
psychopy/experiment/routines/_base.py,sha256=VMln_MS1QPNga64wBR0fB0pMsHu28UeyElZAuIil7pA,38584
|
|
1612
|
-
psychopy/experiment/routines/counterbalance/__init__.py,sha256=
|
|
1612
|
+
psychopy/experiment/routines/counterbalance/__init__.py,sha256=XxkGNfrQoTvuL0i80bWWYy2VANsxN7Fl93Y2C7xpc5c,12616
|
|
1613
1613
|
psychopy/experiment/routines/counterbalance/classic/counterbalance.png,sha256=ficKpm9rX1A-YIzgFNfM6EbwAklenfKeOwP74ktCgfo,3977
|
|
1614
1614
|
psychopy/experiment/routines/counterbalance/classic/counterbalance@2x.png,sha256=UwSvAzg0Y9k1jEtkvbzr277tApPB08o4gFRuhhN5NpA,10628
|
|
1615
1615
|
psychopy/experiment/routines/counterbalance/counterbalanceItems.xltx,sha256=Ht1ZE6c800RGF1LxE6WjWGujNwsMQ04pw6j_VZu86uE,18707
|
|
@@ -1636,7 +1636,7 @@ psychopy/experiment/routines/pavlovia_survey/dark/survey.png,sha256=YHJAx4LHLurS
|
|
|
1636
1636
|
psychopy/experiment/routines/pavlovia_survey/dark/survey@2x.png,sha256=avsdFSmD-qy_Mnj-NMacvECqw4BEqeC9aRFSxf9sRYU,3947
|
|
1637
1637
|
psychopy/experiment/routines/pavlovia_survey/light/survey.png,sha256=ojzaoqGK6qIehsj2ElkHEq1J526YZBcGtqlDgQD0LqI,2141
|
|
1638
1638
|
psychopy/experiment/routines/pavlovia_survey/light/survey@2x.png,sha256=0S0VB_qSJjiBJNtNVb9oQChCFb9HCwvb8j1K76ERf4E,3969
|
|
1639
|
-
psychopy/experiment/routines/photodiodeValidator/__init__.py,sha256=
|
|
1639
|
+
psychopy/experiment/routines/photodiodeValidator/__init__.py,sha256=tOf6TXE6mnHQPYTfWJK-TT4AqsEhreXOWkRE59S6rFg,15919
|
|
1640
1640
|
psychopy/experiment/routines/photodiodeValidator/classic/photodiode_validator.png,sha256=P9XtMKUVN-xKXqf7OgTvfjzJfTq0WgYEJu3vLR1_DT0,4837
|
|
1641
1641
|
psychopy/experiment/routines/photodiodeValidator/classic/photodiode_validator@2x.png,sha256=pLoUU7IzKlZ_uOHA_0xA0ZXRa7Np7ocXMS8c8EGW4U8,13416
|
|
1642
1642
|
psychopy/experiment/routines/photodiodeValidator/dark/photodiode_validator.png,sha256=yg85iyoPTMm34XBvPeak3ZKK0aXoqQkWnkFGK5xdDhc,1690
|
|
@@ -1683,7 +1683,7 @@ psychopy/hardware/forp.py,sha256=P19o4cmrZD4kHhJwNT0kj5LR-F4kdwXSu5GpYyiis4U,135
|
|
|
1683
1683
|
psychopy/hardware/gammasci.py,sha256=odRzQ1kKduDqrQshp582YtKnXnSFPXWc8qic9jjPZMc,1000
|
|
1684
1684
|
psychopy/hardware/iolab.py,sha256=8fqy-xGe15naHLgYfxELpes5ooNDTUytLTTz9_NhTi0,1067
|
|
1685
1685
|
psychopy/hardware/joystick/__init__.py,sha256=wBhX_21kRPAlKM2UyEZBYBKhDCfiLHIp-K7r_2bDorI,19109
|
|
1686
|
-
psychopy/hardware/keyboard.py,sha256=
|
|
1686
|
+
psychopy/hardware/keyboard.py,sha256=jjsTdovR7m0--XkkCFeM74J1fODua4Issmx71DJXPUI,34208
|
|
1687
1687
|
psychopy/hardware/knownDevices.json,sha256=rGsTu0MaBdUTUA6bwCKU9D-J03i0oFPDWOw28Eu4Ik0,1791
|
|
1688
1688
|
psychopy/hardware/labhackers.py,sha256=_fRtMUtSd5f2DXRVgVsXQdF3x9ZDFypXcuxaD0J1C0E,864
|
|
1689
1689
|
psychopy/hardware/labjacks.py,sha256=CQfxgty2uGdG2bzkcbfw-pKBzxHlnSSVfcPHKlsOC8E,980
|
|
@@ -2744,17 +2744,18 @@ psychopy/tests/test_experiment/needs_wx/test_Experiment.py,sha256=HpN-2uiKFitW6y
|
|
|
2744
2744
|
psychopy/tests/test_experiment/needs_wx/test_components.py,sha256=nr06cyK0vPbJVOFXESx5Q5ehjKI9i669HbS6cJDzlGA,7092
|
|
2745
2745
|
psychopy/tests/test_experiment/test_component_compile_js.py,sha256=LrVUQ-izAN23e5M1t3Tg7NaourscsDABSBtPZeEWm24,2775
|
|
2746
2746
|
psychopy/tests/test_experiment/test_component_compile_python.py,sha256=SALVfXswwu64hyfIsqzPhDru5EVO5tyuUDAOLrXDE10,7002
|
|
2747
|
-
psychopy/tests/test_experiment/test_components/__init__.py,sha256=
|
|
2748
|
-
psychopy/tests/test_experiment/test_components/
|
|
2749
|
-
psychopy/tests/test_experiment/test_components/
|
|
2750
|
-
psychopy/tests/test_experiment/test_components/
|
|
2751
|
-
psychopy/tests/test_experiment/test_components/
|
|
2752
|
-
psychopy/tests/test_experiment/test_components/
|
|
2753
|
-
psychopy/tests/test_experiment/test_components/
|
|
2754
|
-
psychopy/tests/test_experiment/test_components/
|
|
2755
|
-
psychopy/tests/test_experiment/test_components/
|
|
2756
|
-
psychopy/tests/test_experiment/test_components/
|
|
2757
|
-
psychopy/tests/test_experiment/test_components/
|
|
2747
|
+
psychopy/tests/test_experiment/test_components/__init__.py,sha256=qQqf5031kA1-Qcj4ActVGQbE6wB4DQQ2JpdBnf4e7Sc,52
|
|
2748
|
+
psychopy/tests/test_experiment/test_components/test_ButtonBoxComponent.py,sha256=sG_M3v97JIrFvpDGRYn7Y21--zvzpQkPTtEnsXspBPk,6748
|
|
2749
|
+
psychopy/tests/test_experiment/test_components/test_CodeComponent.py,sha256=8U4Z2FDhn6Gf1DRnOAEEScl47gFHWz1-6_nhAiQwrkI,3460
|
|
2750
|
+
psychopy/tests/test_experiment/test_components/test_GratingComponent.py,sha256=zdaSZhd-XAkihUBt7mnq93QEuEDniUeRxE0LHWl98Qo,363
|
|
2751
|
+
psychopy/tests/test_experiment/test_components/test_ImageComponent.py,sha256=oFlxj67_r5H68VF84FcGa8rrgBxTo81lURS9L6mBSpA,366
|
|
2752
|
+
psychopy/tests/test_experiment/test_components/test_MouseComponent.py,sha256=2pFUhxQmCWBeUvaUxWaayEDFfgkIOP8CtzWP3o2e4UI,7876
|
|
2753
|
+
psychopy/tests/test_experiment/test_components/test_PolygonComponent.py,sha256=wXaGVfe-qERMcgtRexFofpjsBjR4WdWKBFtPIBut8Wo,2954
|
|
2754
|
+
psychopy/tests/test_experiment/test_components/test_ResourceManagerComponent.py,sha256=n-mB_VoTn3PxUWETjggyU5yvh56k4xQQMYruOy2ScM0,2533
|
|
2755
|
+
psychopy/tests/test_experiment/test_components/test_SettingsComponent.py,sha256=hdcoBh8u9X4si97L8naTz7Ix2rzlHK4FpP52-hDYENY,3338
|
|
2756
|
+
psychopy/tests/test_experiment/test_components/test_StaticComponent.py,sha256=Ta0gzNMN-lqE77iyQ6z0eR_71ijNlGhSr01IFaiHJoE,2434
|
|
2757
|
+
psychopy/tests/test_experiment/test_components/test_all_components.py,sha256=O-7fSqlk-oaTK4HC65_lsDv0sTF4xQ9p0P3uXoenMzc,4403
|
|
2758
|
+
psychopy/tests/test_experiment/test_components/test_base_components.py,sha256=StKDjDX8Hg88s_znEpD6ivZlz4Fxuvm_UWiS38dJv_k,17849
|
|
2758
2759
|
psychopy/tests/test_experiment/test_experiment.py,sha256=WRWimiyviyzkPc85PuqTumrVrbrZe0yB95WYraGXLsw,4439
|
|
2759
2760
|
psychopy/tests/test_experiment/test_loops.py,sha256=8-lHo7nAXaiorP_hpv2oSyA_UZAt2617L3CyusrIUCs,3703
|
|
2760
2761
|
psychopy/tests/test_experiment/test_params.py,sha256=e2WjO4T1xvb0sRtZXph9CAcN3YjIN79hzziTiqoEu8o,13172
|
|
@@ -2773,7 +2774,7 @@ psychopy/tests/test_hardware/test_CRS_bitsShaders.py,sha256=zjzFyA6K889xdIzExY0-
|
|
|
2773
2774
|
psychopy/tests/test_hardware/test_device_manager.py,sha256=iLbRKaiR_fVaPob6Pj2p7pSGRJkHU2OTdUyfRIQD4jo,1240
|
|
2774
2775
|
psychopy/tests/test_hardware/test_emulator.py,sha256=3JlvxVM6SlqWRQYITI2XkjOjd_wMtaWvajkFMerichE,4227
|
|
2775
2776
|
psychopy/tests/test_hardware/test_gammasci.py,sha256=bwoesGbNHzcwz6x3wNqXPu4Ahk0PzSzpXsK-KK2c2xw,1140
|
|
2776
|
-
psychopy/tests/test_hardware/test_keyboard.py,sha256=
|
|
2777
|
+
psychopy/tests/test_hardware/test_keyboard.py,sha256=iL_3m1zQ1XfmAoujvM4ZRJ6yHLexpd_6HbqSyGJ1nKU,7244
|
|
2777
2778
|
psychopy/tests/test_hardware/test_keyboard_events.py,sha256=z_-ERHgMMtMs_AaCLWllOz8dm1IGg-_qjJyJuiLYkeo,10995
|
|
2778
2779
|
psychopy/tests/test_hardware/test_ports.py,sha256=jvwP1tboaxySZUmGyKFb7SdDPXziVI_ky3_rw0BHvm8,4934
|
|
2779
2780
|
psychopy/tests/test_iohub/__init__.py,sha256=XWwudbQJpOsGyIVAq5MW_kkSE6pvoG4D6ztzdVIvL-I,19
|
|
@@ -2915,7 +2916,7 @@ psychopy/visual/panorama.py,sha256=8B96YTS5lxMoFO1feUaCLEXD7oERR3J0Pr4Kgi2UJdM,1
|
|
|
2915
2916
|
psychopy/visual/patch.py,sha256=UMD6JG1WuM1PK7Lam679tbyUltXxWbvd1IdIqwGbreQ,1007
|
|
2916
2917
|
psychopy/visual/pie.py,sha256=oIgisD1x1TmKHxLautG89cnbleaGUqSZVejuYDFl6VQ,9732
|
|
2917
2918
|
psychopy/visual/polygon.py,sha256=ldp7bcj3vobHZwoVt2WfVsXEL078x-Y339IEJD84-zI,9444
|
|
2918
|
-
psychopy/visual/progress.py,sha256=
|
|
2919
|
+
psychopy/visual/progress.py,sha256=VH6W9pcZG5PXKrga7YTV6ugeiGM8kNXNc5Bmio4mciY,10661
|
|
2919
2920
|
psychopy/visual/radial.py,sha256=kraRjPnrkhhJ9V5w3qJUVZQwIWgwpXXBqBpmZn8NMU8,1288
|
|
2920
2921
|
psychopy/visual/ratingscale.py,sha256=6BGdR0neA-HI4b32qwVaFUM-2RNSib-9KSpjtokqVaY,65386
|
|
2921
2922
|
psychopy/visual/rect.py,sha256=PNjf2CJsAAR1hdwdCA6swG5QokzHAG6sL9AITgihEDM,8555
|
|
@@ -2946,5 +2947,5 @@ psychopy/voicekey/labjack_vks.py,sha256=PPTpdAON8I7zdPevls8SIMH9_ZfJ14gSL01A5UVD
|
|
|
2946
2947
|
psychopy/voicekey/parallel_vks.py,sha256=I6a07GvN0Q2k9xidl9YbEUDORG2v9l2H_5Owbpw_xzY,1464
|
|
2947
2948
|
psychopy/voicekey/signal.py,sha256=Mk363qVsvJampVDfsOTdGq7lPESlKmogmNFqasdghJE,1013
|
|
2948
2949
|
psychopy/voicekey/vk_tools.py,sha256=pFvOvF9b9CfS-JkZ_fv38LxI59hJXQqiz9ymcrJiAFc,8483
|
|
2949
|
-
psychopy/web.py,sha256=
|
|
2950
|
-
psychopy-2024.1.
|
|
2950
|
+
psychopy/web.py,sha256=TaN6joXx_NmyMUP6NqLYk66yMMUV2nlSEPGByPqvzFM,10328
|
|
2951
|
+
psychopy-2024.1.4.dist-info/RECORD,,
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
from psychopy.experiment import Experiment
|
|
2
|
-
from psychopy.experiment.components.image import ImageComponent
|
|
3
|
-
from psychopy.experiment.loops import TrialHandler
|
|
4
|
-
from psychopy.experiment.routines import Routine
|
|
5
|
-
from .test_base_components import _TestDepthMixin, _TestBaseComponentsMixin
|
|
6
|
-
from psychopy.visual.image import ImageStim
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class TestImage(_TestBaseComponentsMixin, _TestDepthMixin):
|
|
10
|
-
libraryClass = ImageStim
|
|
11
|
-
|
|
12
|
-
def setup_method(self):
|
|
13
|
-
# Make blank experiment
|
|
14
|
-
self.exp = Experiment()
|
|
15
|
-
# Make blank routine
|
|
16
|
-
self.routine = Routine(name="testRoutine", exp=self.exp)
|
|
17
|
-
self.exp.addRoutine("testRoutine", self.routine)
|
|
18
|
-
self.exp.flow.addRoutine(self.routine, 0)
|
|
19
|
-
# Add loop around routine
|
|
20
|
-
self.loop = TrialHandler(exp=self.exp, name="testLoop")
|
|
21
|
-
self.exp.flow.addLoop(self.loop, 0, -1)
|
|
22
|
-
# Make a rect for when we need something to click on
|
|
23
|
-
self.comp = ImageComponent(exp=self.exp, parentName="testRoutine", name="testImage")
|
|
24
|
-
self.routine.addComponent(self.comp)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|