Skip to content

Merge pypixi and pypkg plugin types, require a minimal pixi table#17

Merged
ghutchis merged 7 commits intoAvogadro:masterfrom
matterhorn103:requires-pixi
Mar 11, 2026
Merged

Merge pypixi and pypkg plugin types, require a minimal pixi table#17
ghutchis merged 7 commits intoAvogadro:masterfrom
matterhorn103:requires-pixi

Conversation

@matterhorn103
Copy link
Contributor

No description provided.

Signed-off-by: Matthew Milner <matterhorn103@proton.me>
…t plugin

Signed-off-by: Matthew Milner <matterhorn103@proton.me>
…, absence implies none

Signed-off-by: Matthew Milner <matterhorn103@proton.me>
@matterhorn103
Copy link
Contributor Author

@ghutchis Did you think any more about whether you want to use default values for plugin-type and metadata?

@ghutchis
Copy link
Member

Yes, I think for many cases we should just be requesting a git.repo and git.commit. Makes it super easy.

@matterhorn103
Copy link
Contributor Author

OK, I'll add some appropriate changes to this PR then

…ories.toml

Signed-off-by: Matthew Milner <matterhorn103@proton.me>
@matterhorn103
Copy link
Contributor Author

Done! I added some notes/documentation to repositories.toml as well, hope it's useful 🙂

@matterhorn103
Copy link
Contributor Author

The following plugins are failing due to missing Pixi metadata and will need to be fixed:

  • Missing itself as an editable dependency:
    • generators
    • xtb-energy
    • aimnet2
    • multicharge
    • antechamber-charges
    • mace
  • Missing a Pixi table entirely?
    • rdkit
    • cclib
    • genice

I.e. the latter group produce the error:

  File "/home/matt/avo/plugins/generate_index.py", line 126, in extract_toml_metadata
    if "channels" not in pixi_metadata["workspace"]:
                         ~~~~~~~~~~~~~^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable

Signed-off-by: Matthew Milner <matterhorn103@proton.me>
@matterhorn103
Copy link
Contributor Author

When I tried to test, serializing to JSON seemed to fail, but I can't work out why right now because of the API limits. I can look in an hour.

Signed-off-by: Matthew Milner <matterhorn103@proton.me>
@ghutchis
Copy link
Member

Okay, do you want me to merge this and update plugins2.json once I've updated those plugins? The energy plugins need some updates anyway.

Copy link
Member

@ghutchis ghutchis left a comment

Choose a reason for hiding this comment

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

Looks good.

@ghutchis
Copy link
Member

I will go through to update these. The default should be something like:
platforms = ["win-64", "win-arm64", "linux-64", "linux-aarch64", "osx-64", "osx-arm64"]

Of course some of these fail for certain packages, e.g. no "win-arm64" support, etc.

@matterhorn103
Copy link
Contributor Author

The default should be something like:
platforms = ["win-64", "win-arm64", "linux-64", "linux-aarch64", "osx-64", "osx-arm64"]

Yeah, that's correct.

but note that anything that depends on numpy won't work on win-arm64.

Of course some of these fail for certain packages, e.g. no "win-arm64" support, etc.

In particular, anything that depends on numpy won't work on win-arm64.

Signed-off-by: Matthew Milner <matterhorn103@proton.me>
@matterhorn103
Copy link
Contributor Author

Okay, do you want me to merge this and update plugins2.json once I've updated those plugins?

We can do that now, sure.

After 1st April I think we should really strive to only merge PRs that add new plugins if the metadata validates OK and the script runs without any errors. I've added a --strict flag to make that easier to implement as a GH check that runs automatically for opened PRs.

@ghutchis
Copy link
Member

I'm confused about the editable dependency. For example, you mention aimnet2, but:
https://github.com/ghutchis/avogadro-aimnet2/blob/3c6542ff8e0c81be6e634a7a622c7a4f8097137d/pyproject.toml#L63

Looks okay to me. Is there something I'm missing? I'd like to know so I can update accordingly. Thanks.

@ghutchis ghutchis merged commit 5b13233 into Avogadro:master Mar 11, 2026
@ghutchis
Copy link
Member

https://packaging.python.org/en/latest/specifications/name-normalization/#name-normalization

def normalize(name):
    return re.sub(r"[-_.]+", "-", name).lower()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants