psychopy 2024.1.0__py3-none-any.whl → 2024.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of psychopy might be problematic. Click here for more details.
- psychopy/__init__.py +2 -2
- psychopy/app/builder/builder.py +3 -0
- psychopy/app/plugin_manager/plugins.py +81 -58
- psychopy/app/utils.py +2 -2
- psychopy/experiment/routines/counterbalance/__init__.py +1 -1
- {psychopy-2024.1.0.dist-info → psychopy-2024.1.1.dist-info}/METADATA +1 -1
- {psychopy-2024.1.0.dist-info → psychopy-2024.1.1.dist-info}/RECORD +11 -39
- psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/da_DK/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/de_DE/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/el_GR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/en_NZ/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/en_US/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fa_IR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fi_FI/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fr_FR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/he_IL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/hi_IN/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/nl_NL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/nn_NO/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/pl_PL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ro_RO/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ru_RU/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/sv_SE/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/tr_TR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/zh_CN/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/zh_TW/LC_MESSAGE/messages.mo +0 -0
- {psychopy-2024.1.0.dist-info → psychopy-2024.1.1.dist-info}/WHEEL +0 -0
- {psychopy-2024.1.0.dist-info → psychopy-2024.1.1.dist-info}/entry_points.txt +0 -0
- {psychopy-2024.1.0.dist-info → psychopy-2024.1.1.dist-info}/licenses/AUTHORS.md +0 -0
- {psychopy-2024.1.0.dist-info → psychopy-2024.1.1.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.
|
|
15
|
+
__version__ = '2024.1.1'
|
|
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__ = '
|
|
22
|
+
__git_sha__ = '5b4d38cde'
|
|
23
23
|
__build_platform__ = 'n/a'
|
|
24
24
|
|
|
25
25
|
__all__ = ["gui", "misc", "visual", "core",
|
psychopy/app/builder/builder.py
CHANGED
|
@@ -2239,6 +2239,9 @@ class RoutineCanvas(wx.ScrolledWindow, handlers.ThemeMixin):
|
|
|
2239
2239
|
# if max came from routine settings, mark as hard stop
|
|
2240
2240
|
rtMax, rtMaxIsNum = self.routine.settings.getDuration()
|
|
2241
2241
|
hardStop = rtMaxIsNum and rtMax == maxTime
|
|
2242
|
+
# handle no max
|
|
2243
|
+
if maxTime is None:
|
|
2244
|
+
maxTime = 10
|
|
2242
2245
|
|
|
2243
2246
|
return maxTime, hardStop
|
|
2244
2247
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
1
3
|
import wx
|
|
2
4
|
from wx.lib import scrolledpanel
|
|
3
5
|
import webbrowser
|
|
@@ -167,7 +169,7 @@ class PluginInfo:
|
|
|
167
169
|
if ext in pil.registered_extensions():
|
|
168
170
|
content = requests.get(self._requestedIcon).content
|
|
169
171
|
writeOut = os.path.join(appPluginCacheDir, fname)
|
|
170
|
-
with open(writeOut, 'wb') as f:
|
|
172
|
+
with open(writeOut, 'wb', encoding='utf-8') as f:
|
|
171
173
|
f.write(content)
|
|
172
174
|
self._icon = utils.ImageData(os.path.join(
|
|
173
175
|
appPluginCacheDir, fname))
|
|
@@ -479,6 +481,16 @@ class PluginBrowserList(scrolledpanel.ScrolledPanel, handlers.ThemeMixin):
|
|
|
479
481
|
self.sizer.Add(self.badItemLbl, border=9, flag=wx.ALL | wx.EXPAND)
|
|
480
482
|
self.badItemSizer = wx.BoxSizer(wx.VERTICAL)
|
|
481
483
|
self.sizer.Add(self.badItemSizer, border=3, flag=wx.ALL | wx.EXPAND)
|
|
484
|
+
# ctrl to display when plugins can't be retrieved
|
|
485
|
+
self.errorCtrl = utils.MarkdownCtrl(
|
|
486
|
+
self, value=_translate(
|
|
487
|
+
"Could not retrieve plugins. Try restarting the PsychoPy app and make sure you "
|
|
488
|
+
"are connected to the internet."
|
|
489
|
+
),
|
|
490
|
+
style=wx.TE_READONLY
|
|
491
|
+
)
|
|
492
|
+
self.sizer.Add(self.errorCtrl, proportion=1, border=3, flag=wx.ALL | wx.EXPAND)
|
|
493
|
+
self.errorCtrl.Hide()
|
|
482
494
|
|
|
483
495
|
# Bind deselect
|
|
484
496
|
self.Bind(wx.EVT_LEFT_DOWN, self.onDeselect)
|
|
@@ -492,17 +504,19 @@ class PluginBrowserList(scrolledpanel.ScrolledPanel, handlers.ThemeMixin):
|
|
|
492
504
|
self.initState[item.info.pipname] = {"installed": item.info.installed, "active": item.info.active}
|
|
493
505
|
|
|
494
506
|
def populate(self):
|
|
495
|
-
#
|
|
507
|
+
# get all plugin details
|
|
496
508
|
items = getAllPluginDetails()
|
|
497
|
-
#
|
|
509
|
+
# start off assuming no headings
|
|
498
510
|
self.badItemLbl.Hide()
|
|
499
|
-
#
|
|
511
|
+
# put installed packages at top of list
|
|
500
512
|
items.sort(key=lambda obj: obj.installed, reverse=True)
|
|
501
513
|
for item in items:
|
|
502
514
|
item.setParent(self)
|
|
503
515
|
self.appendItem(item)
|
|
504
|
-
|
|
505
|
-
|
|
516
|
+
# if we got no items, display error message
|
|
517
|
+
if not len(items):
|
|
518
|
+
self.errorCtrl.Show()
|
|
519
|
+
# layout
|
|
506
520
|
self.Layout()
|
|
507
521
|
self.SetupScrolling()
|
|
508
522
|
|
|
@@ -697,7 +711,7 @@ class PluginDetailsPanel(wx.Panel, handlers.ThemeMixin):
|
|
|
697
711
|
# Add placeholder for when there's no plugin selected
|
|
698
712
|
self.placeholder = utils.MarkdownCtrl(
|
|
699
713
|
self, value=_translate("Select a plugin to view details."),
|
|
700
|
-
style=wx.
|
|
714
|
+
style=wx.TE_READONLY
|
|
701
715
|
)
|
|
702
716
|
self.border.Add(
|
|
703
717
|
self.placeholder,
|
|
@@ -840,7 +854,6 @@ class PluginDetailsPanel(wx.Panel, handlers.ThemeMixin):
|
|
|
840
854
|
self.sizer.ShowItems(value is not None)
|
|
841
855
|
# Show/hide placeholder according to None
|
|
842
856
|
self.placeholder.Show(value is None)
|
|
843
|
-
self.placeholder.editBtn.Hide()
|
|
844
857
|
# Handle None
|
|
845
858
|
if value is None:
|
|
846
859
|
value = PluginInfo(
|
|
@@ -1145,6 +1158,8 @@ def markActive(pluginItem, pluginPanel, active=True):
|
|
|
1145
1158
|
|
|
1146
1159
|
# store plugin objects for later use
|
|
1147
1160
|
_pluginObjects = None
|
|
1161
|
+
# persistent variable to keep track of whether we need to update plugins
|
|
1162
|
+
redownloadPlugins = True
|
|
1148
1163
|
|
|
1149
1164
|
|
|
1150
1165
|
def getAllPluginDetails():
|
|
@@ -1175,7 +1190,7 @@ def getAllPluginDetails():
|
|
|
1175
1190
|
pass
|
|
1176
1191
|
|
|
1177
1192
|
# where the database is expected to be
|
|
1178
|
-
pluginDatabaseFile =
|
|
1193
|
+
pluginDatabaseFile = Path(appPluginCacheDir) / "plugins.json"
|
|
1179
1194
|
|
|
1180
1195
|
def downloadPluginDatabase(srcURL="https://psychopy.org/plugins.json"):
|
|
1181
1196
|
"""Downloads the plugin database from the server and returns the text
|
|
@@ -1188,23 +1203,35 @@ def getAllPluginDetails():
|
|
|
1188
1203
|
|
|
1189
1204
|
Returns
|
|
1190
1205
|
-------
|
|
1191
|
-
|
|
1192
|
-
The plugin database as a
|
|
1206
|
+
list or None
|
|
1207
|
+
The plugin database as a list, or None if the download failed.
|
|
1193
1208
|
|
|
1194
1209
|
"""
|
|
1210
|
+
global redownloadPlugins
|
|
1211
|
+
# if plugins already up to date, skip
|
|
1212
|
+
if not redownloadPlugins:
|
|
1213
|
+
return None
|
|
1214
|
+
# download database from website
|
|
1195
1215
|
try:
|
|
1196
1216
|
resp = requests.get(srcURL)
|
|
1197
|
-
if resp.status_code == 404:
|
|
1198
|
-
return None
|
|
1199
|
-
value = resp.text
|
|
1200
|
-
# confirm json is valid
|
|
1201
|
-
try:
|
|
1202
|
-
json.loads(value)
|
|
1203
|
-
return value
|
|
1204
|
-
except json.decoder.JSONDecodeError:
|
|
1205
|
-
return None
|
|
1206
1217
|
except requests.exceptions.ConnectionError:
|
|
1218
|
+
# if connection to website fails, return nothing
|
|
1219
|
+
return None
|
|
1220
|
+
# if download failed, return nothing
|
|
1221
|
+
if resp.status_code == 404:
|
|
1207
1222
|
return None
|
|
1223
|
+
# otherwise get as a string
|
|
1224
|
+
value = resp.text
|
|
1225
|
+
# attempt to parse JSON
|
|
1226
|
+
try:
|
|
1227
|
+
database = json.loads(value)
|
|
1228
|
+
except json.decoder.JSONDecodeError:
|
|
1229
|
+
# if JSON parse fails, return nothing
|
|
1230
|
+
return None
|
|
1231
|
+
# if we made it this far, mark plugins as not needing update
|
|
1232
|
+
redownloadPlugins = False
|
|
1233
|
+
|
|
1234
|
+
return database
|
|
1208
1235
|
|
|
1209
1236
|
def readLocalPluginDatabase(srcFile):
|
|
1210
1237
|
"""Read the local plugin database file (if it exists) and return the
|
|
@@ -1212,20 +1239,25 @@ def getAllPluginDetails():
|
|
|
1212
1239
|
|
|
1213
1240
|
Parameters
|
|
1214
1241
|
----------
|
|
1215
|
-
srcFile :
|
|
1242
|
+
srcFile : pathlib.Path
|
|
1216
1243
|
The expected path to the plugin database file.
|
|
1217
1244
|
|
|
1218
1245
|
Returns
|
|
1219
1246
|
-------
|
|
1220
|
-
|
|
1221
|
-
The plugin database as a
|
|
1247
|
+
list or None
|
|
1248
|
+
The plugin database as a list, or None if the file doesn't exist.
|
|
1222
1249
|
|
|
1223
1250
|
"""
|
|
1224
|
-
if
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1251
|
+
# if source file doesn't exist, return nothing
|
|
1252
|
+
if not srcFile.is_file():
|
|
1253
|
+
return None
|
|
1254
|
+
# attempt to parse JSON
|
|
1255
|
+
try:
|
|
1256
|
+
with srcFile.open("r", encoding="utf-8") as f:
|
|
1257
|
+
return json.load(f)
|
|
1258
|
+
except json.decoder.JSONDecodeError:
|
|
1259
|
+
# if JSON parse fails, return nothing
|
|
1260
|
+
return None
|
|
1229
1261
|
|
|
1230
1262
|
def deletePluginDlgCache():
|
|
1231
1263
|
"""Delete the local plugin database file and cached files related to
|
|
@@ -1238,47 +1270,38 @@ def getAllPluginDetails():
|
|
|
1238
1270
|
|
|
1239
1271
|
# get a copy of the plugin database from the server, check if it's newer
|
|
1240
1272
|
# than the local copy, and if so, replace the local copy
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1273
|
+
|
|
1274
|
+
# get remote database
|
|
1275
|
+
serverPluginDatabase = downloadPluginDatabase()
|
|
1276
|
+
# get local database
|
|
1277
|
+
localPluginDatabase = readLocalPluginDatabase(pluginDatabaseFile)
|
|
1278
|
+
|
|
1244
1279
|
if serverPluginDatabase is not None:
|
|
1245
|
-
if
|
|
1280
|
+
# if we have a database from the remote, use it
|
|
1281
|
+
pluginDatabase = serverPluginDatabase
|
|
1282
|
+
# if the file contents has changed, delete cached icons and etc.
|
|
1283
|
+
if str(pluginDatabase) != str(localPluginDatabase):
|
|
1246
1284
|
deletePluginDlgCache()
|
|
1247
|
-
# write
|
|
1248
|
-
with open(
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
serverPluginDatabase = json.loads(serverPluginDatabase)
|
|
1255
|
-
if localPluginDatabase != serverPluginDatabase:
|
|
1256
|
-
# clear the old cache
|
|
1257
|
-
deletePluginDlgCache()
|
|
1258
|
-
# write the new plugin database file
|
|
1259
|
-
with open(pluginDatabaseFile, 'w') as f: # save the file
|
|
1260
|
-
json.dump(serverPluginDatabase, f, indent=True)
|
|
1261
|
-
localPluginDatabase = serverPluginDatabase
|
|
1262
|
-
refreshPlugins = True
|
|
1285
|
+
# write new contents to file
|
|
1286
|
+
with pluginDatabaseFile.open("w", encoding='utf-8') as f:
|
|
1287
|
+
json.dump(pluginDatabase, f, indent=True)
|
|
1288
|
+
|
|
1289
|
+
elif localPluginDatabase is not None:
|
|
1290
|
+
# otherwise use cached
|
|
1291
|
+
pluginDatabase = localPluginDatabase
|
|
1263
1292
|
else:
|
|
1264
|
-
#
|
|
1265
|
-
|
|
1266
|
-
# no local copy, so no plugins
|
|
1267
|
-
return []
|
|
1268
|
-
else:
|
|
1269
|
-
# use local copy
|
|
1270
|
-
localPluginDatabase = json.loads(localPluginDatabase)
|
|
1271
|
-
refreshPlugins = True
|
|
1293
|
+
# if we have neither, treat as blank list
|
|
1294
|
+
pluginDatabase = []
|
|
1272
1295
|
|
|
1273
1296
|
# check if we need to update plugin objects, if not return the cached data
|
|
1274
1297
|
global _pluginObjects
|
|
1275
|
-
requiresRefresh =
|
|
1298
|
+
requiresRefresh = _pluginObjects is None
|
|
1276
1299
|
if not requiresRefresh:
|
|
1277
1300
|
return _pluginObjects
|
|
1278
1301
|
|
|
1279
1302
|
# Create PluginInfo objects from info list
|
|
1280
1303
|
objs = []
|
|
1281
|
-
for info in
|
|
1304
|
+
for info in pluginDatabase:
|
|
1282
1305
|
objs.append(PluginInfo(**info))
|
|
1283
1306
|
|
|
1284
1307
|
# Add info objects for local plugins which aren't found online
|
psychopy/app/utils.py
CHANGED
|
@@ -448,7 +448,7 @@ class MarkdownCtrl(wx.Panel, handlers.ThemeMixin):
|
|
|
448
448
|
Path to markdown file to edit via this control.
|
|
449
449
|
style : wx.Style
|
|
450
450
|
Style tags for this control. Accepts the following:
|
|
451
|
-
- wx.
|
|
451
|
+
- wx.TE_READONLY: Hides all button controls and shows only the rendered HTML
|
|
452
452
|
- wx.RIGHT: Arranges buttons vertically along the right hand side
|
|
453
453
|
- wx.BOTTOM: Arranges buttons horizontally along the bottom
|
|
454
454
|
- wx.BU_NOTEXT: Don't show any label on the buttons
|
|
@@ -511,7 +511,7 @@ class MarkdownCtrl(wx.Panel, handlers.ThemeMixin):
|
|
|
511
511
|
if value is None and self.file is not None:
|
|
512
512
|
self.load()
|
|
513
513
|
elif value is not None:
|
|
514
|
-
self.
|
|
514
|
+
self.setValue(value)
|
|
515
515
|
|
|
516
516
|
# Set initial view
|
|
517
517
|
self.showHTML()
|
|
@@ -304,7 +304,7 @@ class CounterbalanceRoutine(BaseStandaloneRoutine):
|
|
|
304
304
|
|
|
305
305
|
def writeExperimentEndCodeJS(self, buff):
|
|
306
306
|
code = (
|
|
307
|
-
"if (%(name)s) {\n"
|
|
307
|
+
"if (%(name)s && !%(name)s.finished) {\n"
|
|
308
308
|
" await psychoJS.shelf.counterbalanceConfirm(\n"
|
|
309
309
|
" ['%(name)s', '@designer', '@experiment'],\n"
|
|
310
310
|
" %(name)s.participantToken,\n"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: psychopy
|
|
3
|
-
Version: 2024.1.
|
|
3
|
+
Version: 2024.1.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>
|
|
@@ -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.1.dist-info/METADATA,sha256=zUijfemacGr9bXUNBeUGNQkqKGdSM5awhhCx2rQOFF0,6993
|
|
2
|
+
psychopy-2024.1.1.dist-info/WHEEL,sha256=N2J68yzZqJh3mI_Wg92rwhw0rtJDFpZj9bwQIMJgaVg,90
|
|
3
|
+
psychopy-2024.1.1.dist-info/entry_points.txt,sha256=1LXVqRMSILrbEagrzpJDtmXyEPHX3GnpBJ85TEnxuoI,56
|
|
4
|
+
psychopy-2024.1.1.dist-info/licenses/AUTHORS.md,sha256=MmZf-GmSBscBa_z7ePoqYxbaGe6XOJnld_s6JIQGfS4,2395
|
|
5
|
+
psychopy-2024.1.1.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=aibpoTnjMICDqqixasA_viOH0p0mOjs3Dc8j1oDOSmI,2757
|
|
10
10
|
psychopy/alerts/__init__.py,sha256=buvC7HFn71FhIp1D4XGXkZLeNLk22uO9TSQsxLlYZqU,2178
|
|
11
11
|
psychopy/alerts/_alerts.py,sha256=VcJltIdkBmRvM7GkgBXsGJkON9vRLuhgH3_rux2f-KQ,5951
|
|
12
12
|
psychopy/alerts/_errorHandler.py,sha256=JNkdx3OJv0PeAeARG09Rgne7dH-aGgUdxdoriDd4KW4,1501
|
|
@@ -913,7 +913,7 @@ psychopy/app/__init__.py,sha256=cBd_ZxGr-FJr49vO-_Wv0djECCZPSEqNWRpFVS7JW1A,7742
|
|
|
913
913
|
psychopy/app/_psychopyApp.py,sha256=ZRSmDL163NLMsHG4zZjKM_D2w4hTq0GbqZFiLgvUjDI,48168
|
|
914
914
|
psychopy/app/appData.spec,sha256=h0mN8oarz5seNu_tSB6hnBy3kBjqqSBEnoQQ0l1yoNU,1859
|
|
915
915
|
psychopy/app/builder/__init__.py,sha256=bwsF6j9s50qNjECYjh9NNvOS4ZMK8vfXfT0M3vJS-Qo,119
|
|
916
|
-
psychopy/app/builder/builder.py,sha256=
|
|
916
|
+
psychopy/app/builder/builder.py,sha256=D0yzCxGPqL4xzQXoNZQWghKz3U0jxnUeq0pYp9MNjQk,189665
|
|
917
917
|
psychopy/app/builder/dialogs/__init__.py,sha256=fbHQJfv-kknzfWejx9157LZ2xLTMA1fWVzkL3UK5-UM,86980
|
|
918
918
|
psychopy/app/builder/dialogs/dlgsCode.py,sha256=e6L80eZjVidfL3UwCLsGpha1uBJkfi3gUrn2Tf4bxcM,24236
|
|
919
919
|
psychopy/app/builder/dialogs/dlgsConditions.py,sha256=Q0yQaZCuWAMXKYboe4wiOrfFJxhr6rrhzvV00ZU16F8,29203
|
|
@@ -943,67 +943,39 @@ psychopy/app/idle.py,sha256=-AKlkrIPjtzLiXm4QNUy3AD4A9gqTlyBDe8kVWpUXf4,4237
|
|
|
943
943
|
psychopy/app/jobs.py,sha256=U1krlJ5vrRY1LCc3KprNG2E4MLGHFRthkJ0zUQB1JWY,20441
|
|
944
944
|
psychopy/app/linuxconfig/__init__.py,sha256=FJeDg2aVNtgWrlKHg1HiQz5dwLVnxINH492SQ6fLtl4,4338
|
|
945
945
|
psychopy/app/linuxconfig/ui.py,sha256=6BiDBJEEPl8slXJ8ts0an5skU5mMVJCJj-IkrAgO1Ho,3061
|
|
946
|
-
psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo,sha256=CBkp7--iXbR-5TGTGK5zWNH_FijL4BjmWNQItWwxhh4,7571
|
|
947
946
|
psychopy/app/locale/ar_001/LC_MESSAGE/messages.po,sha256=T9d5nwxVrnkxzWPQ9SQNODOvOHinI5jhQ4AdMgQGKr4,252733
|
|
948
|
-
psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.mo,sha256=zaeTGAnWr9diRZmitwPyJ8IU1WhuyCttgeYOY4Rm4XY,540
|
|
949
947
|
psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.po,sha256=Rtyl0S0VLvFwezLyaDn28-__iCqba6nZ9R2_0Rmez6M,698
|
|
950
|
-
psychopy/app/locale/da_DK/LC_MESSAGE/messages.mo,sha256=U4pW_8wnHVv4x7Z57g47_Yy_jS7HSq_XU98c4BS_UCQ,542
|
|
951
948
|
psychopy/app/locale/da_DK/LC_MESSAGE/messages.po,sha256=3yf22BaoI7rnku17NNAi7UZ_2506OgubJOxZR0DEu-0,700
|
|
952
|
-
psychopy/app/locale/de_DE/LC_MESSAGE/messages.mo,sha256=-MvCnNaMk7LYFhqs4hn2B907_Jz4IISibT4f28KrSsk,31250
|
|
953
949
|
psychopy/app/locale/de_DE/LC_MESSAGE/messages.po,sha256=yfcmLaTwuv8Gdyqe4Mu144llz9741KpKmALprj0i_IY,262120
|
|
954
|
-
psychopy/app/locale/el_GR/LC_MESSAGE/messages.mo,sha256=ICwkBJeuS7RYjA2tOYc6lfFx_ajRicxBW8VNaPYRnT4,605
|
|
955
950
|
psychopy/app/locale/el_GR/LC_MESSAGE/messages.po,sha256=EZN5UAWi122lq5ckiglmHCoxPdAyBWHkfBR3NQx-jg8,767
|
|
956
|
-
psychopy/app/locale/en_NZ/LC_MESSAGE/messages.mo,sha256=7aFTUKWZAxetKvDG1kKY5BjyNRGYUU43mRyuADCfyXQ,609
|
|
957
951
|
psychopy/app/locale/en_NZ/LC_MESSAGE/messages.po,sha256=7eS-D53gujKJrsyn1f5CabW_KG8_3gEkdW13VDWyH5w,771
|
|
958
|
-
psychopy/app/locale/en_US/LC_MESSAGE/messages.mo,sha256=cWyxEwr4OUX_jAQnNZuJ5FaDvW8YFfeqPD-HY6bd5ik,447
|
|
959
952
|
psychopy/app/locale/en_US/LC_MESSAGE/messages.po,sha256=BXJr9M4kzi1SI4cm-JK1dB9apmiuY89FxjN7HZJpH9c,577
|
|
960
953
|
psychopy/app/locale/es_CO/LC_MESSAGE/messages.mo,sha256=BcKBhhD1i8gfttuxUa0BY5v5mN7afDLHiF7R1IsHPYA,202308
|
|
961
954
|
psychopy/app/locale/es_CO/LC_MESSAGE/messages.po,sha256=ddVNDGBBXz2qRXWSwUwEKG1rmfLqThGbWX4HMQR8X-Q,337432
|
|
962
|
-
psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo,sha256=ZhU6TYbDu5ANaEwSZfiWDstR1ao2c_oBFOQBrZ8bNAI,198678
|
|
963
955
|
psychopy/app/locale/es_ES/LC_MESSAGE/messages.po,sha256=s7keJifOGV4stEFvliugjPRjDteII84TTsIZEPXY5Cg,335984
|
|
964
956
|
psychopy/app/locale/es_US/LC_MESSAGE/messages.mo,sha256=B6RSjUHgrQccLq9N5bP9LiTOTZr1BvEhpZ4Dvd5cUgo,202308
|
|
965
957
|
psychopy/app/locale/es_US/LC_MESSAGE/messages.po,sha256=4gNoe0X85Jz4eDetGllIXdtylgssbTUQKQY__eBsXRw,337432
|
|
966
958
|
psychopy/app/locale/et_EE/LC_MESSAGE/messages.mo,sha256=iVqKHOf8F42v9CbkWU8yXgsELCVXiLrQKTyZHUUzffY,2901
|
|
967
959
|
psychopy/app/locale/et_EE/LC_MESSAGE/messages.po,sha256=jP4Biwg14L7_z50H5j_4cpvu6l099N_Bf05tQPEEft0,248658
|
|
968
|
-
psychopy/app/locale/fa_IR/LC_MESSAGE/messages.mo,sha256=DQWfAcBOG763IfRf5Q0AyzqkSagk-tV4ZY71HDKCexQ,767
|
|
969
960
|
psychopy/app/locale/fa_IR/LC_MESSAGE/messages.po,sha256=bOLZSDfVr7NZI-aGtYmMirjoUJKfGFbPNq3r34755Ow,130675
|
|
970
|
-
psychopy/app/locale/fi_FI/LC_MESSAGE/messages.mo,sha256=wFSU9HnXm7dbkSiH4agqyL5PPWFaum9qty2nVFgx8uM,539
|
|
971
961
|
psychopy/app/locale/fi_FI/LC_MESSAGE/messages.po,sha256=ohwQfXPtpeHoxt-brOmYh5Kt_gvwBPFGiVExWEENiJA,697
|
|
972
|
-
psychopy/app/locale/fr_FR/LC_MESSAGE/messages.mo,sha256=3NKVrSlh9ChpmRZiPf4Wk3rV_Yl84gRYY_DF5FFw9Tg,12007
|
|
973
962
|
psychopy/app/locale/fr_FR/LC_MESSAGE/messages.po,sha256=JKie1K2nGxDgaYR-vQObef9E8PYHfg_3ogEWkM7wuVQ,252027
|
|
974
|
-
psychopy/app/locale/he_IL/LC_MESSAGE/messages.mo,sha256=raemMFRUGfPw2pQ-eLSvD9ZwyXGNaUae9zkYr331PsA,744
|
|
975
963
|
psychopy/app/locale/he_IL/LC_MESSAGE/messages.po,sha256=A4FxrS55WJ7ReOgI-jmrU-bB_8NZwyFjbQUK4j93THY,247452
|
|
976
|
-
psychopy/app/locale/hi_IN/LC_MESSAGE/messages.mo,sha256=sCp3HJTZLl6p2gjRuriSk6sWcV7XASeKTYMAUdQwx4c,602
|
|
977
964
|
psychopy/app/locale/hi_IN/LC_MESSAGE/messages.po,sha256=Pg40TtFegHhgQW6PbQ1aO7srEjHF3bWIt27TJ9vpwoA,247819
|
|
978
|
-
psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo,sha256=YL0OkWylqScel5-55e0UOTbrS3t4vSGV3fSixt4SfGE,588
|
|
979
965
|
psychopy/app/locale/hu_HU/LC_MESSAGE/messages.po,sha256=lUwWIx2w6yCg1oSFolOAGoWTYq6gilECmOe8MzmSU1c,750
|
|
980
|
-
psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo,sha256=ZKMzzkn-3x5ctpBDJv25-S-4Q9dlaVD8MDgCBhJDbpg,625
|
|
981
966
|
psychopy/app/locale/it_IT/LC_MESSAGE/messages.po,sha256=Hn2PHcXpyupdKp1vWZLV0T5Th1hSyaY59d7f0mVNE0c,247774
|
|
982
|
-
psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo,sha256=7Y2yJxnsKvfD9ujLaliQqh3zrRpxGZ7QZeouuWZKvGI,214412
|
|
983
967
|
psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po,sha256=Bp9TkRPcEHxktSHXae3nj_QNy1HnW2xekUrZouDcNe8,410174
|
|
984
|
-
psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo,sha256=aH0Bw3Wg0KaxWPYu9pNfA8zLizw2fCg6YP191aL63Us,561
|
|
985
968
|
psychopy/app/locale/ko_KR/LC_MESSAGE/messages.po,sha256=Og8xPQ0fmSCKOMp-rFBiPDAACi56C8LdjH7mFuVTwoA,719
|
|
986
|
-
psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo,sha256=IbykycFb3cwbl7OOa9-iJemo7ep92PiV5pEtPse4SrA,2213
|
|
987
969
|
psychopy/app/locale/ms_MY/LC_MESSAGE/messages.po,sha256=i4P--lYS4svecjAVdaMaKIANC_j8iY61Pjrt3cZJZwk,221410
|
|
988
|
-
psychopy/app/locale/nl_NL/LC_MESSAGE/messages.mo,sha256=iphLHkkW0WXGSBHN0VFXyWagI-undbEVcgiL8AnGX3w,582
|
|
989
970
|
psychopy/app/locale/nl_NL/LC_MESSAGE/messages.po,sha256=Q6-Cn4EFX1diXTNptwoLSyyIk1CnTa-vWszCg3zLDWo,744
|
|
990
|
-
psychopy/app/locale/nn_NO/LC_MESSAGE/messages.mo,sha256=KoQtO44sWs76FG7fN7fa9qFFsqtm6ZJ1Nd5fEH8kTws,588
|
|
991
971
|
psychopy/app/locale/nn_NO/LC_MESSAGE/messages.po,sha256=6JYAOTu1oPF2ZvXWb7SjcMfcGVYCRLzfQYTDFF3YGVU,750
|
|
992
|
-
psychopy/app/locale/pl_PL/LC_MESSAGE/messages.mo,sha256=EmQWSWTc_F5xRTn_8orE-8eAdA2aVQtNwB7LH8zhTcs,645
|
|
993
972
|
psychopy/app/locale/pl_PL/LC_MESSAGE/messages.po,sha256=ABgtPUNVifLF9Qs1EbNAYXecFS23eGbU2sF8eTBekF0,807
|
|
994
|
-
psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo,sha256=s7p2APggh8Rt0lO262_2rrA6Yt2nHwauloSy2BrQmsE,541
|
|
995
973
|
psychopy/app/locale/pt_PT/LC_MESSAGE/messages.po,sha256=GPYLZBdIgFZCssEAGpH0oiVT0ksXQ7R3oqvrDIjqhj0,699
|
|
996
|
-
psychopy/app/locale/ro_RO/LC_MESSAGE/messages.mo,sha256=Fd2zXwwfqQpMuZlcejM57-Aa8v3zP_pSFjjSAhI1I_o,644
|
|
997
974
|
psychopy/app/locale/ro_RO/LC_MESSAGE/messages.po,sha256=jMlwnqWAt2UMyxidsnBZJVijpVDB8kpkxEDnXMGwrgk,806
|
|
998
|
-
psychopy/app/locale/ru_RU/LC_MESSAGE/messages.mo,sha256=9NZMgGTc0ssPZNWo-pzpxFlzg46AM_WKlg3z7KMlRLM,563
|
|
999
975
|
psychopy/app/locale/ru_RU/LC_MESSAGE/messages.po,sha256=5L5NMHyllNwE6yaqQ6PFA_LepNpctUShQCN5OgxEFTU,721
|
|
1000
|
-
psychopy/app/locale/sv_SE/LC_MESSAGE/messages.mo,sha256=YbpKMGvm-OzJNXyTx1XLd5dP8isLpHTNMTN6jGYARWo,500
|
|
1001
976
|
psychopy/app/locale/sv_SE/LC_MESSAGE/messages.po,sha256=LkvtiQBjdU6t91hEA2ofV4elnORE_BHF_8_lgyL7rcY,220729
|
|
1002
|
-
psychopy/app/locale/tr_TR/LC_MESSAGE/messages.mo,sha256=H3kvnfuWtVI7lkbh56lFqIMbZumSg8pQlGSR62-ARtg,694
|
|
1003
977
|
psychopy/app/locale/tr_TR/LC_MESSAGE/messages.po,sha256=f1xDpk-tnajxvxr1ouuA6RBeGOxW4r3JpKG71QWvTbU,247318
|
|
1004
|
-
psychopy/app/locale/zh_CN/LC_MESSAGE/messages.mo,sha256=EwHcz8BX0mUyHsm4NJWG4_YF4tcPwOMFuVutZ8Oh1p4,149804
|
|
1005
978
|
psychopy/app/locale/zh_CN/LC_MESSAGE/messages.po,sha256=ERNvLk1FioO5iyg8FbLf3_iebUE4lblwMkhr30NU13A,254179
|
|
1006
|
-
psychopy/app/locale/zh_TW/LC_MESSAGE/messages.mo,sha256=0WPRl-gAaOOGKYVOhy5Ca8gFJG90HDgfMZRFd6WfpUM,56195
|
|
1007
979
|
psychopy/app/locale/zh_TW/LC_MESSAGE/messages.po,sha256=-vpQJVCZdwEWgdR4btjcZyhQmeDSdSuguaX_QEACHZY,210597
|
|
1008
980
|
psychopy/app/pavlovia_ui/__init__.py,sha256=5jb31EYcx76wrTkoQqx_iAGgdPk9n2naMcNn2TLDVBM,896
|
|
1009
981
|
psychopy/app/pavlovia_ui/_base.py,sha256=wAV1htCHAGsnqWNlfX4yVsuKoixoefTcORu1U6-zdeE,8567
|
|
@@ -1017,7 +989,7 @@ psychopy/app/plugin_manager/__init__.py,sha256=bSD1HYo2TXCFMith4-erfzv_PHP6p-qhB
|
|
|
1017
989
|
psychopy/app/plugin_manager/dialog.py,sha256=YW5OfmQ79cPOZ40Vx1yctKy5gDth4Q4qQw1VOw4Dm_I,15102
|
|
1018
990
|
psychopy/app/plugin_manager/output.py,sha256=BUfmvr7EGkDJlj97wku-GKI_vhzx2mNGCAepUHlzyRc,4045
|
|
1019
991
|
psychopy/app/plugin_manager/packages.py,sha256=gykd4LcQJVU5jexhYsoQDeplXBpFo1GQOOS_Yzmz56Q,20072
|
|
1020
|
-
psychopy/app/plugin_manager/plugins.py,sha256=
|
|
992
|
+
psychopy/app/plugin_manager/plugins.py,sha256=go32HSpoFtpdVEI5b90eGRHx0fc2x3NkplXWfsmpW14,47543
|
|
1021
993
|
psychopy/app/plugin_manager/utils.py,sha256=2xEcau7amzOXs9P2QZbLeuvN_437ttyCWYCKC-lCGG4,4267
|
|
1022
994
|
psychopy/app/preferencesDlg.py,sha256=rEZ187UgAeuiyFv9EnSbz9YCZJZtq5unUxxab63QghM,31998
|
|
1023
995
|
psychopy/app/psychopyApp.py,sha256=71Hn-zIRzukQmFhN4H6UMCTf6DQFE5eQ8JdFIMaeh0o,3369
|
|
@@ -1049,7 +1021,7 @@ psychopy/app/themes/spec/PsychopyLight.json,sha256=HKaiptTsu_NoqOY0nvzAVrrEOK5GY
|
|
|
1049
1021
|
psychopy/app/themes/ui.py,sha256=poTSCTSBY1Gw5ZM1LvsUSi7uIDlAi8IZaF1jD_E9Hoc,2517
|
|
1050
1022
|
psychopy/app/ui/__init__.py,sha256=eguN9DmNAlZhvyzcXGv0V-KvVqgZO0DlPiI4WzEQ1hE,5578
|
|
1051
1023
|
psychopy/app/urls.py,sha256=1tNr7Kv6k-nosQZ2e08RDrqditkV8dtMMVatb1ShkUw,1352
|
|
1052
|
-
psychopy/app/utils.py,sha256=
|
|
1024
|
+
psychopy/app/utils.py,sha256=xUpabzQo0tXETP4zd3ZRbdn5irND9JdUWd1Defy_SdI,59389
|
|
1053
1025
|
psychopy/app/viewer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1054
1026
|
psychopy/clock.py,sha256=BnNBNNEPEXsUVlOI0kOv1nIwwaKfxTWlnQHNr0yieg0,21188
|
|
1055
1027
|
psychopy/colors.py,sha256=9hFeCAMM1LetszN-xDVmbU94MOiJI4RRE9VdcarkUDA,41078
|
|
@@ -1609,7 +1581,7 @@ psychopy/experiment/questPlusTemplate.xltx,sha256=8c1yt6el4v_iE79FoelLX267TpFrPs
|
|
|
1609
1581
|
psychopy/experiment/questTemplate.xltx,sha256=p0FzYmMWJH0uaGRFlAdPT4uSzNBHpV7uPM0gZN5yYds,20668
|
|
1610
1582
|
psychopy/experiment/routines/__init__.py,sha256=mQTjLeu5H7K_EGp_WZ7I5jXDKNgPF4ViJz00aG_pV-g,3672
|
|
1611
1583
|
psychopy/experiment/routines/_base.py,sha256=4oqz2jCcwUxYsz6wgKHYhmdVuB3GyVb4YJEpfV-ZYBg,34588
|
|
1612
|
-
psychopy/experiment/routines/counterbalance/__init__.py,sha256=
|
|
1584
|
+
psychopy/experiment/routines/counterbalance/__init__.py,sha256=NuH3o-tm0aF6zlfdD1eEd0vh79zgbdHlf47tYp7CrAk,12603
|
|
1613
1585
|
psychopy/experiment/routines/counterbalance/classic/counterbalance.png,sha256=ficKpm9rX1A-YIzgFNfM6EbwAklenfKeOwP74ktCgfo,3977
|
|
1614
1586
|
psychopy/experiment/routines/counterbalance/classic/counterbalance@2x.png,sha256=UwSvAzg0Y9k1jEtkvbzr277tApPB08o4gFRuhhN5NpA,10628
|
|
1615
1587
|
psychopy/experiment/routines/counterbalance/counterbalanceItems.xltx,sha256=Ht1ZE6c800RGF1LxE6WjWGujNwsMQ04pw6j_VZu86uE,18707
|
|
@@ -2947,4 +2919,4 @@ psychopy/voicekey/parallel_vks.py,sha256=I6a07GvN0Q2k9xidl9YbEUDORG2v9l2H_5Owbpw
|
|
|
2947
2919
|
psychopy/voicekey/signal.py,sha256=Mk363qVsvJampVDfsOTdGq7lPESlKmogmNFqasdghJE,1013
|
|
2948
2920
|
psychopy/voicekey/vk_tools.py,sha256=pFvOvF9b9CfS-JkZ_fv38LxI59hJXQqiz9ymcrJiAFc,8483
|
|
2949
2921
|
psychopy/web.py,sha256=ohiFb7lW1-0pH_62cR-z8ufZ5Nta2jRIjGS4_zosX_U,10228
|
|
2950
|
-
psychopy-2024.1.
|
|
2922
|
+
psychopy-2024.1.1.dist-info/RECORD,,
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|