Skip to content

Conversation

@EZoni
Copy link
Member

@EZoni EZoni commented Sep 18, 2025

Add more dependencies to the JSON file in the root directory, to improve automation:

  • pybind11
  • picmistandard (including workaround for PICMI version update in the requirements.txt files)

@EZoni EZoni added component: third party Changes in WarpX that reflect a change in a third-party library automation Changes related to automation of tasks, tools, etc. labels Sep 18, 2025
@EZoni EZoni changed the title [WIP] Add more dependencies to root JSON file Add more dependencies to root JSON file Sep 19, 2025
@EZoni EZoni requested a review from ax3l September 19, 2025 23:35
description="""Wrapper of WarpX""",
package_data=package_data,
install_requires=["numpy", "picmistandard==0.33.0", "periodictable"],
install_requires=["numpy", f"picmistandard=={picmi_version}", "periodictable"],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the file here should maybe just use requirements.txt instead of documenting the dependencies again...?

Copy link
Member

@ax3l ax3l left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great to me, thank you!

@ax3l ax3l requested review from RemiLehe and dpgrote September 23, 2025 06:53
@EZoni EZoni self-assigned this Sep 23, 2025
@EZoni
Copy link
Member Author

EZoni commented Oct 2, 2025

I think there is one more problem to fix, both here and in pyAMReX.

For release updates we replace the commit hash with the release tag. However, I think this is buggy for dependencies that do not publish monthly releases regularly, e.g., pybind11 or even PICSAR.

Replacing a commit hash from the latest weekly update with the latest available release tag may actually bring us backward in the commit history, if the latest available release tag is older than the latest commit.

I think we should be doing something different. I don't see major drawbacks in always keeping the version and the commit separate from each other, using the release tag only for the version (e.g., version_pybind11) and the commit hash only for the commit (e.g., commit_pybind11) in dependencies.json. And I think I would do so for all dependencies, to make things simpler.

@EZoni EZoni changed the title Add more dependencies to root JSON file [WIP] Add more dependencies to root JSON file Oct 2, 2025
@EZoni EZoni removed their assignment Oct 10, 2025
@EZoni EZoni changed the title [WIP] Add more dependencies to root JSON file Add more dependencies to root JSON file Oct 29, 2025
@EZoni
Copy link
Member Author

EZoni commented Oct 29, 2025

@ax3l

In view of the upcoming monthly release, this may be worth reviewing. In particular, the outstanding questions in #6189 (comment).

@EZoni EZoni mentioned this pull request Nov 6, 2025
@ax3l
Copy link
Member

ax3l commented Nov 25, 2025

For release updates we replace the commit hash with the release tag. However, I think this is buggy for dependencies that do not publish monthly releases regularly, e.g., pybind11 or even PICSAR.

We generally try to publish our releases only on tags, because otherwise we make the live of downstream package maintainers (spack, conda, etc.) very hard.

For pybind11, I always use published releases.
For PICSAR, whenever a month has a change in it, we do a new tag before we publish WarpX.

Some tags might be from prior months in our dependencies, which is fine.

"commit_picsar": "0c329e66010267662a82219f7de7abbd231463f4"
}
"commit_picsar": "0c329e66010267662a82219f7de7abbd231463f4",
"commit_pybind11": "af796d0a99f0cbd9aebb10591257c41a56811cf6",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How did you end up with this sha exactly?
pybind11 tag v3.0.1 is commit f5fbe867d2d26e4a0a9177a51f6e568868ad3dc8

https://github.com/pybind/pybind11/releases/tag/v3.0.1

Comment on lines +45 to +52
if args.all or args.pybind11:
repo_dict["pybind11"] = {}
repo_dict["pybind11"]["commit"] = (
"https://api.github.com/repos/pybind/pybind11/commits/master"
)
repo_dict["pybind11"]["tags"] = (
"https://api.github.com/repos/pybind/pybind11/tags"
)
Copy link
Member

@ax3l ax3l Nov 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that we do not do a weekly tracking of pybind11. We manually update when we want a newer release.

Most importantly, when we release WarpX we do not depend on the pybind11 development branch (or any dependency as of their development branch).

Copy link
Member

@ax3l ax3l left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logic here is off for at least pybind11.

Note that we do on release track a tag, not development. We only track (some) dependencies development weekly between releases.

@EZoni
Copy link
Member Author

EZoni commented Nov 26, 2025

I pushed a fix similar to AMReX-Codes/pyamrex#517.

@EZoni EZoni requested a review from ax3l November 26, 2025 17:14
Copy link
Member

@ax3l ax3l left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you! :)

@ax3l ax3l merged commit 2376509 into BLAST-WarpX:development Nov 26, 2025
50 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automation Changes related to automation of tasks, tools, etc. component: third party Changes in WarpX that reflect a change in a third-party library

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants