psychopy 2024.2.4__py3-none-any.whl → 2024.2.5__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 (63) hide show
  1. psychopy/.DS_Store +0 -0
  2. psychopy/CHANGELOG.txt +204 -0
  3. psychopy/GIT_SHA +1 -1
  4. psychopy/VERSION +1 -1
  5. psychopy/app/locale/ar_001/.DS_Store +0 -0
  6. psychopy/app/locale/ar_001/LC_MESSAGE/.DS_Store +0 -0
  7. psychopy/app/locale/ar_001/LC_MESSAGE/messages.po +1511 -3256
  8. psychopy/app/runner/runner.py +18 -8
  9. psychopy/experiment/_experiment.py +32 -7
  10. psychopy/iohub/client/__init__.py +17 -0
  11. psychopy/iohub/client/keyboard.py +5 -0
  12. psychopy/iohub/devices/mouse/linux2.py +4 -0
  13. psychopy/iohub/devices/mouse/win32.py +5 -0
  14. psychopy/tests/data/test_loaded_namespace/test_counterbalance.psyexp +142 -0
  15. psychopy/tests/data/test_loaded_namespace/test_custom_missing.psyexp +129 -0
  16. psychopy/tests/data/test_loaded_namespace/test_missing_counterbalance.psyexp +116 -0
  17. psychopy/tests/data/test_loaded_namespace/test_mix_exp.psyexp +181 -0
  18. psychopy/tests/data/test_loaded_namespace/test_mix_missing.psyexp +140 -0
  19. psychopy/tests/data/test_loaded_namespace/test_mix_name_calibration.psyexp +164 -0
  20. psychopy/tests/test_experiment/test_experiment.py +96 -0
  21. {psychopy-2024.2.4.dist-info → psychopy-2024.2.5.dist-info}/METADATA +1 -1
  22. {psychopy-2024.2.4.dist-info → psychopy-2024.2.5.dist-info}/RECORD +25 -55
  23. psychopy/app/locale/zh_CN/LC_MESSAGE/zh_CN.mo +0 -0
  24. psychopy/app/locale/zh_CN/LC_MESSAGE/zh_CN.po +0 -6127
  25. psychopy/app/locale/zh_CN/LC_MESSAGE/zh_CN_allFlagged.mo +0 -0
  26. psychopy/app/locale/zh_CN/LC_MESSAGE/zh_CN_allFlagged.po +0 -7366
  27. psychopy/demos/builder/Design Templates/randomisedBlocks/html/index.html +0 -23
  28. psychopy/demos/builder/Design Templates/randomisedBlocks/html/randomisedBlocks-legacy-browsers.js +0 -423
  29. psychopy/demos/builder/Design Templates/randomisedBlocks/html/randomisedBlocks.js +0 -427
  30. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/chooseBlock.xlsx +0 -0
  31. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/facesBlock.xlsx +0 -0
  32. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/housesBlock.xlsx +0 -0
  33. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/stims/face01.jpg +0 -0
  34. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/stims/face02.jpg +0 -0
  35. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/stims/face03.jpg +0 -0
  36. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/stims/house01.jpg +0 -0
  37. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/stims/house02.jpg +0 -0
  38. psychopy/demos/builder/Design Templates/randomisedBlocks/html/resources/stims/house03.jpg +0 -0
  39. psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks.py +0 -330
  40. psychopy/demos/builder/Feature Demos/eyetracking/eyetracking.xml +0 -298
  41. psychopy/demos/builder/Feature Demos/eyetracking/eyetracking.xsd +0 -120
  42. psychopy/demos/builder/Tools/gammaCalibration/gamma_correction_visual.psyexp +0 -323
  43. psychopy/demos/builder/Tools/gammaCalibration/gamma_correction_visual.py +0 -562
  44. psychopy/demos/builder/Tools/gammaCalibration/questStairs.xlsx +0 -0
  45. psychopy/demos/builder/Tools/gammaCalibration/readme.md +0 -0
  46. psychopy/demos/builder/Tools/gammaCalibration/resources/low_contrast.png +0 -0
  47. psychopy/demos/builder/Tools/gammaCalibration/resources/make_2nd_order_tex.py +0 -59
  48. psychopy/demos/builder/Tools/gammaCalibration/resources/second_order_tex.png +0 -0
  49. psychopy/demos/coder/stimuli/radialGratingContracting.py +0 -29
  50. psychopy/hardware/serialport.py +0 -51
  51. psychopy/tests/data/__test.png +0 -0
  52. psychopy/tests/data/corrFullRandom_local.csv +0 -16
  53. psychopy/tests/data/corrFullRandom_local.tsv +0 -6
  54. psychopy/tests/data/testLoopsBlocks.psyexp_local.py +0 -328
  55. psychopy/tests/data/text2_height.png +0 -0
  56. psychopy/tests/data/text2_normAddBlend.png +0 -0
  57. psychopy/tests/data/text2_normHexbackground.png +0 -0
  58. psychopy/tests/data/text2_stencil.png +0 -0
  59. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.csv +0 -9
  60. psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.csv +0 -9
  61. {psychopy-2024.2.4.dist-info → psychopy-2024.2.5.dist-info}/WHEEL +0 -0
  62. {psychopy-2024.2.4.dist-info → psychopy-2024.2.5.dist-info}/entry_points.txt +0 -0
  63. {psychopy-2024.2.4.dist-info → psychopy-2024.2.5.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,181 @@
1
+ <?xml version="1.0" ?>
2
+ <PsychoPy2experiment encoding="utf-8" version="2024.3.0">
3
+ <Settings>
4
+ <Param val="ptb" valType="str" updates="None" name="Audio lib"/>
5
+ <Param val="" valType="str" updates="None" name="Completed URL"/>
6
+ <Param val="auto" valType="str" updates="None" name="Data file delimiter"/>
7
+ <Param val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code" updates="None" name="Data filename"/>
8
+ <Param val="True" valType="bool" updates="None" name="Enable Escape"/>
9
+ <Param val="Thank you for your patience." valType="str" updates="None" name="End Message"/>
10
+ <Param val="{'participant':'f&quot;{randint(0, 999999):06.0f}&quot;', 'session':'001'}" valType="code" updates="None" name="Experiment info"/>
11
+ <Param val="True" valType="bool" updates="None" name="Force stereo"/>
12
+ <Param val="True" valType="bool" updates="None" name="Full-screen window"/>
13
+ <Param val="" valType="str" updates="None" name="HTML path"/>
14
+ <Param val="" valType="str" updates="None" name="Incomplete URL"/>
15
+ <Param val="testMonitor" valType="str" updates="None" name="Monitor"/>
16
+ <Param val="[]" valType="list" updates="None" name="Resources"/>
17
+ <Param val="False" valType="bool" updates="None" name="Save csv file"/>
18
+ <Param val="False" valType="bool" updates="None" name="Save excel file"/>
19
+ <Param val="False" valType="bool" updates="None" name="Save hdf5 file"/>
20
+ <Param val="True" valType="bool" updates="None" name="Save log file"/>
21
+ <Param val="True" valType="bool" updates="None" name="Save psydat file"/>
22
+ <Param val="True" valType="bool" updates="None" name="Save wide csv file"/>
23
+ <Param val="1" valType="num" updates="None" name="Screen"/>
24
+ <Param val="True" valType="bool" updates="None" name="Show info dlg"/>
25
+ <Param val="False" valType="bool" updates="None" name="Show mouse"/>
26
+ <Param val="height" valType="str" updates="None" name="Units"/>
27
+ <Param val="" valType="str" updates="None" name="Use version"/>
28
+ <Param val="(1024, 768)" valType="list" updates="None" name="Window size (pixels)"/>
29
+ <Param val="none" valType="str" updates="None" name="backgroundFit"/>
30
+ <Param val="" valType="str" updates="None" name="backgroundImg"/>
31
+ <Param val="avg" valType="str" updates="None" name="blendMode"/>
32
+ <Param val="float" valType="str" updates="None" name="clockFormat"/>
33
+ <Param val="{'thisRow.t': 'priority.CRITICAL', 'expName': 'priority.LOW'}" valType="dict" updates="None" name="colPriority"/>
34
+ <Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
35
+ <Param val="rgb" valType="str" updates="None" name="colorSpace"/>
36
+ <Param val="warning" valType="code" updates="None" name="consoleLoggingLevel"/>
37
+ <Param val="default" valType="str" updates="None" name="ecSampleRate"/>
38
+ <Param val="100.1.1.1" valType="str" updates="None" name="elAddress"/>
39
+ <Param val="FILTER_LEVEL_2" valType="str" updates="None" name="elDataFiltering"/>
40
+ <Param val="FILTER_LEVEL_OFF" valType="str" updates="None" name="elLiveFiltering"/>
41
+ <Param val="EYELINK 1000 DESKTOP" valType="str" updates="None" name="elModel"/>
42
+ <Param val="ELLIPSE_FIT" valType="str" updates="None" name="elPupilAlgorithm"/>
43
+ <Param val="PUPIL_AREA" valType="str" updates="None" name="elPupilMeasure"/>
44
+ <Param val="1000" valType="num" updates="None" name="elSampleRate"/>
45
+ <Param val="False" valType="bool" updates="None" name="elSimMode"/>
46
+ <Param val="RIGHT_EYE" valType="str" updates="None" name="elTrackEyes"/>
47
+ <Param val="PUPIL_CR_TRACKING" valType="str" updates="None" name="elTrackingMode"/>
48
+ <Param val="test_mix_exp" valType="str" updates="None" name="expName"/>
49
+ <Param val="" valType="str" updates="None" name="expVersion"/>
50
+ <Param val="on Sync" valType="str" updates="None" name="exportHTML"/>
51
+ <Param val="None" valType="str" updates="None" name="eyetracker"/>
52
+ <Param val="" valType="code" updates="None" name="frameRate"/>
53
+ <Param val="Attempting to measure frame rate of screen, please wait..." valType="str" updates="None" name="frameRateMsg"/>
54
+ <Param val="127.0.0.1" valType="str" updates="None" name="gpAddress"/>
55
+ <Param val="4242" valType="num" updates="None" name="gpPort"/>
56
+ <Param val="ioHub" valType="str" updates="None" name="keyboardBackend"/>
57
+ <Param val="info" valType="code" updates="None" name="logging level"/>
58
+ <Param val="True" valType="bool" updates="None" name="measureFrameRate"/>
59
+ <Param val="MIDDLE_BUTTON" valType="list" updates="None" name="mgBlink"/>
60
+ <Param val="CONTINUOUS" valType="str" updates="None" name="mgMove"/>
61
+ <Param val="0.5" valType="num" updates="None" name="mgSaccade"/>
62
+ <Param val="neon.local" valType="str" updates="None" name="plCompanionAddress"/>
63
+ <Param val="8080" valType="num" updates="None" name="plCompanionPort"/>
64
+ <Param val="0.6" valType="num" updates="None" name="plConfidenceThreshold"/>
65
+ <Param val="" valType="str" updates="None" name="plPupilCaptureRecordingLocation"/>
66
+ <Param val="127.0.0.1" valType="str" updates="None" name="plPupilRemoteAddress"/>
67
+ <Param val="50020" valType="num" updates="None" name="plPupilRemotePort"/>
68
+ <Param val="1000" valType="num" updates="None" name="plPupilRemoteTimeoutMs"/>
69
+ <Param val="False" valType="bool" updates="None" name="plPupillometryOnly"/>
70
+ <Param val="psychopy_iohub_surface" valType="str" updates="None" name="plSurfaceName"/>
71
+ <Param val="0" valType="code" updates="None" name="runMode"/>
72
+ <Param val="False" valType="bool" updates="None" name="rush"/>
73
+ <Param val="time" valType="str" updates="None" name="sortColumns"/>
74
+ <Param val="" valType="str" updates="None" name="tbLicenseFile"/>
75
+ <Param val="" valType="str" updates="None" name="tbModel"/>
76
+ <Param val="60" valType="num" updates="None" name="tbSampleRate"/>
77
+ <Param val="" valType="str" updates="None" name="tbSerialNo"/>
78
+ <Param val="pyglet" valType="str" updates="None" name="winBackend"/>
79
+ </Settings>
80
+ <Routines>
81
+ <Routine name="trial">
82
+ <RoutineSettingsComponent name="trial" plugin="None">
83
+ <Param val="none" valType="str" updates="None" name="backgroundFit"/>
84
+ <Param val="" valType="str" updates="None" name="backgroundImg"/>
85
+ <Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
86
+ <Param val="rgb" valType="str" updates="None" name="colorSpace"/>
87
+ <Param val="" valType="str" updates="constant" name="desc"/>
88
+ <Param val="False" valType="bool" updates="None" name="disabled"/>
89
+ <Param val="" valType="code" updates="None" name="durationEstim"/>
90
+ <Param val="False" valType="code" updates="None" name="forceNonSlip"/>
91
+ <Param val="trial" valType="code" updates="None" name="name"/>
92
+ <Param val="True" valType="bool" updates="None" name="saveStartStop"/>
93
+ <Param val="" valType="code" updates="constant" name="skipIf"/>
94
+ <Param val="duration (s)" valType="str" updates="None" name="stopType"/>
95
+ <Param val="" valType="code" updates="constant" name="stopVal"/>
96
+ <Param val="False" valType="bool" updates="None" name="useWindowParams"/>
97
+ </RoutineSettingsComponent>
98
+ </Routine>
99
+ <CounterbalanceRoutine name="counterbalance">
100
+ <Param name="conditionsFile" updates="None" val="" valType="file"/>
101
+ <Param name="conditionsVariable" updates="None" val="" valType="code"/>
102
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
103
+ <Param name="endExperimentOnDepletion" updates="None" val="ignore" valType="code"/>
104
+ <Param name="nGroups" updates="None" val="2" valType="code"/>
105
+ <Param name="nReps" updates="None" val="1" valType="code"/>
106
+ <Param name="nSlots" updates="None" val="10" valType="code"/>
107
+ <Param name="name" updates="None" val="counterbalance" valType="code"/>
108
+ <Param name="saveData" updates="None" val="True" valType="bool"/>
109
+ <Param name="saveRemaining" updates="None" val="True" valType="bool"/>
110
+ <Param name="specMode" updates="None" val="uniform" valType="str"/>
111
+ </CounterbalanceRoutine>
112
+ <EyetrackerCalibrationRoutine name="calibration">
113
+ <Param name="borderColor" updates="None" val="black" valType="color"/>
114
+ <Param name="borderWidth" updates="None" val="2" valType="num"/>
115
+ <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
116
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
117
+ <Param name="expandDur" updates="None" val="1" valType="num"/>
118
+ <Param name="expandScale" updates="None" val="1.5" valType="num"/>
119
+ <Param name="fillColor" updates="None" val="" valType="color"/>
120
+ <Param name="innerBorderColor" updates="None" val="black" valType="color"/>
121
+ <Param name="innerBorderWidth" updates="None" val="2" valType="num"/>
122
+ <Param name="innerFillColor" updates="None" val="green" valType="color"/>
123
+ <Param name="innerRadius" updates="None" val="0.0035" valType="num"/>
124
+ <Param name="movementAnimation" updates="None" val="True" valType="bool"/>
125
+ <Param name="movementDur" updates="None" val="1.0" valType="num"/>
126
+ <Param name="name" updates="None" val="calibration" valType="code"/>
127
+ <Param name="outerRadius" updates="None" val="0.01" valType="num"/>
128
+ <Param name="progressMode" updates="None" val="time" valType="str"/>
129
+ <Param name="randomisePos" updates="None" val="True" valType="bool"/>
130
+ <Param name="targetDelay" updates="None" val="1.0" valType="num"/>
131
+ <Param name="targetDur" updates="None" val="1.5" valType="num"/>
132
+ <Param name="targetLayout" updates="None" val="NINE_POINTS" valType="str"/>
133
+ <Param name="textColor" updates="None" val="white" valType="color"/>
134
+ <Param name="units" updates="None" val="from exp settings" valType="str"/>
135
+ </EyetrackerCalibrationRoutine>
136
+ <CounterbalanceRoutine name="counterbalance_2">
137
+ <Param name="conditionsFile" updates="None" val="" valType="file"/>
138
+ <Param name="conditionsVariable" updates="None" val="" valType="code"/>
139
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
140
+ <Param name="endExperimentOnDepletion" updates="None" val="ignore" valType="code"/>
141
+ <Param name="nGroups" updates="None" val="2" valType="code"/>
142
+ <Param name="nReps" updates="None" val="1" valType="code"/>
143
+ <Param name="nSlots" updates="None" val="10" valType="code"/>
144
+ <Param name="name" updates="None" val="counterbalance_2" valType="code"/>
145
+ <Param name="saveData" updates="None" val="True" valType="bool"/>
146
+ <Param name="saveRemaining" updates="None" val="True" valType="bool"/>
147
+ <Param name="specMode" updates="None" val="uniform" valType="str"/>
148
+ </CounterbalanceRoutine>
149
+ <EyetrackerValidationRoutine name="validation">
150
+ <Param name="borderColor" updates="None" val="black" valType="color"/>
151
+ <Param name="borderWidth" updates="None" val="2" valType="num"/>
152
+ <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
153
+ <Param name="cursorFillColor" updates="None" val="green" valType="color"/>
154
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
155
+ <Param name="expandDur" updates="None" val="1" valType="num"/>
156
+ <Param name="expandScale" updates="None" val="1.5" valType="num"/>
157
+ <Param name="fillColor" updates="None" val="" valType="color"/>
158
+ <Param name="innerBorderColor" updates="None" val="black" valType="color"/>
159
+ <Param name="innerBorderWidth" updates="None" val="2" valType="num"/>
160
+ <Param name="innerFillColor" updates="None" val="green" valType="color"/>
161
+ <Param name="innerRadius" updates="None" val="0.0035" valType="num"/>
162
+ <Param name="movementAnimation" updates="None" val="True" valType="bool"/>
163
+ <Param name="movementDur" updates="None" val="1.0" valType="num"/>
164
+ <Param name="name" updates="None" val="validation" valType="code"/>
165
+ <Param name="outerRadius" updates="None" val="0.01" valType="num"/>
166
+ <Param name="progressMode" updates="None" val="time" valType="str"/>
167
+ <Param name="randomisePos" updates="None" val="True" valType="bool"/>
168
+ <Param name="saveAsImg" updates="None" val="False" valType="bool"/>
169
+ <Param name="showResults" updates="None" val="True" valType="bool"/>
170
+ <Param name="targetDelay" updates="None" val="1.0" valType="num"/>
171
+ <Param name="targetDur" updates="None" val="1.5" valType="num"/>
172
+ <Param name="targetLayout" updates="None" val="NINE_POINTS" valType="str"/>
173
+ <Param name="targetPositions" updates="None" val="NINE_POINTS" valType="list"/>
174
+ <Param name="textColor" updates="None" val="auto" valType="color"/>
175
+ <Param name="units" updates="None" val="from exp settings" valType="str"/>
176
+ </EyetrackerValidationRoutine>
177
+ </Routines>
178
+ <Flow>
179
+ <Routine name="trial"/>
180
+ </Flow>
181
+ </PsychoPy2experiment>
@@ -0,0 +1,140 @@
1
+ <?xml version="1.0" ?>
2
+ <PsychoPy2experiment encoding="utf-8" version="2024.3.0">
3
+ <Settings>
4
+ <Param val="ptb" valType="str" updates="None" name="Audio lib"/>
5
+ <Param val="" valType="str" updates="None" name="Completed URL"/>
6
+ <Param val="auto" valType="str" updates="None" name="Data file delimiter"/>
7
+ <Param val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code" updates="None" name="Data filename"/>
8
+ <Param val="True" valType="bool" updates="None" name="Enable Escape"/>
9
+ <Param val="Thank you for your patience." valType="str" updates="None" name="End Message"/>
10
+ <Param val="{'participant':'f&quot;{randint(0, 999999):06.0f}&quot;', 'session':'001'}" valType="code" updates="None" name="Experiment info"/>
11
+ <Param val="True" valType="bool" updates="None" name="Force stereo"/>
12
+ <Param val="True" valType="bool" updates="None" name="Full-screen window"/>
13
+ <Param val="" valType="str" updates="None" name="HTML path"/>
14
+ <Param val="" valType="str" updates="None" name="Incomplete URL"/>
15
+ <Param val="testMonitor" valType="str" updates="None" name="Monitor"/>
16
+ <Param val="[]" valType="list" updates="None" name="Resources"/>
17
+ <Param val="False" valType="bool" updates="None" name="Save csv file"/>
18
+ <Param val="False" valType="bool" updates="None" name="Save excel file"/>
19
+ <Param val="False" valType="bool" updates="None" name="Save hdf5 file"/>
20
+ <Param val="True" valType="bool" updates="None" name="Save log file"/>
21
+ <Param val="True" valType="bool" updates="None" name="Save psydat file"/>
22
+ <Param val="True" valType="bool" updates="None" name="Save wide csv file"/>
23
+ <Param val="1" valType="num" updates="None" name="Screen"/>
24
+ <Param val="True" valType="bool" updates="None" name="Show info dlg"/>
25
+ <Param val="False" valType="bool" updates="None" name="Show mouse"/>
26
+ <Param val="height" valType="str" updates="None" name="Units"/>
27
+ <Param val="" valType="str" updates="None" name="Use version"/>
28
+ <Param val="(1024, 768)" valType="list" updates="None" name="Window size (pixels)"/>
29
+ <Param val="none" valType="str" updates="None" name="backgroundFit"/>
30
+ <Param val="" valType="str" updates="None" name="backgroundImg"/>
31
+ <Param val="avg" valType="str" updates="None" name="blendMode"/>
32
+ <Param val="float" valType="str" updates="None" name="clockFormat"/>
33
+ <Param val="{'thisRow.t': 'priority.CRITICAL', 'expName': 'priority.LOW'}" valType="dict" updates="None" name="colPriority"/>
34
+ <Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
35
+ <Param val="rgb" valType="str" updates="None" name="colorSpace"/>
36
+ <Param val="warning" valType="code" updates="None" name="consoleLoggingLevel"/>
37
+ <Param val="default" valType="str" updates="None" name="ecSampleRate"/>
38
+ <Param val="100.1.1.1" valType="str" updates="None" name="elAddress"/>
39
+ <Param val="FILTER_LEVEL_2" valType="str" updates="None" name="elDataFiltering"/>
40
+ <Param val="FILTER_LEVEL_OFF" valType="str" updates="None" name="elLiveFiltering"/>
41
+ <Param val="EYELINK 1000 DESKTOP" valType="str" updates="None" name="elModel"/>
42
+ <Param val="ELLIPSE_FIT" valType="str" updates="None" name="elPupilAlgorithm"/>
43
+ <Param val="PUPIL_AREA" valType="str" updates="None" name="elPupilMeasure"/>
44
+ <Param val="1000" valType="num" updates="None" name="elSampleRate"/>
45
+ <Param val="False" valType="bool" updates="None" name="elSimMode"/>
46
+ <Param val="RIGHT_EYE" valType="str" updates="None" name="elTrackEyes"/>
47
+ <Param val="PUPIL_CR_TRACKING" valType="str" updates="None" name="elTrackingMode"/>
48
+ <Param val="test_mix_missing" valType="str" updates="None" name="expName"/>
49
+ <Param val="" valType="str" updates="None" name="expVersion"/>
50
+ <Param val="on Sync" valType="str" updates="None" name="exportHTML"/>
51
+ <Param val="None" valType="str" updates="None" name="eyetracker"/>
52
+ <Param val="" valType="code" updates="None" name="frameRate"/>
53
+ <Param val="Attempting to measure frame rate of screen, please wait..." valType="str" updates="None" name="frameRateMsg"/>
54
+ <Param val="127.0.0.1" valType="str" updates="None" name="gpAddress"/>
55
+ <Param val="4242" valType="num" updates="None" name="gpPort"/>
56
+ <Param val="ioHub" valType="str" updates="None" name="keyboardBackend"/>
57
+ <Param val="info" valType="code" updates="None" name="logging level"/>
58
+ <Param val="True" valType="bool" updates="None" name="measureFrameRate"/>
59
+ <Param val="MIDDLE_BUTTON" valType="list" updates="None" name="mgBlink"/>
60
+ <Param val="CONTINUOUS" valType="str" updates="None" name="mgMove"/>
61
+ <Param val="0.5" valType="num" updates="None" name="mgSaccade"/>
62
+ <Param val="neon.local" valType="str" updates="None" name="plCompanionAddress"/>
63
+ <Param val="8080" valType="num" updates="None" name="plCompanionPort"/>
64
+ <Param val="0.6" valType="num" updates="None" name="plConfidenceThreshold"/>
65
+ <Param val="" valType="str" updates="None" name="plPupilCaptureRecordingLocation"/>
66
+ <Param val="127.0.0.1" valType="str" updates="None" name="plPupilRemoteAddress"/>
67
+ <Param val="50020" valType="num" updates="None" name="plPupilRemotePort"/>
68
+ <Param val="1000" valType="num" updates="None" name="plPupilRemoteTimeoutMs"/>
69
+ <Param val="False" valType="bool" updates="None" name="plPupillometryOnly"/>
70
+ <Param val="psychopy_iohub_surface" valType="str" updates="None" name="plSurfaceName"/>
71
+ <Param val="0" valType="code" updates="None" name="runMode"/>
72
+ <Param val="False" valType="bool" updates="None" name="rush"/>
73
+ <Param val="time" valType="str" updates="None" name="sortColumns"/>
74
+ <Param val="" valType="str" updates="None" name="tbLicenseFile"/>
75
+ <Param val="" valType="str" updates="None" name="tbModel"/>
76
+ <Param val="60" valType="num" updates="None" name="tbSampleRate"/>
77
+ <Param val="" valType="str" updates="None" name="tbSerialNo"/>
78
+ <Param val="pyglet" valType="str" updates="None" name="winBackend"/>
79
+ </Settings>
80
+ <Routines>
81
+ <Routine name="trial">
82
+ <RoutineSettingsComponent name="trial" plugin="None">
83
+ <Param val="none" valType="str" updates="None" name="backgroundFit"/>
84
+ <Param val="" valType="str" updates="None" name="backgroundImg"/>
85
+ <Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
86
+ <Param val="rgb" valType="str" updates="None" name="colorSpace"/>
87
+ <Param val="" valType="str" updates="constant" name="desc"/>
88
+ <Param val="False" valType="bool" updates="None" name="disabled"/>
89
+ <Param val="" valType="code" updates="None" name="durationEstim"/>
90
+ <Param val="False" valType="code" updates="None" name="forceNonSlip"/>
91
+ <Param val="trial" valType="code" updates="None" name="name"/>
92
+ <Param val="True" valType="bool" updates="None" name="saveStartStop"/>
93
+ <Param val="" valType="code" updates="constant" name="skipIf"/>
94
+ <Param val="duration (s)" valType="str" updates="None" name="stopType"/>
95
+ <Param val="" valType="code" updates="constant" name="stopVal"/>
96
+ <Param val="False" valType="bool" updates="None" name="useWindowParams"/>
97
+ </RoutineSettingsComponent>
98
+ </Routine>
99
+ <EyetrackerCalibrationRoutine name="calibration_2">
100
+ <Param name="borderColor" updates="None" val="black" valType="color"/>
101
+ <Param name="borderWidth" updates="None" val="2" valType="num"/>
102
+ <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
103
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
104
+ <Param name="expandDur" updates="None" val="1" valType="num"/>
105
+ <Param name="expandScale" updates="None" val="1.5" valType="num"/>
106
+ <Param name="fillColor" updates="None" val="" valType="color"/>
107
+ <Param name="innerBorderColor" updates="None" val="black" valType="color"/>
108
+ <Param name="innerBorderWidth" updates="None" val="2" valType="num"/>
109
+ <Param name="innerFillColor" updates="None" val="green" valType="color"/>
110
+ <Param name="innerRadius" updates="None" val="0.0035" valType="num"/>
111
+ <Param name="movementAnimation" updates="None" val="True" valType="bool"/>
112
+ <Param name="movementDur" updates="None" val="1.0" valType="num"/>
113
+ <Param name="name" updates="None" val="calibration_2" valType="code"/>
114
+ <Param name="outerRadius" updates="None" val="0.01" valType="num"/>
115
+ <Param name="progressMode" updates="None" val="time" valType="str"/>
116
+ <Param name="randomisePos" updates="None" val="True" valType="bool"/>
117
+ <Param name="targetDelay" updates="None" val="1.0" valType="num"/>
118
+ <Param name="targetDur" updates="None" val="1.5" valType="num"/>
119
+ <Param name="targetLayout" updates="None" val="NINE_POINTS" valType="str"/>
120
+ <Param name="textColor" updates="None" val="white" valType="color"/>
121
+ <Param name="units" updates="None" val="from exp settings" valType="str"/>
122
+ </EyetrackerCalibrationRoutine>
123
+ <CounterbalanceRoutine name="counterbalance_2">
124
+ <Param name="conditionsFile" updates="None" val="" valType="file"/>
125
+ <Param name="conditionsVariable" updates="None" val="" valType="code"/>
126
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
127
+ <Param name="endExperimentOnDepletion" updates="None" val="ignore" valType="code"/>
128
+ <Param name="nGroups" updates="None" val="2" valType="code"/>
129
+ <Param name="nReps" updates="None" val="1" valType="code"/>
130
+ <Param name="nSlots" updates="None" val="10" valType="code"/>
131
+ <Param name="name" updates="None" val="counterbalance_2" valType="code"/>
132
+ <Param name="saveData" updates="None" val="True" valType="bool"/>
133
+ <Param name="saveRemaining" updates="None" val="True" valType="bool"/>
134
+ <Param name="specMode" updates="None" val="uniform" valType="str"/>
135
+ </CounterbalanceRoutine>
136
+ </Routines>
137
+ <Flow>
138
+ <Routine name="trial"/>
139
+ </Flow>
140
+ </PsychoPy2experiment>
@@ -0,0 +1,164 @@
1
+ <?xml version="1.0" ?>
2
+ <PsychoPy2experiment encoding="utf-8" version="2024.3.0">
3
+ <Settings>
4
+ <Param val="ptb" valType="str" updates="None" name="Audio lib"/>
5
+ <Param val="" valType="str" updates="None" name="Completed URL"/>
6
+ <Param val="auto" valType="str" updates="None" name="Data file delimiter"/>
7
+ <Param val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code" updates="None" name="Data filename"/>
8
+ <Param val="True" valType="bool" updates="None" name="Enable Escape"/>
9
+ <Param val="Thank you for your patience." valType="str" updates="None" name="End Message"/>
10
+ <Param val="{'participant':'f&quot;{randint(0, 999999):06.0f}&quot;', 'session':'001'}" valType="code" updates="None" name="Experiment info"/>
11
+ <Param val="True" valType="bool" updates="None" name="Force stereo"/>
12
+ <Param val="True" valType="bool" updates="None" name="Full-screen window"/>
13
+ <Param val="" valType="str" updates="None" name="HTML path"/>
14
+ <Param val="" valType="str" updates="None" name="Incomplete URL"/>
15
+ <Param val="testMonitor" valType="str" updates="None" name="Monitor"/>
16
+ <Param val="[]" valType="list" updates="None" name="Resources"/>
17
+ <Param val="False" valType="bool" updates="None" name="Save csv file"/>
18
+ <Param val="False" valType="bool" updates="None" name="Save excel file"/>
19
+ <Param val="False" valType="bool" updates="None" name="Save hdf5 file"/>
20
+ <Param val="True" valType="bool" updates="None" name="Save log file"/>
21
+ <Param val="True" valType="bool" updates="None" name="Save psydat file"/>
22
+ <Param val="True" valType="bool" updates="None" name="Save wide csv file"/>
23
+ <Param val="1" valType="num" updates="None" name="Screen"/>
24
+ <Param val="True" valType="bool" updates="None" name="Show info dlg"/>
25
+ <Param val="False" valType="bool" updates="None" name="Show mouse"/>
26
+ <Param val="height" valType="str" updates="None" name="Units"/>
27
+ <Param val="" valType="str" updates="None" name="Use version"/>
28
+ <Param val="(1024, 768)" valType="list" updates="None" name="Window size (pixels)"/>
29
+ <Param val="none" valType="str" updates="None" name="backgroundFit"/>
30
+ <Param val="" valType="str" updates="None" name="backgroundImg"/>
31
+ <Param val="avg" valType="str" updates="None" name="blendMode"/>
32
+ <Param val="float" valType="str" updates="None" name="clockFormat"/>
33
+ <Param val="{'thisRow.t': 'priority.CRITICAL', 'expName': 'priority.LOW'}" valType="dict" updates="None" name="colPriority"/>
34
+ <Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
35
+ <Param val="rgb" valType="str" updates="None" name="colorSpace"/>
36
+ <Param val="warning" valType="code" updates="None" name="consoleLoggingLevel"/>
37
+ <Param val="default" valType="str" updates="None" name="ecSampleRate"/>
38
+ <Param val="100.1.1.1" valType="str" updates="None" name="elAddress"/>
39
+ <Param val="FILTER_LEVEL_2" valType="str" updates="None" name="elDataFiltering"/>
40
+ <Param val="FILTER_LEVEL_OFF" valType="str" updates="None" name="elLiveFiltering"/>
41
+ <Param val="EYELINK 1000 DESKTOP" valType="str" updates="None" name="elModel"/>
42
+ <Param val="ELLIPSE_FIT" valType="str" updates="None" name="elPupilAlgorithm"/>
43
+ <Param val="PUPIL_AREA" valType="str" updates="None" name="elPupilMeasure"/>
44
+ <Param val="1000" valType="num" updates="None" name="elSampleRate"/>
45
+ <Param val="False" valType="bool" updates="None" name="elSimMode"/>
46
+ <Param val="RIGHT_EYE" valType="str" updates="None" name="elTrackEyes"/>
47
+ <Param val="PUPIL_CR_TRACKING" valType="str" updates="None" name="elTrackingMode"/>
48
+ <Param val="test_mix_name_calibration" valType="str" updates="None" name="expName"/>
49
+ <Param val="" valType="str" updates="None" name="expVersion"/>
50
+ <Param val="on Sync" valType="str" updates="None" name="exportHTML"/>
51
+ <Param val="None" valType="str" updates="None" name="eyetracker"/>
52
+ <Param val="" valType="code" updates="None" name="frameRate"/>
53
+ <Param val="Attempting to measure frame rate of screen, please wait..." valType="str" updates="None" name="frameRateMsg"/>
54
+ <Param val="127.0.0.1" valType="str" updates="None" name="gpAddress"/>
55
+ <Param val="4242" valType="num" updates="None" name="gpPort"/>
56
+ <Param val="ioHub" valType="str" updates="None" name="keyboardBackend"/>
57
+ <Param val="info" valType="code" updates="None" name="logging level"/>
58
+ <Param val="True" valType="bool" updates="None" name="measureFrameRate"/>
59
+ <Param val="MIDDLE_BUTTON" valType="list" updates="None" name="mgBlink"/>
60
+ <Param val="CONTINUOUS" valType="str" updates="None" name="mgMove"/>
61
+ <Param val="0.5" valType="num" updates="None" name="mgSaccade"/>
62
+ <Param val="neon.local" valType="str" updates="None" name="plCompanionAddress"/>
63
+ <Param val="8080" valType="num" updates="None" name="plCompanionPort"/>
64
+ <Param val="0.6" valType="num" updates="None" name="plConfidenceThreshold"/>
65
+ <Param val="" valType="str" updates="None" name="plPupilCaptureRecordingLocation"/>
66
+ <Param val="127.0.0.1" valType="str" updates="None" name="plPupilRemoteAddress"/>
67
+ <Param val="50020" valType="num" updates="None" name="plPupilRemotePort"/>
68
+ <Param val="1000" valType="num" updates="None" name="plPupilRemoteTimeoutMs"/>
69
+ <Param val="False" valType="bool" updates="None" name="plPupillometryOnly"/>
70
+ <Param val="psychopy_iohub_surface" valType="str" updates="None" name="plSurfaceName"/>
71
+ <Param val="0" valType="code" updates="None" name="runMode"/>
72
+ <Param val="False" valType="bool" updates="None" name="rush"/>
73
+ <Param val="time" valType="str" updates="None" name="sortColumns"/>
74
+ <Param val="" valType="str" updates="None" name="tbLicenseFile"/>
75
+ <Param val="" valType="str" updates="None" name="tbModel"/>
76
+ <Param val="60" valType="num" updates="None" name="tbSampleRate"/>
77
+ <Param val="" valType="str" updates="None" name="tbSerialNo"/>
78
+ <Param val="pyglet" valType="str" updates="None" name="winBackend"/>
79
+ </Settings>
80
+ <Routines>
81
+ <Routine name="trial">
82
+ <RoutineSettingsComponent name="trial" plugin="None">
83
+ <Param val="none" valType="str" updates="None" name="backgroundFit"/>
84
+ <Param val="" valType="str" updates="None" name="backgroundImg"/>
85
+ <Param val="$[0,0,0]" valType="color" updates="None" name="color"/>
86
+ <Param val="rgb" valType="str" updates="None" name="colorSpace"/>
87
+ <Param val="" valType="str" updates="constant" name="desc"/>
88
+ <Param val="False" valType="bool" updates="None" name="disabled"/>
89
+ <Param val="" valType="code" updates="None" name="durationEstim"/>
90
+ <Param val="False" valType="code" updates="None" name="forceNonSlip"/>
91
+ <Param val="trial" valType="code" updates="None" name="name"/>
92
+ <Param val="True" valType="bool" updates="None" name="saveStartStop"/>
93
+ <Param val="" valType="code" updates="constant" name="skipIf"/>
94
+ <Param val="duration (s)" valType="str" updates="None" name="stopType"/>
95
+ <Param val="" valType="code" updates="constant" name="stopVal"/>
96
+ <Param val="False" valType="bool" updates="None" name="useWindowParams"/>
97
+ </RoutineSettingsComponent>
98
+ </Routine>
99
+ <EyetrackerCalibrationRoutine name="calibration_2">
100
+ <Param name="borderColor" updates="None" val="black" valType="color"/>
101
+ <Param name="borderWidth" updates="None" val="2" valType="num"/>
102
+ <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
103
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
104
+ <Param name="expandDur" updates="None" val="1" valType="num"/>
105
+ <Param name="expandScale" updates="None" val="1.5" valType="num"/>
106
+ <Param name="fillColor" updates="None" val="" valType="color"/>
107
+ <Param name="innerBorderColor" updates="None" val="black" valType="color"/>
108
+ <Param name="innerBorderWidth" updates="None" val="2" valType="num"/>
109
+ <Param name="innerFillColor" updates="None" val="green" valType="color"/>
110
+ <Param name="innerRadius" updates="None" val="0.0035" valType="num"/>
111
+ <Param name="movementAnimation" updates="None" val="True" valType="bool"/>
112
+ <Param name="movementDur" updates="None" val="1.0" valType="num"/>
113
+ <Param name="name" updates="None" val="calibration_2" valType="code"/>
114
+ <Param name="outerRadius" updates="None" val="0.01" valType="num"/>
115
+ <Param name="progressMode" updates="None" val="time" valType="str"/>
116
+ <Param name="randomisePos" updates="None" val="True" valType="bool"/>
117
+ <Param name="targetDelay" updates="None" val="1.0" valType="num"/>
118
+ <Param name="targetDur" updates="None" val="1.5" valType="num"/>
119
+ <Param name="targetLayout" updates="None" val="NINE_POINTS" valType="str"/>
120
+ <Param name="textColor" updates="None" val="white" valType="color"/>
121
+ <Param name="units" updates="None" val="from exp settings" valType="str"/>
122
+ </EyetrackerCalibrationRoutine>
123
+ <EyetrackerCalibrationRoutine name="custom_2">
124
+ <Param name="borderColor" updates="None" val="black" valType="color"/>
125
+ <Param name="borderWidth" updates="None" val="2" valType="num"/>
126
+ <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
127
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
128
+ <Param name="expandDur" updates="None" val="1" valType="num"/>
129
+ <Param name="expandScale" updates="None" val="1.5" valType="num"/>
130
+ <Param name="fillColor" updates="None" val="" valType="color"/>
131
+ <Param name="innerBorderColor" updates="None" val="black" valType="color"/>
132
+ <Param name="innerBorderWidth" updates="None" val="2" valType="num"/>
133
+ <Param name="innerFillColor" updates="None" val="green" valType="color"/>
134
+ <Param name="innerRadius" updates="None" val="0.0035" valType="num"/>
135
+ <Param name="movementAnimation" updates="None" val="True" valType="bool"/>
136
+ <Param name="movementDur" updates="None" val="1.0" valType="num"/>
137
+ <Param name="name" updates="None" val="custom_2" valType="code"/>
138
+ <Param name="outerRadius" updates="None" val="0.01" valType="num"/>
139
+ <Param name="progressMode" updates="None" val="time" valType="str"/>
140
+ <Param name="randomisePos" updates="None" val="True" valType="bool"/>
141
+ <Param name="targetDelay" updates="None" val="1.0" valType="num"/>
142
+ <Param name="targetDur" updates="None" val="1.5" valType="num"/>
143
+ <Param name="targetLayout" updates="None" val="NINE_POINTS" valType="str"/>
144
+ <Param name="textColor" updates="None" val="white" valType="color"/>
145
+ <Param name="units" updates="None" val="from exp settings" valType="str"/>
146
+ </EyetrackerCalibrationRoutine>
147
+ <CounterbalanceRoutine name="counterbalance_2">
148
+ <Param name="conditionsFile" updates="None" val="" valType="file"/>
149
+ <Param name="conditionsVariable" updates="None" val="" valType="code"/>
150
+ <Param name="disabled" updates="None" val="False" valType="bool"/>
151
+ <Param name="endExperimentOnDepletion" updates="None" val="True" valType="code"/>
152
+ <Param name="nGroups" updates="None" val="2" valType="code"/>
153
+ <Param name="nReps" updates="None" val="1" valType="code"/>
154
+ <Param name="nSlots" updates="None" val="10" valType="code"/>
155
+ <Param name="name" updates="None" val="counterbalance_2" valType="code"/>
156
+ <Param name="saveData" updates="None" val="True" valType="bool"/>
157
+ <Param name="saveRemaining" updates="None" val="True" valType="bool"/>
158
+ <Param name="specMode" updates="None" val="uniform" valType="str"/>
159
+ </CounterbalanceRoutine>
160
+ </Routines>
161
+ <Flow>
162
+ <Routine name="trial"/>
163
+ </Flow>
164
+ </PsychoPy2experiment>
@@ -101,3 +101,99 @@ class TestExperiment:
101
101
  else:
102
102
  assert case['value'] not in unhandledResources
103
103
 
104
+ def test_loaded_namespace(self):
105
+
106
+ exp = experiment.Experiment()
107
+ allRoutines = experiment.getAllStandaloneRoutines(fetchIcons=False)
108
+
109
+ """
110
+ Case structure
111
+ ==============
112
+ file : str
113
+ Experiment file to load
114
+ expectedSet : Set[str]
115
+ The expected names in the user namespace after routines are loaded and added
116
+ names : List[str]
117
+ Name of each routine to be added after experiment is loaded, paired with tags
118
+ tags : List[str]
119
+ Type of each routine to be added after experiment is loaded, paired with names
120
+ Can be 'CounterbalanceRoutine', 'EyetrackerCalibrationRoutine', 'EyetrackerValidationRoutine'
121
+ """
122
+
123
+ cases = [
124
+ {"file": "test_counterbalance.psyexp",
125
+ "expectedSet": {'trial', 'counterbalance', 'counterbalance_2', 'counterbalance_3',
126
+ 'counterbalance_4', 'counterbalance_5', 'calibration', 'calibration_2'},
127
+ "names": ['counterbalance', 'counterbalance', 'calibration', 'calibration'],
128
+ "tags": ['CounterbalanceRoutine', 'CounterbalanceRoutine', 'EyetrackerCalibrationRoutine',
129
+ 'EyetrackerCalibrationRoutine']},
130
+
131
+ {"file": "test_counterbalance.psyexp",
132
+ "expectedSet": {'trial', 'counterbalance', 'counterbalance_2', 'counterbalance_3',
133
+ 'calibration', 'counterbalance_4', 'calibration_2'},
134
+ "names": ['calibration', 'counterbalance', 'calibration'],
135
+ "tags": ['EyetrackerCalibrationRoutine', 'EyetrackerCalibrationRoutine', 'EyetrackerCalibrationRoutine']},
136
+
137
+ {"file": "test_custom_missing.psyexp",
138
+ "expectedSet": {'trial', 'custom_2', 'counterbalance_2', 'counterbalance',
139
+ 'counterbalance_3', 'calibration', 'calibration_2'},
140
+ "names": ['counterbalance', 'counterbalance', 'calibration', 'calibration'],
141
+ "tags": ['CounterbalanceRoutine', 'CounterbalanceRoutine', 'EyetrackerCalibrationRoutine',
142
+ 'EyetrackerCalibrationRoutine']},
143
+
144
+ {"file": "test_missing_counterbalance.psyexp",
145
+ "expectedSet": {'trial', 'counterbalance_2', 'counterbalance', 'counterbalance_3'},
146
+ "names": ['counterbalance', 'counterbalance'],
147
+ "tags": ['CounterbalanceRoutine', 'EyetrackerCalibrationRoutine']},
148
+
149
+ {"file": "test_mix_exp.psyexp",
150
+ "expectedSet": {'trial', 'counterbalance', 'calibration', 'counterbalance_2',
151
+ 'validation', 'counterbalance_3', 'calibration_2', 'validation_2'},
152
+ "names": ['counterbalance', 'calibration', 'validation'],
153
+ "tags": ['CounterbalanceRoutine', 'EyetrackerCalibrationRoutine', 'EyetrackerValidationRoutine']},
154
+
155
+ {"file": "test_mix_missing.psyexp",
156
+ "expectedSet": {'trial', 'calibration_2', 'counterbalance_2', 'calibration',
157
+ 'counterbalance', 'calibration_3', 'counterbalance_3'},
158
+ "names": ['calibration_2', 'counterbalance_2', 'calibration', 'counterbalance'],
159
+ "tags": ['EyetrackerCalibrationRoutine', 'CounterbalanceRoutine', 'EyetrackerCalibrationRoutine',
160
+ 'CounterbalanceRoutine']},
161
+
162
+ {"file": "test_mix_name_calibration.psyexp",
163
+ "expectedSet": {'trial', 'calibration_2', 'custom_2', 'counterbalance_2',
164
+ 'calibration', 'calibration_3', 'custom_3', 'custom'},
165
+ "names": ['calibration', 'calibration', 'custom_2', 'custom'],
166
+ "tags": ['EyetrackerCalibrationRoutine', 'CounterbalanceRoutine', 'CounterbalanceRoutine',
167
+ 'EyetrackerCalibrationRoutine']},
168
+ ]
169
+
170
+ for case in cases:
171
+ exp.loadFromXML(Path(TESTS_DATA_PATH) / "test_loaded_namespace" / case['file'])
172
+
173
+ # add new routines to the experiment and their names to namespace
174
+ namespace = exp.namespace
175
+ for (name, tag) in zip(case["names"], case["tags"]):
176
+ routine = allRoutines[tag](exp=exp, name=name)
177
+ rtGoodName = routine.params['name'].val = namespace.makeValid(
178
+ routine.params['name'].val)
179
+ namespace.add(rtGoodName)
180
+ exp.addStandaloneRoutine(routineName=rtGoodName, routine=routine)
181
+
182
+ actualSet = set(namespace.user)
183
+ expectedSet = case["expectedSet"]
184
+ print()
185
+ print(case['file'])
186
+ print(actualSet)
187
+ print(expectedSet)
188
+ print()
189
+
190
+ # check for no duplicate names in the namespace.user list
191
+ assert len(actualSet) == len(expectedSet)
192
+
193
+ # check that expected names in namespace.user list is
194
+ # equivalent to the actual names in namespace.user
195
+ assert len(actualSet) == len(actualSet.intersection(expectedSet))
196
+
197
+
198
+
199
+