Open emilazy opened 1 month ago
python3Packages.biopandas
has dropped pynose in v0.5.1.dev1 (not yet released). We should be able to check that off once the next version releases.
Hi, "paperwork" package also depend on nose and raise error actually.
Seems like paperwork depends on pypillowfight, which has a build error due to nose not being supported. I'm investigating now!
Edit: it also depends on fabulous
, which has some more failing tests.
ledger-autosync
can stay broken for now, per https://github.com/egh/ledger-autosync/issues/143, upstream is working on getting a new release out, which should include all fixes for distutils, nose -> pytest, etc. I could also just update to the latest commit in the meantime if that's what's wanted.
sasview
, while listed here, does not depend on nose.
@pyrox0 sasview
has an xhtml2pdf.nix
besides the default.nix
which depends on nose.
I am not a package maintainer of any of the mentioned packages, may I still help?
@Sigmanificient yes you may! feel free to submit a PR for any listed package ^^
Yep, anyone can submit a PR for any package, as long as it follows guidelines; maintainership != exclusive ownership.
This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/error-nose-1-3-7-not-supported-for-interpreter-python3-12/48703/40
We should probably mark the packages we have discovered that still use nose
so that we don't have to repeat each other's homework.
As in, the packages that would need patching to drop the dependency? Seems like a good idea; if anyone without permissions to edit the original post lists such packages here I’ll add a note to the list and hide the comment to avoid noise.
What should be done for trfl
? It is marked as broken
Drop it? It hasn't seen activity in the 2 years since it was init'ed...
Drop it? It hasn't seen activity in the 2 years since it was init'ed...
Oh this is reassuring, I was about to do a drop pr, but I noticed that it was only marked as broken 2 month ago.
styra
was marked as broken 8 months ago: https://github.com/NixOS/nixpkgs/commits/master/pkgs/development/python-modules/stytra/default.nix
Yes, let’s drop it. In general, anything that’s giving us trouble during the 3.12 migration and clearly has no maintenance is most likely going to cause us more trouble in future; the same reasons we want to get rid of nose apply to most of the packages that will make getting rid of nose a pain.
Of course, there are some packages that may be too popular or too irreplaceable for dropping them to be easy to stomach, but I do think that in the cases where upstream actually does depend on nose and doesn’t seem actively maintained enough for a PR to be worthwhile, we should lean towards just dropping the package by default. Those packages are going to fall out of the active Python ecosystem anyway because you won’t be able to use them on the latest Python version with the standard package managers; in the absence of a compelling reason to make an exception, it doesn’t do much good for us to keep them on life support only for users of Nixpkgs.
It’s easy to re‐add a removed package if people complain or if something that requires it gets added to Nixpkgs, but hard for us to actively keep broken packages working. We should think of this as an opportunity to tend our garden rather than just doing a bunch of labour for dead upstreams and no real benefit. As far as making the judgement call goes, in‐tree reverse dependencies are an obvious metric to use for libraries, but I also found a site called Wheelodex that indexes reverse dependencies for PyPI projects. That can help inform the judgement calls about whether to patch or drop.
Do you know an easy way to build an in-tree reverse dependency list for a given package? (As in the full tree, not just one level up)
Do you know an easy way to build an in-tree reverse dependency list for a given package? (As in the full tree, not just one level up)
No, I’ve just been grepping for immediate reverse dependencies and then repeating if anything looks likely to be used by anything else. I know there’s a script by @trofi that probably does a better job, and ofborg of course knows how to do it.
By the way, in the case of pyRFC3339, it looks like Certbot depends on it. Maybe that’s just a compatibility thing and it can use the standard library on newer versions, but if not we probably can’t drop it.
I don't think borgo knows anything about it? I'll look at trofi's script though, thanks.
It calculates the number of rebuilds to tag by checking which output paths change. The ofborg-eval action output lists all of them.
Maybe this will come in handy for stuff we need to patch: https://github.com/pytest-dev/nose2pytest.
It calculates the number of rebuilds to tag by checking which output paths change. The ofborg-eval action output lists all of them.
yes but it gets the number of changed hydraJobs (which requires editing the expression first), it doesn't query for reverse deps (afaik)
Using https://github.com/trofi/nixpkgs-overlays/blob/main/lib/arevdeps.nix I got this list:
I'll try to keep a checklist up to date, based on @trofi's list:
97
items: 30.93%
done, 23.71%
in progress, 44
waiting
moved down
The list in my original issue is the relevant one. The packages present in @trofi’s list but not mine don’t depend directly on nose, so there’s nothing actionable to do with them. The reverse dependencies script is potentially useful when assessing whether to drop individual packages in my list.
Ah, sorry; I forgot that arevdeps.nix
only does one level of reverse dependencies. So actually it’s relevant, and maybe some of the differences between the two might be due to the imprecision of my grep script. (But e.g. aws-google-auth
is missing from @trofi’s list, and it definitely references nose
. Not sure what’s going on there.)
Boto was archived may 10, 2024
Although boto is deprecated, a few things still depend on it, probably including out‐of‐tree projects. I’m not qualified to say if it’d be possible to do an immediate sweep of them, but I’d probably lean towards fixing it instead.
Seems like package weboob is a duplicate of woob?
webhelpers has doCheck = false
due to broken code, but I cant access the source
Is is on my side, or repository is gone: https://bitbucket.org/bbangert/webhelpers
@Sigmanificient the source code should still be there on Pypi but yes, the original repo is gone.
I think it should be dropped, as does not have any reverse dependency, and wasn't updated (release) since it as been moved to python modules 6 years ago.
Seems like package weboob is a duplicate of woob?
Uhh, wow. The things you can find hiding in the corners of a repository this large. The one with a maintainer seems more polished and has a newer version and more current licence. But wow. We should definitely drop weboob
; looks like upstream has used pytest since 2021, so it should be a pretty easy fix for the other one.
pylockfile is no longer maintained.
97
items: 45.36%
done, 16.49%
in progress, 37
waiting
Maybe this will come in handy for stuff we need to patch: https://github.com/pytest-dev/nose2pytest.
I’ve packaged this in https://github.com/NixOS/nixpkgs/pull/330725 and am working on nose3 and its dependents.
I'm working on python-hglib, which has needed me to update/modernize the python312Packages.glean-sdk
and python312Packages.glean-parser
derivations, and fix some mozphab
tests. Should be submitting a PR as soon as nixpkgs-review finishes(again).
python3Packages.docker doesn't depend on nose, and hasn't for a while, should be good to check off.(edit: was in the original list at the top of this issue, not the one lower down)
Ah, that’s my script being bad. It’s docker-compose_1
in pkgs/applications/virtualization/docker/compose_1.nix
. Which, uh, probably we could drop that?
115
items: 86.96%
done, 11.30%
in progress, 4
waiting
@emilazy python3Packages.mkl-service from the original list does not actually use nose. Guess we can get rid of it from the list.
Looks like I just missed https://github.com/NixOS/nixpkgs/pull/324729. Fixed!
lockfile is no longer maintained.
Apache airflow depends on it tho: https://github.com/NixOS/nixpkgs/blob/master/pkgs/servers/apache-airflow/python-package.nix
apache-airflow
also has knownVulnerabilities
set, so that’s fine.
What are its reverse dependencies?
Nothing. But it doesn’t matter; Hydra won’t build it and users can’t use it without overriding a big scary warning anyway. If someone manages to get a newer, non‐vulnerable version working, it can be added back. Though of course they’d have to re‐add lockfile
and fix its tests situation. I’m not necessarily opposed to just fixing lockfile
but it’s unclear whether apache-airflow
is going to be updated any time soon anyway. cc @risicle
Tried to make a patch for pydy
:
diff --git a/pydy/codegen/tests/test_c_code.py b/pydy/codegen/tests/test_c_code.py
index 24b6784..5af9287 100644
--- a/pydy/codegen/tests/test_c_code.py
+++ b/pydy/codegen/tests/test_c_code.py
@@ -2,9 +2,10 @@
import os
+import pytest
+
from pkg_resources import parse_version
import sympy as sm
-from nose.tools import assert_raises
from ...models import multi_mass_spring_damper
from ..c_code import CMatrixGenerator
@@ -40,7 +41,8 @@ class TestCMatrixGenerator():
# Make sure an error is risen if not enough arguments are provided.
arguments = self.arguments[:-1]
- assert_raises(ValueError, CMatrixGenerator, arguments, self.matrices)
+ with pytest.raises(ValueError):
+ CMatrixGenerator(arguments, self.matrices)
def test_generate_cse(self):
diff --git a/pydy/tests/test_utils.py b/pydy/tests/test_utils.py
index cc27c81..4b2bf9f 100644
--- a/pydy/tests/test_utils.py
+++ b/pydy/tests/test_utils.py
@@ -1,8 +1,9 @@
#!/usr/bin/env python
+import pytest
+
from pkg_resources import parse_version
from setuptools import __version__ as SETUPTOOLS_VERSION
-from nose.tools import assert_raises
from sympy import cos, sin, tan, sqrt, Matrix
from sympy.physics.mechanics import dynamicsymbols
@@ -20,7 +21,7 @@ def test_sympy_equal_to_or_newer_than():
assert sympy_equal_to_or_newer_than('0.6.5', '0.7.6.dev')
assert not sympy_equal_to_or_newer_than('0.7.7', '0.7.6.dev')
if parse_version(SETUPTOOLS_VERSION) >= parse_version('8.0'):
- with assert_raises(ValueError):
+ with pytest.raises(ValueError):
sympy_equal_to_or_newer_than('0.7.7', '0.7.6-git')
diff --git a/pydy/viz/tests/test_scene.py b/pydy/viz/tests/test_scene.py
index 9bb4c83..1673a64 100644
--- a/pydy/viz/tests/test_scene.py
+++ b/pydy/viz/tests/test_scene.py
@@ -4,11 +4,12 @@ import os
import shutil
import glob
+import pytest
+
import numpy as np
from numpy.testing import assert_allclose
from sympy import symbols
import sympy.physics.mechanics as me
-from nose.tools import assert_raises
from ...system import System
from ..shapes import Sphere
@@ -129,13 +130,13 @@ class TestScene(object):
scene = Scene(self.ref_frame, self.origin, self.viz_frame,
times=self.sys.times)
- with assert_raises(ValueError):
+ with pytest.raises(ValueError):
scene.system = self.sys
scene = Scene(self.ref_frame, self.origin, self.viz_frame,
system=self.sys)
- with assert_raises(ValueError):
+ with pytest.raises(ValueError):
scene.times = self.sys.times
def test_clear_trajectories(self):
diff --git a/pydy/viz/tests/test_shapes.py b/pydy/viz/tests/test_shapes.py
index 767e0ce..487e061 100644
--- a/pydy/viz/tests/test_shapes.py
+++ b/pydy/viz/tests/test_shapes.py
@@ -2,9 +2,11 @@
# external
import numpy as np
+import pytest
+
from sympy import symbols
from numpy.testing import assert_allclose
-from nose.tools import assert_raises
+
try:
import pythreejs as p3js
except ImportError:
@@ -29,19 +31,19 @@ def test_shape():
shape.name = 'shape1'
assert shape.name == 'shape1'
- with assert_raises(TypeError):
+ with pytest.raises(TypeError):
shape.name = 1
shape.color = 'red'
assert shape.color == 'red'
- with assert_raises(ValueError):
+ with pytest.raises(ValueError):
shape.color = 'puke'
shape.material = "water"
assert shape.material == "water"
shape.material = "WATER"
assert shape.material == "WATER"
- with assert_raises(ValueError):
+ with pytest.raises(ValueError):
shape.material = 'fluffy cloth'
assert shape.generate_dict() == {"color": "red",
diff --git a/setup.py b/setup.py
index 0e230d6..5aeaacf 100644
--- a/setup.py
+++ b/setup.py
@@ -50,7 +50,7 @@ setup(
packages=find_packages(),
install_requires=install_requires,
extras_require=extras_require,
- tests_require=['nose>=1.3.7'],
+ tests_require=['pytest'],
test_suite='nose.collector',
include_package_data=True,
classifiers=[
However there is many failling tests:
=================================== test session starts ===================================
platform linux -- Python 3.12.4, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/sigmanificient/pydy
collected 71 items
pydy/codegen/tests/test_c_code.py FFFFFFFFF [ 12%]
pydy/codegen/tests/test_cython_code.py FFFF. [ 19%]
pydy/codegen/tests/test_octave_code.py . [ 21%]
pydy/codegen/tests/test_ode_function_generator.py ...FFFF..FFF... [ 42%]
pydy/tests/test_models.py ... [ 46%]
pydy/tests/test_system.py FFFFFFFFFFF. [ 63%]
pydy/tests/test_utils.py ... [ 67%]
pydy/viz/tests/test_scene.py FFFFFFFF [ 78%]
pydy/viz/tests/test_shapes.py ............... [100%]
======================================== FAILURES =========================================
...
======================= 39 failed, 32 passed, 3 warnings in 35.88s ========================
aws-google-auth may be dead: https://github.com/cevoaustralia/aws-google-auth/issues/284
nose is abandoned upstream and has caused us untold headaches recently (admittedly mostly unrelated to the code itself). We’ve stopped the bleeding by getting https://github.com/NixOS/nixpkgs/pull/325968 into staging thanks to the incredible work of @jchv, but it’s still broken on master and we ought to do some tidying up so we’re not dragging this around forever and perhaps even to unblock some stuff on master while the staging cycle progresses. Many packages don’t actually need nose any more, despite us including it in our dependency lists. Active upstreams should have already moved to pytest or something else. Some packages will have patches available; if we’re really feeling generous we could send patches to upstream ourselves. Others may be completely unmaintained packages that we could think about dropping.
Please make sure to migrate packages to
pyproject = true;
when working on them. Additionally, if the upstream is unmaintained, there are no significant reverse dependencies in‐tree or on Wheelodex, and it requires patching or there is no particular reason to imagine we’d want to keep it, consider just dropping the package. For the same reasons we want to get rid of nose, we should take this as an opportunity to reduce future maintenance burden and drop broken, unused, or long‐obsolete packages.@dotlambda has already done some great work on this – see https://github.com/NixOS/nixpkgs/pull/325847, https://github.com/NixOS/nixpkgs/pull/325872, https://github.com/NixOS/nixpkgs/pull/325885, and https://github.com/NixOS/nixpkgs/pull/326164 – but I thought it’d be good to have a master list of all affected packages so we can tackle it collectively. If you open a PR for one of these, please edit this issue to link it beside the relevant package(s).
adafruit-nrfutil
https://github.com/NixOS/nixpkgs/pull/327199aws-google-auth
https://github.com/NixOS/nixpkgs/pull/331352caffe
cmake-lint
https://github.com/NixOS/nixpkgs/pull/327220docker-compose_1
https://github.com/NixOS/nixpkgs/pull/330907gixy
https://github.com/NixOS/nixpkgs/pull/330741grin
https://github.com/NixOS/nixpkgs/pull/330741hydrus
ledger-autosync
https://github.com/NixOS/nixpkgs/pull/334202mackup
https://github.com/NixOS/nixpkgs/pull/327240mbutil
https://github.com/NixOS/nixpkgs/pull/334492onboard
openlp
https://github.com/NixOS/nixpkgs/pull/330855python3Packages.actdiag
https://github.com/NixOS/nixpkgs/pull/330396python3Packages.androguard
https://github.com/NixOS/nixpkgs/pull/330535python3Packages.apricot-select
python3Packages.beaker
https://github.com/NixOS/nixpkgs/pull/327530python3Packages.biopandas
https://github.com/NixOS/nixpkgs/pull/330740python3Packages.blessings
python3Packages.blockdiag
https://github.com/NixOS/nixpkgs/pull/330396python3Packages.boto
python3Packages.braintree
https://github.com/NixOS/nixpkgs/pull/330290python3Packages.bx-python
https://github.com/NixOS/nixpkgs/pull/330744python3Packages.cassandra-driver
https://github.com/NixOS/nixpkgs/pull/330760python3Packages.cgroup-utils
https://github.com/NixOS/nixpkgs/pull/330287python3Packages.changefinder
https://github.com/NixOS/nixpkgs/pull/330311python3Packages.chart-studio
https://github.com/NixOS/nixpkgs/pull/330248python3Packages.citeproc-py
https://github.com/NixOS/nixpkgs/pull/330237python3Packages.clickhouse-driver
https://github.com/NixOS/nixpkgs/pull/330959python3Packages.clustershell
python3Packages.deform
https://github.com/NixOS/nixpkgs/pull/328917python3Packages.django-crontab
python3Packages.dm-control
python3Packages.dodgy
https://github.com/NixOS/nixpkgs/pull/330761python3Packages.envs
https://github.com/NixOS/nixpkgs/pull/330762python3Packages.expiringdict
https://github.com/NixOS/nixpkgs/pull/326665python3Packages.flask-restful
https://github.com/NixOS/nixpkgs/pull/330876python3Packages.gocardless-pro
https://github.com/NixOS/nixpkgs/pull/326766python3Packages.habanero
https://github.com/NixOS/nixpkgs/pull/330768python3Packages.hkdf
https://github.com/NixOS/nixpkgs/pull/330769python3Packages.http-ece
https://github.com/NixOS/nixpkgs/pull/330771python3Packages.inotify
https://github.com/NixOS/nixpkgs/pull/330776python3Packages.isbnlib
https://github.com/NixOS/nixpkgs/pull/330773python3Packages.jsonable
https://github.com/NixOS/nixpkgs/pull/330777python3Packages.jupyter-contrib-nbextensions
python3Packages.libgpuarray
https://github.com/NixOS/nixpkgs/pull/331841python3Packages.locationsharinglib
https://github.com/NixOS/nixpkgs/pull/330786python3Packages.lockfile
python3Packages.mhcflurry
python3Packages.mkl-service
https://github.com/NixOS/nixpkgs/pull/324729python3Packages.mohawk
https://github.com/NixOS/nixpkgs/pull/331838python3Packages.mongoengine
https://github.com/NixOS/nixpkgs/pull/334487python3Packages.mwtypes
https://github.com/NixOS/nixpkgs/pull/330805python3Packages.mwxml
https://github.com/NixOS/nixpkgs/pull/330805python3Packages.mygpoclient
https://github.com/NixOS/nixpkgs/pull/324734python3Packages.nbmerge
https://github.com/NixOS/nixpkgs/pull/324749python3Packages.neo
https://github.com/NixOS/nixpkgs/pull/330882python3Packages.nose-pattern-exclude
https://github.com/NixOS/nixpkgs/pull/330439python3Packages.nose-timer
https://github.com/NixOS/nixpkgs/pull/330535python3Packages.nose-warnings-filters
https://github.com/NixOS/nixpkgs/pull/330439python3Packages.nose-xunitmp
https://github.com/NixOS/nixpkgs/pull/330869python3Packages.nwdiag
https://github.com/NixOS/nixpkgs/pull/330396python3Packages.ofxhome
https://github.com/NixOS/nixpkgs/pull/327239python3Packages.ofxtools
https://github.com/NixOS/nixpkgs/pull/330866python3Packages.para
https://github.com/NixOS/nixpkgs/pull/330229python3Packages.paramz
https://github.com/NixOS/nixpkgs/pull/330865python3Packages.pastescript
https://github.com/NixOS/nixpkgs/pull/327246python3Packages.paver
https://github.com/NixOS/nixpkgs/pull/330858python3Packages.pid
https://github.com/NixOS/nixpkgs/pull/327372python3Packages.pkutils
https://github.com/NixOS/nixpkgs/pull/330741python3Packages.pprintpp
https://github.com/NixOS/nixpkgs/pull/330705python3Packages.preggy
https://github.com/NixOS/nixpkgs/pull/329978python3Packages.premailer
https://github.com/NixOS/nixpkgs/pull/330702python3Packages.prison
https://github.com/NixOS/nixpkgs/pull/330700python3Packages.prox-tv
https://github.com/NixOS/nixpkgs/pull/330699python3Packages.ptable
https://github.com/NixOS/nixpkgs/pull/330696python3Packages.pycdio
https://github.com/NixOS/nixpkgs/pull/330695python3Packages.pycontracts
https://github.com/NixOS/nixpkgs/pull/330791python3Packages.pydy
python3Packages.pyexcel-ods
https://github.com/NixOS/nixpkgs/pull/330758python3Packages.pyexcel-xls
https://github.com/NixOS/nixpkgs/pull/330758python3Packages.pygatt
https://github.com/NixOS/nixpkgs/pull/332660 https://github.com/NixOS/nixpkgs/pull/330688python3Packages.pygeoip
https://github.com/NixOS/nixpkgs/pull/330509python3Packages.pygogo
https://github.com/NixOS/nixpkgs/pull/329989python3Packages.pygtfs
https://github.com/NixOS/nixpkgs/pull/330504python3Packages.pylacrosse
https://github.com/NixOS/nixpkgs/pull/330500python3Packages.pypass
https://github.com/NixOS/nixpkgs/pull/330222python3Packages.pypillowfight
https://github.com/NixOS/nixpkgs/pull/327214python3Packages.pyquaternion
https://github.com/NixOS/nixpkgs/pull/330459python3Packages.pyrfc3339
https://github.com/NixOS/nixpkgs/pull/330496python3Packages.pysrt
https://github.com/NixOS/nixpkgs/pull/330441python3Packages.pytest
https://github.com/NixOS/nixpkgs/pull/326541python3Packages.python-etcd
https://github.com/NixOS/nixpkgs/pull/330438python3Packages.python-fedora
https://github.com/NixOS/nixpkgs/pull/327169python3Packages.python-hglib
https://github.com/NixOS/nixpkgs/pull/330739python3Packages.python-mapnik
https://github.com/NixOS/nixpkgs/pull/330432python3Packages.pytimeparse
https://github.com/NixOS/nixpkgs/pull/330421python3Packages.pyutilib
https://github.com/NixOS/nixpkgs/pull/330759python3Packages.rauth
https://github.com/NixOS/nixpkgs/pull/330417python3Packages.rx
python3Packages.safe
https://github.com/NixOS/nixpkgs/pull/330404python3Packages.sampledata
https://github.com/NixOS/nixpkgs/pull/330029python3Packages.scales
https://github.com/NixOS/nixpkgs/pull/334466python3Packages.scikit-fuzzy
https://github.com/NixOS/nixpkgs/pull/330854python3Packages.selectors2
https://github.com/NixOS/nixpkgs/pull/330024python3Packages.seqdiag
https://github.com/NixOS/nixpkgs/pull/330396python3Packages.shap
python3Packages.simplebayes
https://github.com/NixOS/nixpkgs/pull/330018python3Packages.spark-parser
https://github.com/NixOS/nixpkgs/pull/330001python3Packages.sphinx-rtd-dark-mode
https://github.com/NixOS/nixpkgs/pull/330383python3Packages.sqlalchemy-mixins
https://github.com/NixOS/nixpkgs/pull/330493python3Packages.stytra
python3Packages.sure
https://github.com/NixOS/nixpkgs/pull/330012python3Packages.svgutils
https://github.com/NixOS/nixpkgs/pull/330381python3Packages.telfhash
https://github.com/NixOS/nixpkgs/pull/330005python3Packages.tempita
https://github.com/NixOS/nixpkgs/pull/330855python3Packages.tissue
https://github.com/NixOS/nixpkgs/pull/330376python3Packages.traittypes
https://github.com/NixOS/nixpkgs/pull/330236python3Packages.trfl
https://github.com/NixOS/nixpkgs/pull/329976python3Packages.uncompyle6
python3Packages.unicode-slugify
https://github.com/NixOS/nixpkgs/pull/329998python3Packages.uvcclient
python3Packages.vxi11
https://github.com/NixOS/nixpkgs/pull/329994python3Packages.webassets
https://github.com/NixOS/nixpkgs/pull/334483python3Packages.webhelpers
https://github.com/NixOS/nixpkgs/pull/330399python3Packages.weboob
https://github.com/NixOS/nixpkgs/pull/330436python3Packages.wsme
https://github.com/NixOS/nixpkgs/pull/334472python3Packages.xlwt
https://github.com/NixOS/nixpkgs/pull/330217python3Packages.yanc
https://github.com/NixOS/nixpkgs/pull/329978python3Packages.yarg
https://github.com/NixOS/nixpkgs/pull/327170sasview
svtplay-dl
https://github.com/NixOS/nixpkgs/pull/330741tarsnapper
https://github.com/NixOS/nixpkgs/pull/334462zk-shell
https://github.com/NixOS/nixpkgs/pull/333725This was generated from staging commit 83881cb6e9b660cbca5241380c031ab2b69d6e1e with the following awful fish one‐liner:
for pkg in (rg -l '\bnose3?\b' | rg -v '/(nose[23]?|cufflinks|enocean|jaconv|annoy|hdmedians|flaky|pycron|snapshottest|ssh-mitm|colour|influxdb)/|(python|cran)-(packages|aliases)\.nix' | sed 's|.*/\([^/]*\)/\([^/]*\)$|\1|'); rg "/$pkg"'[ \n{]' pkgs/top-level/python-packages.nix | awk '{print "python3Packages." $1}'; test $pipestatus[1] = 0 || rg "/$pkg"'[ \n{]' pkgs/top-level/all-packages.nix | awk '{print $1}'; test $pipestatus[1] = 0 || echo "$pkg"; end | sort -u | sed 's/^/* [ ] `/; s/$/`/'
; feel free to edit to update the list.