Code Monkey home page Code Monkey logo

Comments (3)

cjdoris avatar cjdoris commented on May 27, 2024

All of this comes down to the fact that CondaPkg might find multiple CondaPkg.toml files (e.g. in your project plus some of its dependencies) and it needs to decide how to merge them. That, plus Conda only has two ways to specify channels: a list of channels to look in for all packages (via the --channel) argument, or a specific channel for a particular package (via the channel::package syntax). Currently we don't use the latter method. So to address your points:

  1. This is intentional, and documented, that not specifying a list of channels is equivalent to specifying only conda-forge. Someone who writes a CondaPkg.toml file must know in which channels to look.
  2. This is intentional, and comes from the fact that different CondaPkg.toml files might have a different view on which channels are more important. Since there's no way for them to agree, I just enforce that there is no specified order on channels.
  3. I do intend to allow specifying channels on a per-package basis, but haven't quite figured out how that would work.

Ultimately, I think CondaPkg will change to use the channel::package syntax entirely instead of the global --channel argument, because frankly it's pretty weird to have a list of channels which all might contain different packages of the same name (or the same package but built differently, like in your case, which is just a different package in my book).

The reason I don't use environments.yml is mainly that I don't want to be constrained to its syntax - I need to be able to parse it correctly, and that's easier if I define the format of the file myself (e.g. I don't need to worry about the full package spec format), plus I might need to add more fields not currently in environment.yml. Also TOML is standard in the Julia community. Also I need to parse these quickly at startup time and TOML was the only parser I found which didn't add to the package load time.

from condapkg.jl.

cjdoris avatar cjdoris commented on May 27, 2024

See #25.

from condapkg.jl.

moble avatar moble commented on May 27, 2024

Whoa! I thought I knew a bit about conda, what with doing all sorts of conda-build fanciness, maintaining conda-forge packages, etc. But I had never come across the channel::package syntax. Even now, I'm having real trouble finding finding it in any documentation, other than some ambiguous ugliness, a subtle usage in the search help text, and the full spec in a docstring that apparently doesn't make it into the docs.

Thanks for explaining your reasoning. That all makes sense.

from condapkg.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.