I'm currently fixing some issues with the JSON sch...
# team-maintainers
n
I'm currently fixing some issues with the JSON schema for the
environment.yaml
file and am considering to make the version pinning (with
==
) mandatory for all conda and pip packages. Do you think that's a good idea (it would definitely help with reproducibility in conda envs)
j
Ooooh that's tricky
What if dependency (samtools) has major bug
Although it would mean parity with the container though
So I guess yes
n
Than we would need to update the module 😛
👍 2
Indeed this will certainly also help if we migrate to seqera containers
👍 1
I made a PR with the proposed changes, please have a thorough look because this will probably cause a lot of modules to fail their linting 😁: https://github.com/nf-core/modules/pull/6588
s
I thought that all packages already did this? How many don't?
j
Not
==
no
n
most did
>=
😛
👍 1
j
It's whats recommend
n
It's one
=
for conda apparently and
==
for pip 😛
Should I re-add support for
>=
or not?
m
@Jonathan Manning?
j
The main thing should obviously be pinned (samtools for a samtools module). Nothing else should require it IMO, that's what lock files are for (which we'll hopefully be sorting soon). So yes, any other dependencies should allow >= (I think)
👍🏻 1
👍 1
n
Hmmm okay but I'm not sure there is a way to validate that for only the module tool itself 🤔
j
Yeah, I thought you'd say that. But it certainly shouldn't be disallowed
j
First tool in teh list?
(if it's possible to fix this)
Ah i guess not if there are multiple tools
n
I'll do some exploring in the JSON schema docs 😛 but yeah the first value could be a solution
p
Yeah was going to say that conda lock files will hopefully be the best solution here.
I'm surprised that we're not already using exact version matching though tbh
n
Not all modules use it apparently hence why I wanted to enforce it this way 🙂
e
I'd vote
=
. Renovate will bump anything anyways 🤷🏻 If that's easier to lock down the main requirements then.
👍🏻 1
👍 2
n
I'll create a vote that will be easier to see the overall support for this
❤️ 1
s
Currently we only specify dependencies if they are either: • Missing from the bioconda recipe • Different from the docker, which means that we end up with version drift over time with the fixed docker/singularity containers (and then md5sum changes)
j
Option 2 is what the lock files should fix when we get to it 🤞 IMO we should have production and development scenarios in mind. In production I want nothing to change ever (until I tell it to), in development I don't want some random pin someone introduced to harmonise with Docker getting me into dependency issues I could avoid. Development = environment.yml, Production = environment-lock.yml (or whatever we end up calling it)
j
tenor_gif8590786383981502764.gif,tenor_gif5130339753157469136.gif
p
Yup, agreed that we should basically never do this. If missing in bioconda we should add in bioconda. And use lock files to avoid drift in prod. Then just have the main tool(s) and lock them with
==
s
in development I want the tool to work consistently too, which is why I don't want to use conda 🤷
n
yep this could solve some failing tests for conda in nf-core modules. if they are the same as in the container nothing should break or cause dependency issues
(on the contrary it should solve most issues)