Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add napari-base output and reorganize dependencies #63

Merged
merged 7 commits into from
Jul 16, 2024

Conversation

psobolewskiPhD
Copy link
Member

@psobolewskiPhD psobolewskiPhD commented Jul 13, 2024

Closes #62

Checklist

  • Used a personal fork of the feedstock to propose changes
  • Bumped the build number (if the version is unchanged)
  • Reset the build number to 0 (if the version changed)
  • Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
  • Ensured the license file is being packaged.

Need a repo patch too I think?


Edit by @jaimergp:

I've added a new output, napari-base, following conversation in this PR, this Zulip thread, and this other one.

With this PR we will have these outputs:

  • napari-base: the core library, with only the required dependencies. Use it for your Pyhton imports but no GUI action.
  • napari: the application sans the Qt backend. It contains optional yet recommended dependencies for (performant) GUI usage, like the plugin manager or numba.
  • napari-menu: just the menuinst JSON file, in case you want a desktop shortcut.

Most end-users will want to conda install napari pyqt or conda install napari pyside2.

@conda-forge-webservices
Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@psobolewskiPhD
Copy link
Member Author

@conda-forge-admin, please rerender

Copy link

Hi! This is the friendly automated conda-forge-webservice.

I tried to rerender for you, but it looks like there was nothing to do.

This message was generated by GitHub actions workflow run https://github.com/conda-forge/napari-feedstock/actions/runs/9923450902.

Copy link
Member

@jaimergp jaimergp left a comment

Choose a reason for hiding this comment

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

IIRC, this is intentionally left out of the dependencies. It's part of run_constrained so we can still control which version is compatible, but we didn't want it by default. I don't remember the exact wording, but @jni stated that "it'd be crazy if matplotlib had its own plugin manager shipped with the library, so we shouldn't do that either".

@psobolewskiPhD
Copy link
Member Author

psobolewskiPhD commented Jul 15, 2024

@jni can you clarify?
I had just advertised how in 0.5.0 plugins could be installed from conda when napari is from conda -- which is how we recommend installing on napari.org
Not being able to do so, without any deprecation, documentation or info to Plugin authors seems like a serious regression.
My understanding of devolving the plugin manager into a plugin was to make it easier to update it and maintain, plus have it be able to be used by others. Not that it would be removed from napari period.

@jni
Copy link
Contributor

jni commented Jul 16, 2024

I'm afraid the wording quoted by @jaimergp is accurate. 😜

The resolution here is down to the question of do we make conda install napari install the whole kit and caboodle and conda install napari-base installs something more barebones, or do we make conda install napari-kit-and-caboodle install everything and conda install napari install the barebones. Personally, I prefer the latter, but I can be pushed to the former with little effort. Either way, I'd love to solve both things in one step. @jaimergp can you point us to examples of multi-recipe feedstocks?

Also, sorry, I merged #64 before seeing this, so the build number needs another bump here regardless.

@psobolewskiPhD
Copy link
Member Author

psobolewskiPhD commented Jul 16, 2024

Here's my thoughts:
Conda-forge is the install path of least resistance and what we recommend in docs. IMO it should absolutely be napari[all] and not napari-lite.
I wish we didn't have to specify Qt backed, but that's in the docs -- still many not aware of that change though, but the error is instructive. Meanwhile, in this case, a major feature is just poof, gone. With no easy obvious alternative -- there is no error or anything.
To me this is a massive regression. A more sophisticated user can install however they want -- from git for all I care -- but the GUI functionality is for new users or people just getting into the ecosystem. Especially now that the conda install could install plugins from conda which solves so many issues!
😢

@jaimergp
Copy link
Member

The resolution here is down to the question of do we make conda install napari install the whole kit and caboodle and conda install napari-base installs something more barebones, or do we make conda install napari-kit-and-caboodle install everything and conda install napari install the barebones.

We've taken steps to make napari more lightweight, so I'd rather stay in that direction (see #56 and specially #47 (comment)). That said, we can do that later and still have napari ship napari-plugin-manager for now. It's not that heavy (yet).

@jni
Copy link
Contributor

jni commented Jul 16, 2024

Some further discussion in Zulip here and here.

The decision for now is to keep the plugin manager in napari and make the napari recipe more feature-complete, while creating a lightweight napari-base package on which napari would eventually depend.

@conda-forge-webservices
Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

I do have some suggestions for making it better though...

For recipe:

  • Jinja2 variable references are suggested to take a {{<one space><variable name><one space>}} form. See lines [118].

@jaimergp jaimergp changed the title Include napari-plugin-manager >=0.1.0a2 in run dependencies Add napari-base output and reorganize dependencies Jul 16, 2024
@conda-forge-webservices
Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@@ -49,7 +49,6 @@ outputs:
- magicgui >=0.7.0
- napari-console >=0.0.9
- napari-plugin-engine >=0.1.9
- napari-svg >=0.1.8
Copy link
Member

Choose a reason for hiding this comment

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

Moved to napari

Comment on lines 74 to 75

# additional dependencies for convenience in conda-forge
- fsspec
- pooch >=1.3.0
- zarr >=2.12.0

run_constrained:
Copy link
Member

Choose a reason for hiding this comment

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

Moved to napari

run_constrained:
- napari-plugin-manager >=0.1.0a2,<0.3.0a0
Copy link
Member

@jaimergp jaimergp Jul 16, 2024

Choose a reason for hiding this comment

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

Moved to napari as a full dependency

- pyside2 >=5.13.2,!=5.15.0
- pyside6 <6.5|>=6.7
- pyqt >=5.12.3,!=5.15.0,<6.0a0|>=6.5,!=6.6.1
# Nice for performance, but optional. Inclusion under discussion.
# - py-triangle
# - numba >=0.57.1 # https://github.com/napari/napari/pull/6467#issuecomment-1819038165
Copy link
Member

Choose a reason for hiding this comment

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

Moved to napari as full dependency.

recipe/meta.yaml Outdated
- napari-svg >=0.1.8
- numba >=0.57.1
- pooch >=1.3.0
# - py-triangle # a bit fragile with bad data, leave out for now
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
# - py-triangle # a bit fragile with bad data, leave out for now
# - py-triangle # a bit fragile with bad data, leave out for now

Context about fragility: https://napari.zulipchat.com/#narrow/stream/212875-general/topic/napari.20plugin.20manager.20in.20conda.20recipe/near/451712796

Copy link
Contributor

Choose a reason for hiding this comment

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

More context in napari/napari#6654

Copy link
Member

Choose a reason for hiding this comment

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

Oh, thanks, I'll add this as the comment instead

@jaimergp
Copy link
Member

jaimergp commented Jul 16, 2024

@conda-forge-admin, please rerender

- zarr >=2.12.0
test: # just to check that the environment can indeed solve
requires:
- pyside2 # use this opportunity to test solvability with other backend
Copy link
Contributor

Choose a reason for hiding this comment

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

Does this mean we are testing with pyside2 but not with pyside6 or pyqt or...?

Copy link
Member

Choose a reason for hiding this comment

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

We tested installability with pyqt in the output above (napari-base). In here we just pick pyside2 because we can now, given the new output. We are not running the test suite here, just installability checks and minimum "this thing runs", import wise.

Copy link
Contributor

Choose a reason for hiding this comment

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

Great, thanks!

@jaimergp
Copy link
Member

cc @hmaarrfk, because in the past you've been interested in a lighter napari install tree.

run_constrained:
- napari-plugin-manager >=0.1.0a2,<0.3.0a0
- pyside2 >=5.13.2,!=5.15.0
- pyside6 <6.5|>=6.7
Copy link
Contributor

Choose a reason for hiding this comment

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

thanks!

Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks for keeping things flexible. I don't really understand the plugin manager but cool!!!

@hmaarrfk
Copy link
Contributor

My main question is about the plugin engine actually.

Does it leverage conda-forge??? Or will it force the installation of these plugins through pip? Installing through pip in my mind would hurt users in the long run

@jaimergp
Copy link
Member

Yes, if napari was installed with conda.

@hmaarrfk
Copy link
Contributor

great!!! awesome!

@jni jni merged commit e9e6f6a into conda-forge:main Jul 16, 2024
3 checks passed
@psobolewskiPhD
Copy link
Member Author

Thanks @jaimergp

jni added a commit to napari/docs that referenced this pull request Jul 19, 2024
# References and relevant issues
<!-- What relevant resources were used in the creation of this PR?
If this PR addresses an existing issue on the repo,
please link to that issue here as "Closes #(issue-number)".
If this PR adds docs for a napari PR please add a "Depends on <napari PR
link>" -->

# Description
<!-- What does this pull request (PR) do? Does it add new content,
improve/fix existing
context, improve/fix workflow/documentation build/deployment or
something else?
<!-- If relevant, please include a screenshot or a screen capture in
your content
change: "An image is worth a thousand words!" -->
<!-- You can use https://www.cockos.com/licecap/ or similar to create
animations. -->
<!-- You can also see a preview of the documentation changes you are
submitting by
clicking on "Details" to the right of the "Check the rendered docs
here!" check on your PR.-->

Describes the actions taken at
conda-forge/napari-feedstock#63

<!-- Final Checklist
- If images included: I have added [alt
text](https://webaim.org/techniques/alttext/)
If workflow, documentation build or deployment change:
- My PR is the minimum possible work for the desired functionality
- I have commented my code, to let others know what it does
-->

---------

Co-authored-by: Juan Nunez-Iglesias <jni@fastmail.com>
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.

macOS arm64, x86: 0.5.0 conda install doesn't include the plugin installer GUI
4 participants