OSF in PsychoPy 3.0.4


I’ve just updated PsychoPy to the 3.0.4 version. The “Projects” menu has been replaced by “Pavlovia.org”. Is it a bug or is it a permanent change ? How to sync with osf now ?

Thank you very much for your help


I guess this is something up for discussion, but I think I have greater faith long-term in the use of pavlovia.org for project synchronisation and sharing due to it being based on git (OSF requires manual checking and up/downloading of files and I’m just really concerned that this is prone to sync errors). So my hunch is that we should drop direct support for OSF and support it, instead, via Pavlovia. The idea is that the user can sync to pavlovia and that project can then be inserted into an OSF project using its storage methods (OSF supports gitlab and pavlovia uses gitlab behind the scenes so it should be easy to set up at their end).

I mean we could leave OSF as an option - it’s just I’m concerned about data loss sooner or later (and then being sued!)

What are your thoughts?

Thank you so much for your response,

My colleagues and I are currently writing a tutorial for automatic sync between PsychoPy and OSF. We basically propose to add a piece of code at the end of the experiment. I think that OSF sync can be useful because it is direct. However it is true that sync could be done via Gitlab.

Is it complicated to leave OSF sync as an option ? If you think that you plan to abandon OSF, we will reshape our tutorial for Pavlovia but (as you probably already know) automatic sync is also doable with OSF.

Thank you again for all your work and for your help


I think (but I have no data to support this hypothesis) that OSF is a generic tool which becomes to be known and used by many psychologists. I do not know if another tool such as Pavlovia will be used as much as OSF. I may be wrong. What do you think ? Do you think that everyone will be ok to have a Pavlovia account in parallel of an OSF account ?

Certainly Pavlovia offers things that OSF doesn’t (git for version control, and the ability to run a study rather than simply store it) so I think there is a reason to have an account on both systems.

I’m happy to see what discussions crop up. If more people say they really like the OSF sync and want it back then we’ll look into doing that. As I say, my main concern is the speed and robustness of that system. It had to up/download each file individually, which took a while, and I’m not too happy with how robust it was (if there was a problem during the sync it could lead to potential data loss).

If you plan to sync via code, then we certainly still provide the pyosf lib that you can use. Right now it’s only the menu item that’s disappeared, because I trust the pavlovia (git-based) sync better.

1 Like

Thank you very much for your answer.

I agree that having and account on both system is very useful.

It is true that OSF sync is much slower as compared to Pavlovia. I just tried it and Pavlovia/Gitlab works very well indeed. I am trying to find a solution to automatically commit and push data when new data is saved on the computer (like OpenSesame for OSF). Do you think it is feasible with PsychoPy 3 and Pavlovia ?

Thanks again for your help


Code to auto-sync at the end of a study could look something like this (untested):

from psychopy.projects import pavlovia
thisProj = pavlovia.Project(localRoot='.')
thisProj.stageFiles()  # adds any new/changed/deleted files
thisProj.commit( "added participant: {}".format(filename) )

Thank you !

I am going to work on it. It does not work in this state (AttributeError: module ‘psychopy.projects.pavlovia’ has no attribute ‘Project’) but I hope I will find how to make it work.

Thanks again +++

Sorry, yes, it’s PavloviaProject not just Project

1 Like

Thank you again,

This is not working but maybe I am doing something wrong. I will try it again after finishing the tutorial. For now I will focus on OSF with PsychoPy 2.

Thanks ++ for your time and for your help

I’d second the return of OSF sync.

As an aside, this page which mentions OSF sync is now out of date: https://www.psychopy.org/general/projects.html


1 Like


Sorry, I know this is an old post. Thank you again ++ for your suggestion.

When I try your solution, I get the following message:

changeDict[‘untracked’] = self.repo.untracked_files
AttributeError: ‘NoneType’ object has no attribute ‘untracked_files’

Any idea about what could be problematic here ?

Thanks so much for your help and for your time !

Again, a response to an old post, but this time to propose a solution that worked for me :

This solution is based on the code proposed by Jon here OSF in PsychoPy 3.0.4 - #7 by jon

But slightly modified based on what I found in the coder.py file (thanks OpenAI for the suggestion)

from psychopy.projects import pavlovia
thisProj = pavlovia.getProject(filename)
thisProj.stageFiles()  # adds any new/changed/deleted files
thisProj.commit( "added participant: {}".format(filename) )

I just replaced




filename is the file name given by PsychoPy by default (filename = thisDir + os.sep + u’data/%s%s_%s’ % (expInfo[‘participant’], expName, expInfo[‘date’]).

Thanks again +++ Jon for your time and for your help