Atomate2 add-on packages
As discussed briefly in #173, we would like to create add-on packages for atomate2 to support additional codes that maybe don't fit in within existing workflows. LAMMPS seems to be one such case and as such we have moved development out to a namespace package atomate2-lammps.
Is this a contribution route that should be officially supported? I am happy to extract the generic stuff from our repository to make an add-on template similar to pymatgen-addon-template, and make a PR here with some explanation? I guess the alternative would be developing the separate add-on and then eventually folding it back into atomate2 when it is more mature.
Let me know what you think!
Is this a contribution route that should be officially supported?
Yes, this is a great idea. We are very happy to support addon packages for atomate2.
I am happy to extract the generic stuff from our repository to make an add-on template similar to pymatgen-addon-template, and make a PR here with some explanation?
This would also be very useful. I've not set up add-on packages before, so I'm also not clear if something has to be modified in atomate2 itself?
the alternative would be developing the separate add-on and then eventually folding it back into atomate2
We will also support this, if at some point you decide you'd like the code to be in the main repo.
Thanks for suggesting this!
This would also be very useful. I've not set up add-on packages before, so I'm also not clear if something has to be modified in atomate2 itself?
Here's a template repo that follows what I've done for the atomate2-lammps package so far: https://github.com/Matgenix/atomate2-addon-template
The idea is that the template uses:
- the correct source layout (i.e.,
./src/atomate2/addonwith no__init__.pyat theatomate2level. - the correct namespace configuration in
pyproject.toml(there is one caveat that editable installs may not work yet -- need to investigate), - an approximately consistent code style with the main repo (i.e., same linting settings, versions would need to be tracked and updated with our annoying friend dependabot in the template repo separately, though this is not crucial),
- a simple CI that runs the tests/pre-commit linting
The only thing that could change in this repo is adding an explanation and link out in the README/contributing docs.