datalad / datalad-next

DataLad extension for new functionality and improved user experience
https://datalad.org
Other
9 stars 10 forks source link
closember datalad

DataLad NEXT extension

All Contributors Build status codecov docs Documentation Status License: MIT GitHub release PyPI version fury.io DOI Hatch project

This DataLad extension can be thought of as a staging area for additional functionality, or for improved performance and user experience. Unlike other topical or more experimental extensions, the focus here is on functionality with broad applicability. This extension is a suitable dependency for other software packages that intend to build on this improved set of functionality.

Installation

# create and enter a new virtual environment (optional)
$ virtualenv --python=python3 ~/env/dl-next
$ . ~/env/dl-next/bin/activate
# install from PyPi
$ python -m pip install datalad-next

How to use

Additional commands provided by this extension are immediately available after installation. However, in order to fully benefit from all improvements, the extension has to be enabled for auto-loading by executing:

git config --global --add datalad.extensions.load next

Doing so will enable the extension to also alter the behavior the core DataLad package and its commands.

Summary of functionality provided by this extension

Summary of additional features for DataLad extension development

Patching the DataLad core package.

Some of the features described above rely on a modification of the DataLad core package itself, rather than coming in the form of additional commands. Loading this extension causes a range of patches to be applied to the datalad package to enable them. A comprehensive description of the current set of patch is available at http://docs.datalad.org/projects/next/en/latest/#datalad-patches

Developing with DataLad NEXT

This extension package moves fast in comparison to the core package. Nevertheless, attention is paid to API stability, adequate semantic versioning, and informative changelogs.

Public vs internal API

Anything that can be imported directly from any of the sub-packages in datalad_next is considered to be part of the public API. Changes to this API determine the versioning, and development is done with the aim to keep this API as stable as possible. This includes signatures and return value behavior.

As an example: from datalad_next.runners import iter_git_subproc imports a part of the public API, but from datalad_next.runners.git import iter_git_subproc does not.

Use of the internal API

Developers can obviously use parts of the non-public API. However, this should only be done with the understanding that these components may change from one release to another, with no guarantee of transition periods, deprecation warnings, etc.

Developers are advised to never reuse any components with names starting with _ (underscore). Their use should be limited to their individual subpackage.

Acknowledgements

This DataLad extension was developed with funding from the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) under grant SFB 1451 (431549029, INF project).

Contributors

Michael Hanke
Michael Hanke

πŸ› πŸ’» πŸ–‹ 🎨 πŸ“– πŸ’΅ πŸ” πŸ€” πŸš‡ 🚧 πŸ§‘β€πŸ« πŸ“¦ πŸ“† πŸ‘€ πŸ“’ ⚠️ πŸ”§ πŸ““
catetrai
catetrai

πŸ’» 🎨 πŸ“– πŸ€” ⚠️
Chris Markiewicz
Chris Markiewicz

🚧 πŸ’»
MichaΕ‚ Szczepanik
MichaΕ‚ Szczepanik

πŸ› πŸ’» πŸ–‹ πŸ“– πŸ’‘ πŸ€” πŸš‡ 🚧 πŸ‘€ πŸ“’ ⚠️ βœ… πŸ““
Stephan Heunis
Stephan Heunis

πŸ› πŸ’» πŸ“– πŸ€” 🚧 πŸ“’ πŸ““
Benjamin Poldrack
Benjamin Poldrack

πŸ› πŸ’»
Yaroslav Halchenko
Yaroslav Halchenko

πŸ› πŸ’» πŸš‡ 🚧 πŸ”§
Christian MΓΆnch
Christian MΓΆnch

πŸ’» 🎨 πŸ“– πŸ€” πŸ‘€ ⚠️ πŸ““
Adina Wagner
Adina Wagner

️️️️♿️ πŸ› πŸ’» πŸ“– πŸ’‘ 🚧 πŸ“† πŸ‘€ πŸ“’ ⚠️ βœ… πŸ““
John T. Wodder II
John T. Wodder II

πŸ’» πŸš‡ ⚠️
Isaac To
Isaac To

πŸ’»