-
Notifications
You must be signed in to change notification settings - Fork 88
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
[PROPOSAL] conda project cli #284
Conversation
* anaconda-project entry point renamed to conda-project * conda searches for conda-* executables in the PATH to enable "conda project" * conda-project.yml is preferred but anaconda-project.yml is still supported * cli help updated to reflect conda-project * conda recipe updated to build conda-project
Is there any way we could mark specific functionality as not being available when called as |
Yeah, I think we can do that by splitting apart the internal/cli/main.py argparse code into two entry points with with a shared module of common commands. For discussion what commands would be good to have in the includelist for conda project? Here's a few that I would include:
Other commands that I'm not yet convinced would fit are
All packages and env-spec commands could be dropped since that can be handled by the environment.yml file as provided in #275. The init command could be useful if redesigned for this usage, exactly what that would be is TBD. Considering how we could handle lock and platforms features has some overlap with #275 as well. |
From @jlstevens
You'll notice that points 1 and 2 are addressed in this PR. |
I am 100% behind defining a strict subset of functionality for |
The archive/unarchive features seem core to me; they help define what it means to be a complete project (e.g. omitting the envs/ subdirectory, and ideally also omitting nonsense like the .ipynb_checkpoints files that always end up in them). In fact, the .zip file is what I would call the "project"; that's what I'd want to back up, email to people, put onto removable media, etc. I agree that upload and download are specific to anaconda.org and thus not currently suitable for a |
@jbednar could you explain more about what you mean with "support for environment variables and datasets"? Is there something you'd like to change with the way they are currently supported? |
cc: @edennuriel |
I think @mcg1969 would be the one with opinions here; I haven't used them much and I think I'm happy with how they work in anaconda-project as far as I've encountered them. However, I'm no expert there and I don't know how much that support applies or should apply to conda more generally, so I'd want someone who does know that aspect of anacond-project better to evaluate whether such behavior is appropriate for a |
I haven't used anaconda-project's dataset functionality much if at all. The environment variable functionality seems immensely useful, enough so that I'd even want to evolve |
One general point: I am frankly not that big of a fan of most of the CLI commands for anaconda-project. YMMV I know, but for me, most of the commands for adding/removing packages, variables etc. are just more naturally accomplished by editing the file. The commands I do like are the ones that effect global change, such as prepare, run, lock, etc. |
Same here. I have never even tried the ones that simply edit the file, because for personal use I will always just edit the file myself. I assume those commands are useful mainly when implementing a non-Python GUI, i.e. as commands that can be invoked to take some data entered in a form and make it end up in the .yml. So I'm happy for them not to be available in a
Sounds like we have complementary experience here. I haven't used the envt variable stuff much if at all, but we use the download functionality extensively in our public examples, e.g.: https://github.com/pyviz-topics/examples/blob/master/bay_trimesh/anaconda-project.yml#L40 It's great for making a runnable example project that's small enough to be practical to archive, put in version control, put on a website, send in email, etc., without polluting an example notebook with code to fetch and cache an external dataset. The dataset simply needs to be listed in the .yml, and it's then fetched and ready when the command is run. It's very useful functionality, but in my opinion is project specific, i.e., should only be relevant to |
(and project-lock.yml)
See #363 for the reboot of this PR. All comments provided here will be considered. |
This is meant to demonstrate and seek feedback for
conda project
with minimal changes.anaconda-project entry point renamed to conda-project
conda-*
executables in the PATH to enableconda project
conda --help
will display commands from other projects installed into the base envconda-project.yml
is preferred butanaconda-project.yml
is still supportedcli help updated to reflect
conda-project
conda recipe updated to build
conda-project
as the package name