audeering / audbackend

Manage file storage on different backends
https://audeering.github.io/audbackend/
Other
3 stars 0 forks source link

Add VersionedLegacy interface #168

Closed hagenw closed 3 months ago

hagenw commented 5 months ago

In https://github.com/audeering/audbackend/pull/167 we introduced the concept of interfaces as an abstraction layer between backends and the user. This provides the possibility to also handle the legacy versioning (as we use in audb) as an extra interface. The filestructure on the backend is:

<root>/<base>/<version>/<base>-<version><ext>

Instead of VersionedLegacy we might also pick another name for it (e.g. maybe there is a name for that structure) and then we have it as a feature and not only legacy code.

The only problem I see is that you might get in troubles when using the Versioned interface on a repo that was created using VersionedLegacy (I tried this ones for an audb repo. The problem was that I had a hard time to understand the problem after seeing some strange error method when executing a method. Also not all methods were failing). So it might be that we also have to consider https://github.com/audeering/audbackend/issues/166, even though I agree that it is also a cool feature to be able to store versioned and unversioned files on the same repo as you can do with the Versioned and Unversioned interfaces.

frankenjoe commented 5 months ago

Isn't <root>/<base>/<version>/<base>-<version><ext> some kind of Maven specification? So maybe we could call it VersionedMaven or simply Maven?

I am not so concerned about accessing a repository with a "wrong" interface, since usually we use audbackend under the hood of another package and that packages hard-codes the interface.

hagenw commented 5 months ago

usually we use audbackend under the hood of another package and that packages hard-codes the interface.

I needed audbackend to copy some datasets from one audb repo to another one. There might also be the case that you might want to update some files, e.g. if we change storing the dependencies in audb in another format than CSV, for which a user might also have to access the repo directly. But I agree that this is not a big issue.

hagenw commented 5 months ago

The structure is indeed inspired by Maven, but I think it might be too much to call it Maven as this would indicate we also do the other stuff, compare https://maven.apache.org/repository/layout.html

hagenw commented 3 months ago

Solved by #194