Replies: 5 comments 12 replies
|
Hi thanks for asking me, sure I'm happy to help wherever I could I think there would be benefit to break pymatgen into small packages but I'm a bit unsure about a dedicated Also the test for Before you spend too much time on the new Also I think we could get some inspiration from how NOMAD is orchestrating a core To the pmg side, I guess the current [project]
name = "pymatgen"
dependencies = [
"pymatgen-core==x",
"pymatgen-io==y",
]We might also turn pmg into a workspace repo: |
The idea of having pymatgen-test-files in a separate repo (which is a submodule in the pymatgen-core repo and can be made the same in the pymatgen repo) is so that clones are not forced to download the entire suite of test files (which is very very large) unless necessary. The inconvenience is minimal since you simply add --recurse-submodules to git pull and you will still have access to all the test files. Adding test files to a submodule is also fairly simple. As for NOMAD, we do not need to follow them. I have no intention of breaking pymatgen (at least the version in this repo) into 100 plugins. I am perfectly fine with just separating out the core packages for now. After that, we can decide what else can be moved to packages of their own. There are already many codes that depend on pymatgen. Some of these can depend on pymatgen-core in future if they do not need pymatgen/analysis. Finally, for the git history, I will suggest we leave it in the pymatgen (non-core) repo for now. I don't think there is a need to inherit the git history to the pymatgen-core package. |
|
OK, @DanielYang59 @mkhorton I need to resolve this quickly. The longer this drags out, the more there are PR merges and the more difficult it becomes to keep things consistent.
Next steps are simple. First I release pymatgen-core to PYPI. Second, I modify pymatgen main repo to remove all duplicate packages, add the necessary stubs for backwards compatibility, fix the tests and use pymatgen-core as a dependency. Let me know by the end of this weekend if you have any objections before I proceed. |
|
@shyuep: with @DanielYang59's help, we've put together a more complete rewrite of the pymatgen history. The reason for this is that a few core files were missed in the initial pass, because of various issues tracing history through renames Method: Thanks to @DanielYang59 for putting this together - the main changes I made here were to not change the original committer in the `cherry-pick`:#/bin/bash -l
if [ -d pymatgen-filtered ] ; then
rm -rf pymatgen-filtered
fi
git clone https://github.com/materialsproject/pymatgen.git ./pymatgen-filtered && cd pymatgen-filtered
git filter-repo \
--path-rename pymatgen/:src/pymatgen/ \
--path src/pymatgen/alchemy/ \
--path src/pymatgen/command_line/ \
--path src/pymatgen/core/ \
--path src/pymatgen/electronic_structure/ \
--path src/pymatgen/io/ \
--path src/pymatgen/optimization/ \
--path src/pymatgen/phonon/ \
--path src/pymatgen/transformations/ \
--path src/pymatgen/symmetry/ \
--path src/pymatgen/util/ \
--path tests/ \
--path .github/ \
--path .gitignore \
--path pyproject.toml \
--path uv.lock \
--path README.md \
--path LICENSE \
--path requirements.txt \
--path setup.py \
--path CITATION.cff \
--path SECURITY.md \
--path ADMIN.md \
--force
git remote add origin https://github.com/esoteric-ephemera/pymatgen-core.git
git remote add upstream https://github.com/materialyzeai/pymatgen-core.git
git fetch --all
for hash in $(git rev-list --reverse 4ee64abde368..fa80531df413); do
GIT_COMMITTER_NAME="$(git log -1 --format=%an $hash)" \
GIT_COMMITTER_EMAIL="$(git log -1 --format=%ae $hash)" \
GIT_COMMITTER_DATE="$(git log -1 --format=%ad $hash)" \
git cherry-pick $hash -X theirs
done
for hash in $(git rev-list --reverse d1bd86715..6579eeb03) ; do
GIT_COMMITTER_NAME="$(git log -1 --format=%an $hash)" \
GIT_COMMITTER_EMAIL="$(git log -1 --format=%ae $hash)" \
GIT_COMMITTER_DATE="$(git log -1 --format=%ad $hash)" \
git cherry-pick -X theirs $hash
doneThere
|
|
@shyuep I hear your concerns about time involved maintaining pymatgen and executing the split. However, I and others have fielded a lot of community concerns about authorship, organization, etc. that prevent them from wanting to contribute in the future I propose that I and a few others work on preserving the split in the main repo, including git history, and ensuring that workflows for Is this an acceptable solution? I will start immediately on this once you give the OK |
Uh oh!
There was an error while loading. Please reload this page.
I am starting a reorg of pymatgen. The first step is to create a pymatgen-core and pymatgen-test-files repo. These have been created under the materialyzeai organization (https://github.com/materialyzeai/pymatgen-core).
The idea is to retain "pymatgen" as a meta-package that includes pymatgen-core and all the bells and whistles. Pymatgen-core will just be the core packages, io, entries, etc. We will eventually move pymatgen-analysis and pymatgen-ext into their own packages.
pymatgen-test-files will be a separate Github repo that is a submodule of pymatgen-core and other first class packages. Here, we will use a submodule to avoid having to reclone all the huge test files. There is also a possibility that we make this a private submodule.
@DanielYang59 @mkhorton Let me know if you have any views and whether you want to be maintainers for the pymatgen-core and pymatgen-test-files repos.
All reactions