psynet-step 0.1.0rc0__tar.gz

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.
Files changed (51) hide show
  1. psynet_step-0.1.0rc0/.gitignore +5 -0
  2. psynet_step-0.1.0rc0/CHANGELOG.md +35 -0
  3. psynet_step-0.1.0rc0/LICENSE +21 -0
  4. psynet_step-0.1.0rc0/PKG-INFO +153 -0
  5. psynet_step-0.1.0rc0/README.md +97 -0
  6. psynet_step-0.1.0rc0/pyproject.toml +86 -0
  7. psynet_step-0.1.0rc0/step/VERSION +1 -0
  8. psynet_step-0.1.0rc0/step/__init__.py +1451 -0
  9. psynet_step-0.1.0rc0/step/locales/ar/LC_MESSAGES/step.po +257 -0
  10. psynet_step-0.1.0rc0/step/locales/bg/LC_MESSAGES/step.po +267 -0
  11. psynet_step-0.1.0rc0/step/locales/cs/LC_MESSAGES/step.po +261 -0
  12. psynet_step-0.1.0rc0/step/locales/da/LC_MESSAGES/step.po +262 -0
  13. psynet_step-0.1.0rc0/step/locales/de/LC_MESSAGES/step.po +269 -0
  14. psynet_step-0.1.0rc0/step/locales/el/LC_MESSAGES/step.po +269 -0
  15. psynet_step-0.1.0rc0/step/locales/en/LC_MESSAGES/step.po +263 -0
  16. psynet_step-0.1.0rc0/step/locales/es/LC_MESSAGES/step.po +267 -0
  17. psynet_step-0.1.0rc0/step/locales/et/LC_MESSAGES/step.po +264 -0
  18. psynet_step-0.1.0rc0/step/locales/fi/LC_MESSAGES/step.po +267 -0
  19. psynet_step-0.1.0rc0/step/locales/fr/LC_MESSAGES/step.po +267 -0
  20. psynet_step-0.1.0rc0/step/locales/he/LC_MESSAGES/step.po +252 -0
  21. psynet_step-0.1.0rc0/step/locales/hi/LC_MESSAGES/step.po +265 -0
  22. psynet_step-0.1.0rc0/step/locales/hr/LC_MESSAGES/step.po +262 -0
  23. psynet_step-0.1.0rc0/step/locales/hu/LC_MESSAGES/step.po +268 -0
  24. psynet_step-0.1.0rc0/step/locales/id/LC_MESSAGES/step.po +267 -0
  25. psynet_step-0.1.0rc0/step/locales/it/LC_MESSAGES/step.po +266 -0
  26. psynet_step-0.1.0rc0/step/locales/ja/LC_MESSAGES/step.po +249 -0
  27. psynet_step-0.1.0rc0/step/locales/ko/LC_MESSAGES/step.po +249 -0
  28. psynet_step-0.1.0rc0/step/locales/lt/LC_MESSAGES/step.po +261 -0
  29. psynet_step-0.1.0rc0/step/locales/nb/LC_MESSAGES/step.po +263 -0
  30. psynet_step-0.1.0rc0/step/locales/nl/LC_MESSAGES/step.po +267 -0
  31. psynet_step-0.1.0rc0/step/locales/no/LC_MESSAGES/step.po +264 -0
  32. psynet_step-0.1.0rc0/step/locales/pl/LC_MESSAGES/step.po +264 -0
  33. psynet_step-0.1.0rc0/step/locales/pt/LC_MESSAGES/step.po +268 -0
  34. psynet_step-0.1.0rc0/step/locales/ro/LC_MESSAGES/step.po +269 -0
  35. psynet_step-0.1.0rc0/step/locales/ru/LC_MESSAGES/step.po +263 -0
  36. psynet_step-0.1.0rc0/step/locales/sk/LC_MESSAGES/step.po +262 -0
  37. psynet_step-0.1.0rc0/step/locales/sl/LC_MESSAGES/step.po +264 -0
  38. psynet_step-0.1.0rc0/step/locales/sr/LC_MESSAGES/step.po +263 -0
  39. psynet_step-0.1.0rc0/step/locales/step.pot +209 -0
  40. psynet_step-0.1.0rc0/step/locales/sv/LC_MESSAGES/step.po +265 -0
  41. psynet_step-0.1.0rc0/step/locales/tr/LC_MESSAGES/step.po +264 -0
  42. psynet_step-0.1.0rc0/step/locales/uk/LC_MESSAGES/step.po +261 -0
  43. psynet_step-0.1.0rc0/step/locales/ur/LC_MESSAGES/step.po +264 -0
  44. psynet_step-0.1.0rc0/step/locales/vi/LC_MESSAGES/step.po +263 -0
  45. psynet_step-0.1.0rc0/step/locales/zh/LC_MESSAGES/step.po +249 -0
  46. psynet_step-0.1.0rc0/step/static/images/icons/flag-fill.svg +3 -0
  47. psynet_step-0.1.0rc0/step/static/images/icons/star-fill.svg +3 -0
  48. psynet_step-0.1.0rc0/step/static/scripts/bootstrap-tagsinput.min.js +7 -0
  49. psynet_step-0.1.0rc0/step/static/scripts/bootstrap.bundle.min.js +7 -0
  50. psynet_step-0.1.0rc0/step/static/scripts/typeahead.bundle.min.js +8 -0
  51. psynet_step-0.1.0rc0/step/templates/step.html +554 -0
@@ -0,0 +1,5 @@
1
+ __pycache__/
2
+ .DS_Store
3
+ build/
4
+ dist/
5
+ *.egg-info/
@@ -0,0 +1,35 @@
1
+ # Change Log
2
+
3
+ All important changes to the psynet-step package will be documented here.
4
+
5
+ The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and the project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [v0.1.0]
8
+
9
+ ### Added
10
+
11
+ - Added a modern PEP 621 `pyproject.toml` (Hatchling backend) so the package can be built and published to PyPI as `psynet-step` (the Python import name remains `step`).
12
+ - Added Python 3.9 / 3.10 / 3.11 / 3.12 / 3.13 classifiers and `requires-python = ">=3.9"`.
13
+ - Added `[project.urls]` for Homepage / Repository / Issues.
14
+ - Added `dev` (pytest), `psynet`, and `publish` optional-dependency extras. The `psynet` extra is only required at runtime when using STEP in a PsyNet experiment; declaring PsyNet as a hard dependency would create a circular dependency if PsyNet ever adds `psynet-step` to its own extras.
15
+ - Added `markupsafe` and `sqlalchemy` as explicit runtime dependencies (previously only available transitively through psynet/dallinger).
16
+ - Added `step/VERSION` as the single source of truth for the package version, read at build time by Hatchling and at import time by `step/__init__.py`.
17
+ - Added `CHANGELOG.md`.
18
+
19
+ ### Changed
20
+
21
+ - Bumped version from 0.0.1 to 0.1.0 for the first PyPI release.
22
+ - Filled in the LICENSE copyright holder (was a placeholder `[year] [fullname]`).
23
+ - Updated README with PyPI installation instructions and corrected repository URLs.
24
+ - Updated `.gitignore` to exclude `dist/` build artifacts.
25
+
26
+ ### Removed
27
+
28
+ - Removed `setup.py` (replaced by `pyproject.toml`).
29
+ - Removed `MANIFEST.in` (not used by Hatchling; replaced by explicit wheel/sdist include/exclude rules in `pyproject.toml`).
30
+ - Removed the empty root `__init__.py` (it was not part of the `step` package and served no purpose).
31
+ - Removed `psynet` and `dallinger` from hard runtime dependencies (moved to optional `[psynet]` extra to avoid potential circular dependencies).
32
+
33
+ ## [v0.0.1]
34
+
35
+ Initial development release (not published to PyPI).
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Pol van Rijn, Harin Lee, Peter Harrison, Nori Jacoby
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,153 @@
1
+ Metadata-Version: 2.4
2
+ Name: psynet-step
3
+ Version: 0.1.0rc0
4
+ Summary: STEP – Sequential Transmission Evaluation Pipeline for PsyNet experiments
5
+ Project-URL: Homepage, https://github.com/pmcharrison/STEP
6
+ Project-URL: Repository, https://github.com/pmcharrison/STEP
7
+ Project-URL: Issues, https://github.com/pmcharrison/STEP/issues
8
+ Author: Harin Lee
9
+ Author-email: Pol van Rijn <pol.van-rijn@ae.mpg.de>, Peter Harrison <pmch2@cam.ac.uk>, Nori Jacoby <nori.jacoby@ae.mpg.de>
10
+ Maintainer-email: Peter Harrison <pmch2@cam.ac.uk>, Frank Höger <fh337@cornell.edu>
11
+ License: MIT License
12
+
13
+ Copyright (c) 2024 Pol van Rijn, Harin Lee, Peter Harrison, Nori Jacoby
14
+
15
+ Permission is hereby granted, free of charge, to any person obtaining a copy
16
+ of this software and associated documentation files (the "Software"), to deal
17
+ in the Software without restriction, including without limitation the rights
18
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19
+ copies of the Software, and to permit persons to whom the Software is
20
+ furnished to do so, subject to the following conditions:
21
+
22
+ The above copyright notice and this permission notice shall be included in all
23
+ copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
+ SOFTWARE.
32
+ License-File: LICENSE
33
+ Keywords: evaluation,experiments,online,psychology,psynet,tagging
34
+ Classifier: Development Status :: 4 - Beta
35
+ Classifier: Intended Audience :: Science/Research
36
+ Classifier: License :: OSI Approved :: MIT License
37
+ Classifier: Operating System :: OS Independent
38
+ Classifier: Programming Language :: Python :: 3
39
+ Classifier: Programming Language :: Python :: 3.9
40
+ Classifier: Programming Language :: Python :: 3.10
41
+ Classifier: Programming Language :: Python :: 3.11
42
+ Classifier: Programming Language :: Python :: 3.12
43
+ Classifier: Programming Language :: Python :: 3.13
44
+ Classifier: Topic :: Scientific/Engineering
45
+ Requires-Python: >=3.9
46
+ Requires-Dist: markupsafe
47
+ Requires-Dist: sqlalchemy
48
+ Provides-Extra: dev
49
+ Requires-Dist: pytest; extra == 'dev'
50
+ Provides-Extra: psynet
51
+ Requires-Dist: psynet; extra == 'psynet'
52
+ Provides-Extra: publish
53
+ Requires-Dist: build; extra == 'publish'
54
+ Requires-Dist: twine; extra == 'publish'
55
+ Description-Content-Type: text/markdown
56
+
57
+ # STEP — Sequential Transmission Evaluation Pipeline
58
+
59
+ If you use STEP, please cite:
60
+ > Lee, H., Çelen, E., Harrison, P. M. C., Anglada-Tort, M., Rijn, P. van,
61
+ > Park, M., et al. (2025). *GlobalMood: A cross-cultural benchmark for music
62
+ > emotion recognition*. In *Proceedings of the International Society for Music
63
+ > Information Retrieval Conference (ISMIR)*.
64
+ > https://doi.org/10.48550/arXiv.2505.09539
65
+
66
+ STEP is a [PsyNet](https://www.psynet.dev/) plugin for running sequential transmission evaluation experiments online. Participants view stimuli (images, audio, video), rate existing tags with stars, flag irrelevant tags, and add new ones. Tags accumulate and converge across participants through an imitation-chain design.
67
+
68
+ The package ships with:
69
+
70
+ - **`step`**: the core Python module (trial makers, pages, controls, stimulus classes, i18n support for 36 languages)
71
+ - **`demos/STEP-Tag`**: a working PsyNet demo experiment
72
+
73
+ ## Quick Links
74
+
75
+ - [Source code](https://github.com/pmcharrison/STEP)
76
+ - [Issues](https://github.com/pmcharrison/STEP/issues)
77
+ - [PsyNet documentation](https://psynetdev.gitlab.io/PsyNet/)
78
+
79
+ ## Installation
80
+
81
+ ### From PyPI
82
+
83
+ ```bash
84
+ pip install psynet-step
85
+ ```
86
+
87
+ The Python import name is `step`:
88
+
89
+ ```python
90
+ from step import StepTag, urls_to_start_nodes
91
+ ```
92
+
93
+ ### From source (editable)
94
+
95
+ ```bash
96
+ git clone https://github.com/pmcharrison/STEP.git
97
+ cd STEP
98
+ pip install -e .
99
+ ```
100
+
101
+ ### Optional extras
102
+
103
+ - `psynet` — pulls in PsyNet and Dallinger (required at runtime; already present in any PsyNet experiment environment)
104
+ - `dev` — pytest
105
+ - `publish` — build, twine
106
+
107
+ Install an extra with, e.g.:
108
+
109
+ ```bash
110
+ pip install -e ".[dev]"
111
+ ```
112
+
113
+ ## Usage
114
+
115
+ ```python
116
+ from step import StepTag, urls_to_start_nodes
117
+ import psynet.experiment
118
+ from psynet.timeline import Timeline
119
+
120
+ class Exp(psynet.experiment.Experiment):
121
+ timeline = Timeline(
122
+ StepTag(
123
+ start_nodes=urls_to_start_nodes(
124
+ [
125
+ "https://mini-kinetics-psy.s3.amazonaws.com/emotional_prosody/03-01-08-02-02-02-24.wav",
126
+ "https://s3.amazonaws.com/generalization-datasets/vegetables/images/thaieggplant3.jpg",
127
+ "https://mini-kinetics-psy.s3.amazonaws.com/mini-kinetics-validation/cut_videos/[zumba]_dLE5YOEqBGs.mp4",
128
+ ]
129
+ ),
130
+ expected_trials_per_participant=2,
131
+ max_iterations=5,
132
+ ),
133
+ )
134
+ ```
135
+
136
+ In your experiment's `requirements.txt`:
137
+
138
+ ```
139
+ psynet-step==0.1.0
140
+ ```
141
+
142
+ ## Running the Demo
143
+
144
+ ```bash
145
+ cd demos/STEP-Tag
146
+ pip install -r constraints.txt
147
+ psynet debug local
148
+ ```
149
+
150
+ ## License
151
+
152
+ MIT License
153
+
@@ -0,0 +1,97 @@
1
+ # STEP — Sequential Transmission Evaluation Pipeline
2
+
3
+ If you use STEP, please cite:
4
+ > Lee, H., Çelen, E., Harrison, P. M. C., Anglada-Tort, M., Rijn, P. van,
5
+ > Park, M., et al. (2025). *GlobalMood: A cross-cultural benchmark for music
6
+ > emotion recognition*. In *Proceedings of the International Society for Music
7
+ > Information Retrieval Conference (ISMIR)*.
8
+ > https://doi.org/10.48550/arXiv.2505.09539
9
+
10
+ STEP is a [PsyNet](https://www.psynet.dev/) plugin for running sequential transmission evaluation experiments online. Participants view stimuli (images, audio, video), rate existing tags with stars, flag irrelevant tags, and add new ones. Tags accumulate and converge across participants through an imitation-chain design.
11
+
12
+ The package ships with:
13
+
14
+ - **`step`**: the core Python module (trial makers, pages, controls, stimulus classes, i18n support for 36 languages)
15
+ - **`demos/STEP-Tag`**: a working PsyNet demo experiment
16
+
17
+ ## Quick Links
18
+
19
+ - [Source code](https://github.com/pmcharrison/STEP)
20
+ - [Issues](https://github.com/pmcharrison/STEP/issues)
21
+ - [PsyNet documentation](https://psynetdev.gitlab.io/PsyNet/)
22
+
23
+ ## Installation
24
+
25
+ ### From PyPI
26
+
27
+ ```bash
28
+ pip install psynet-step
29
+ ```
30
+
31
+ The Python import name is `step`:
32
+
33
+ ```python
34
+ from step import StepTag, urls_to_start_nodes
35
+ ```
36
+
37
+ ### From source (editable)
38
+
39
+ ```bash
40
+ git clone https://github.com/pmcharrison/STEP.git
41
+ cd STEP
42
+ pip install -e .
43
+ ```
44
+
45
+ ### Optional extras
46
+
47
+ - `psynet` — pulls in PsyNet and Dallinger (required at runtime; already present in any PsyNet experiment environment)
48
+ - `dev` — pytest
49
+ - `publish` — build, twine
50
+
51
+ Install an extra with, e.g.:
52
+
53
+ ```bash
54
+ pip install -e ".[dev]"
55
+ ```
56
+
57
+ ## Usage
58
+
59
+ ```python
60
+ from step import StepTag, urls_to_start_nodes
61
+ import psynet.experiment
62
+ from psynet.timeline import Timeline
63
+
64
+ class Exp(psynet.experiment.Experiment):
65
+ timeline = Timeline(
66
+ StepTag(
67
+ start_nodes=urls_to_start_nodes(
68
+ [
69
+ "https://mini-kinetics-psy.s3.amazonaws.com/emotional_prosody/03-01-08-02-02-02-24.wav",
70
+ "https://s3.amazonaws.com/generalization-datasets/vegetables/images/thaieggplant3.jpg",
71
+ "https://mini-kinetics-psy.s3.amazonaws.com/mini-kinetics-validation/cut_videos/[zumba]_dLE5YOEqBGs.mp4",
72
+ ]
73
+ ),
74
+ expected_trials_per_participant=2,
75
+ max_iterations=5,
76
+ ),
77
+ )
78
+ ```
79
+
80
+ In your experiment's `requirements.txt`:
81
+
82
+ ```
83
+ psynet-step==0.1.0
84
+ ```
85
+
86
+ ## Running the Demo
87
+
88
+ ```bash
89
+ cd demos/STEP-Tag
90
+ pip install -r constraints.txt
91
+ psynet debug local
92
+ ```
93
+
94
+ ## License
95
+
96
+ MIT License
97
+
@@ -0,0 +1,86 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [tool.hatch.version]
6
+ path = "step/VERSION"
7
+ pattern = "^(?P<version>.+)$"
8
+
9
+ [project]
10
+ name = "psynet-step"
11
+ dynamic = ["version"]
12
+ authors = [
13
+ {name = "Pol van Rijn", email = "pol.van-rijn@ae.mpg.de"},
14
+ {name = "Harin Lee"},
15
+ {name = "Peter Harrison", email = "pmch2@cam.ac.uk"},
16
+ {name = "Nori Jacoby", email = "nori.jacoby@ae.mpg.de"},
17
+ ]
18
+ maintainers = [
19
+ {name = "Peter Harrison", email = "pmch2@cam.ac.uk"},
20
+ {name = "Frank Höger", email = "fh337@cornell.edu"},
21
+ ]
22
+ license = {file = "LICENSE"}
23
+ description = "STEP – Sequential Transmission Evaluation Pipeline for PsyNet experiments"
24
+ keywords = ["psychology", "experiments", "online", "evaluation", "tagging", "psynet"]
25
+ readme = "README.md"
26
+ requires-python = ">=3.9"
27
+ classifiers = [
28
+ "Development Status :: 4 - Beta",
29
+ "Intended Audience :: Science/Research",
30
+ "License :: OSI Approved :: MIT License",
31
+ "Operating System :: OS Independent",
32
+ "Programming Language :: Python :: 3",
33
+ "Programming Language :: Python :: 3.9",
34
+ "Programming Language :: Python :: 3.10",
35
+ "Programming Language :: Python :: 3.11",
36
+ "Programming Language :: Python :: 3.12",
37
+ "Programming Language :: Python :: 3.13",
38
+ "Topic :: Scientific/Engineering",
39
+ ]
40
+
41
+ dependencies = [
42
+ "markupsafe",
43
+ "sqlalchemy",
44
+ ]
45
+
46
+ [project.optional-dependencies]
47
+ # `step` is a PsyNet plugin — every class inherits from psynet / dallinger
48
+ # base classes. Declaring psynet as a hard runtime dependency would create a
49
+ # circular install if PsyNet ever adds psynet-step to its own extras. We
50
+ # expose it as an optional extra instead; users running a PsyNet experiment
51
+ # will already have psynet installed.
52
+ psynet = [
53
+ "psynet",
54
+ ]
55
+ dev = [
56
+ "pytest",
57
+ ]
58
+ publish = [
59
+ "build",
60
+ "twine",
61
+ ]
62
+
63
+ [project.urls]
64
+ Homepage = "https://github.com/pmcharrison/STEP"
65
+ Repository = "https://github.com/pmcharrison/STEP"
66
+ Issues = "https://github.com/pmcharrison/STEP/issues"
67
+
68
+ [tool.hatch.build.targets.wheel]
69
+ include = ["/step"]
70
+
71
+ [tool.hatch.build.targets.wheel.force-include]
72
+ "step/VERSION" = "step/VERSION"
73
+
74
+ [tool.hatch.build.targets.sdist]
75
+ exclude = [
76
+ "/.github",
77
+ "/.flake8",
78
+ "/.pre-commit-config.yaml",
79
+ "/.DS_Store",
80
+ "/.venv*",
81
+ "/demos",
82
+ "/__init__.py",
83
+ ]
84
+
85
+ [tool.pytest.ini_options]
86
+ testpaths = ["demos/STEP-Tag"]
@@ -0,0 +1 @@
1
+ 0.1.0rc0