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

Invalid versions outside nixpkgs #567

Merged
merged 2 commits into from Jul 10, 2023

Conversation

TyberiusPrime
Copy link
Collaborator

Following #564, it was discovered that pypi is also full of no longer parsing versions.
We had 'fixed' this for nixpkgs in #549 by eliminating all non-parsable versions,
this does the same for pypi (sdist & wheel) and conda.

It's a hot take, and not the best way forward I suppose, but it does make master usable for now.

@DavHau DavHau merged commit ad1e1ca into DavHau:master Jul 10, 2023
3 checks passed
@TyberiusPrime
Copy link
Collaborator Author

Thanks for the quick merge David!
I appreciate you being this responsive.

(also note line 114 of mach_nix/requirements.py, where we explicitly take 'pytz>dev' to mean 'pytz', so any ol' version is being accepted.)

@InLaw
Copy link
Contributor

InLaw commented Jul 10, 2023

only FYI:

pyzmq # InvalidSpecifier: Invalid specifier: '!=3.0*' (e.g. from jupyter server )
building '/nix/store/2y7xih18swwk18vdma903b4h8q989px4-mach_nix_file.drv'...
omitting nixpkgs / aiodocker version was invalid: 'unstable-2022-01-20'
omitting nixpkgs / amaranth-boards version was invalid: 'unstable-2021-12-17'
omitting nixpkgs / amaranth-soc version was invalid: 'unstable-2021-12-10'
omitting nixpkgs / amiibo-py version was invalid: 'unstable-2021-01-16'
omitting nixpkgs / amqtt version was invalid: 'unstable-2022-05-29'
omitting nixpkgs / assay version was invalid: 'unstable-2022-01-19'
omitting nixpkgs / asyncserial version was invalid: 'unstable-2022-06-10'
omitting nixpkgs / augmax version was invalid: 'unstable-2022-02-19'
omitting nixpkgs / avro3k version was invalid: '1.7.7-SNAPSHOT'
omitting nixpkgs / bunch version was invalid: 'unstable-2017-11-21'
omitting nixpkgs / clip version was invalid: 'unstable-2022-11-17'
omitting nixpkgs / colormath version was invalid: 'unstable-2021-04-17'
omitting nixpkgs / contexttimer version was invalid: 'unstable-2019-03-30'
omitting nixpkgs / dasbus version was invalid: 'unstable-11-10-2022'
omitting nixpkgs / datatable version was invalid: 'unstable-2022-12-15'
omitting nixpkgs / docx2python version was invalid: 'unstable-2020-11-15'
omitting nixpkgs / dopy version was invalid: '2016-01-04'
omitting nixpkgs / dpcontracts version was invalid: 'unstable-2018-11-20'
omitting nixpkgs / fastpair version was invalid: '2021-05-19'
omitting nixpkgs / Flask-Silk version was invalid: 'unstable-2018-06-28'
omitting nixpkgs / gattlib version was invalid: 'unstable-2021-06-16'
omitting nixpkgs / geeknote version was invalid: '2015-05-11'
omitting nixpkgs / gtimelog version was invalid: 'unstable-2020-05-16'
omitting nixpkgs / gumath version was invalid: 'unstable-2019-08-01'
omitting nixpkgs / gyp version was invalid: 'unstable-2022-04-01'
omitting nixpkgs / hg-commitsigs version was invalid: 'unstable-2021-01-08'
omitting nixpkgs / inotify version was invalid: 'unstable-2020-08-27'
omitting nixpkgs / jinja2-git version was invalid: 'unstable-2021-07-20'
omitting nixpkgs / jmp version was invalid: 'unstable-2021-10-03'
omitting nixpkgs / kaa-base version was invalid: '0.99.2dev-384-2b73caca'
omitting nixpkgs / kaa-metadata version was invalid: '0.7.8dev-r4569-20111003'
omitting nixpkgs / kinparse version was invalid: 'unstable-2019-12-18'
omitting nixpkgs / klein version was invalid: 'unstable-2022-06-26'
omitting nixpkgs / kmsxx version was invalid: '2021-07-26'
omitting nixpkgs / loguru version was invalid: 'unstable-2023-01-20'
omitting nixpkgs / migen version was invalid: 'unstable-2022-09-02'
omitting nixpkgs / misoc version was invalid: 'unstable-2022-10-08'
omitting nixpkgs / mung version was invalid: 'unstable-2022-07-10'
omitting nixpkgs / muscima version was invalid: 'unstable-2023-04-26'
omitting nixpkgs / mutag version was invalid: '0.0.2-2ffa0258ca'
omitting nixpkgs / myhdl version was invalid: 'unstable-2022-04-26'
omitting nixpkgs / nbmerge version was invalid: 'unstable-2017-10-23'
omitting nixpkgs / ndtypes version was invalid: 'unstable-2019-08-01'
omitting nixpkgs / nix-kernel version was invalid: 'unstable-2020-04-26'
omitting nixpkgs / nocturne version was invalid: 'unstable-2022-10-15'
omitting nixpkgs / openai version was invalid: '0.27.6v2'
omitting nixpkgs / openant-unstable version was invalid: '2017-02-11'
omitting nixpkgs / OpenSfM version was invalid: 'unstable-2022-03-10'
omitting nixpkgs / ovmfvartool version was invalid: 'unstable-2022-09-04'
omitting nixpkgs / oyaml version was invalid: 'unstable-2021-12-03'
omitting nixpkgs / paranoid-crypto version was invalid: 'unstable-20220819'
omitting nixpkgs / percol version was invalid: 'unstable-2019-07-24'
omitting nixpkgs / pilkit version was invalid: 'unstable-2022-02-17'
omitting nixpkgs / pint-pandas version was invalid: 'unstable-2022-11-24'
omitting nixpkgs / polarizationsolver version was invalid: 'unstable-2021-11-02'
omitting nixpkgs / ppscore version was invalid: 'unstable-2021-11-25'
omitting nixpkgs / ptable version was invalid: 'unstable-2019-06-14'
omitting nixpkgs / py-sr25519-bindings version was invalid: 'unstable-2023-03-15'
omitting nixpkgs / py3buddy version was invalid: 'unstable-2019-09-29'
omitting nixpkgs / pybluez version was invalid: 'unstable-2022-01-28'
omitting nixpkgs / pycangjie version was invalid: 'unstable-2015-05-03'
omitting nixpkgs / pydes version was invalid: 'unstable-2019-01-08'
omitting nixpkgs / pyeclib version was invalid: 'unstable-2022-03-11'
omitting nixpkgs / pyfantom version was invalid: 'unstable-2013-12-18'
omitting nixpkgs / pyinputevent version was invalid: '2016-10-18'
omitting nixpkgs / pymaging version was invalid: 'unstable-2016-11-16'
omitting nixpkgs / pymaging-png version was invalid: 'unstable-2016-11-16'
omitting nixpkgs / pyrr version was invalid: 'unstable-2022-07-22'
omitting nixpkgs / pyschemes version was invalid: 'unstable-2017-11-08'
omitting nixpkgs / pysensors version was invalid: '2017-07-13'
omitting nixpkgs / pyspinel version was invalid: 'unstable-2021-08-19'
omitting nixpkgs / python-csxcad version was invalid: 'unstable-2020-02-18'
omitting nixpkgs / python-mapnik version was invalid: 'unstable-2020-09-08'
omitting nixpkgs / python-openems version was invalid: 'unstable-2020-02-15'
omitting nixpkgs / python-unshare version was invalid: 'unstable-2018-05-20'
omitting nixpkgs / pytricia version was invalid: 'unstable-2019-01-16'
omitting nixpkgs / qreactor-unstable version was invalid: '2018-09-29'
omitting nixpkgs / questionary version was invalid: 'unstable-2022-07-27'
omitting nixpkgs / radicale_infcloud version was invalid: 'unstable-2022-04-18'
omitting nixpkgs / rencode version was invalid: 'unstable-2021-08-10'
omitting nixpkgs / repocheck version was invalid: '2015-08-05'
omitting nixpkgs / rmrl version was invalid: 'unstable-2022-12-11'
omitting nixpkgs / scikit-fuzzy version was invalid: 'unstable-2022-11-07'
omitting nixpkgs / slimit version was invalid: 'unstable-2018-08-08'
omitting nixpkgs / slob version was invalid: 'unstable-2020-06-26'
omitting nixpkgs / sphinx-fortran version was invalid: 'unstable-2022-03-02'
omitting nixpkgs / sphinx-version-warning version was invalid: 'unstable-2019-08-10'
omitting nixpkgs / tempita version was invalid: '0.5.3-2016-09-28'
omitting nixpkgs / tess version was invalid: 'unstable-2019-05-07'
omitting nixpkgs / testing-postgresql version was invalid: 'unstable-2017-10-31'
omitting nixpkgs / traittypes version was invalid: 'unstable-2019-06-23'
omitting nixpkgs / vqgan-jax version was invalid: 'unstable-2022-04-20'
omitting nixpkgs / xnd version was invalid: 'unstable-2019-08-01'
omitting nixpkgs / yaswfp version was invalid: 'unstable-20210331'
omitting nixpkgs / zeek-broker version was invalid: 'unstable-2023-02-01'
╭───────────────────── Traceback (most recent call last) ──────────────────────╮
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/generate.py:113 in <module>                                 │
│                                                                              │
│   110                                                                        │
│   111                                                                        │
│   112 if __name__ == "__main__":                                             │
│ ❱ 113 │   main()                                                             │
│   114                                                                        │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │   CombinedDependencyProvider = <class                                    │ │
│ │                                'mach_nix.data.providers.CombinedDepende… │ │
│ │                      context = <function context at 0x7ffff64e2f70>      │ │
│ │                      dirname = <function dirname at 0x7ffff767a820>      │ │
│ │                           do = <function do at 0x7ffff62308b0>           │ │
│ │   filter_reqs_by_eval_marker = <function filter_reqs_by_eval_marker at   │ │
│ │                                0x7ffff62dedc0>                           │ │
│ │ handle_resolution_impossible = <function handle_resolution_impossible at │ │
│ │                                0x7ffff5e30670>                           │ │
│ │                         json = <module 'json' from                       │ │
│ │                                '/nix/store/l32bjvyic2fplxj9sl3v3m46fnci… │ │
│ │                         List = typing.List                               │ │
│ │                     load_env = <function load_env at 0x7ffff6f24e50>     │ │
│ │                     mach_nix = <module 'mach_nix' from                   │ │
│ │                                '/nix/store/qsvwkwvkyldy9vki24kqaimmmsyr… │ │
│ │                 MachNixError = <class                                    │ │
│ │                                'mach_nix.exceptions.MachNixError'>       │ │
│ │                         main = <function main at 0x7ffff5e30700>         │ │
│ │                 NixpkgsIndex = <class                                    │ │
│ │                                'mach_nix.data.nixpkgs.NixpkgsIndex'>     │ │
│ │                           os = <module 'os' from                         │ │
│ │                                '/nix/store/l32bjvyic2fplxj9sl3v3m46fnci… │ │
│ │           OverridesGenerator = <class                                    │ │
│ │                                'mach_nix.generators.overides_generator.… │ │
│ │                   parse_reqs = <function                                 │ │
│ │                                cached.<locals>.cached_deco.<locals>.cac… │ │
│ │                                at 0x7ffff628b280>                        │ │
│ │                      pformat = <function pformat at 0x7ffff75c0040>      │ │
│ │             ProviderSettings = <class                                    │ │
│ │                                'mach_nix.data.providers.ProviderSetting… │ │
│ │                        PyVer = <class 'mach_nix.versions.PyVer'>         │ │
│ │       RequirementInformation = <class                                    │ │
│ │                                'resolvelib.resolvers.RequirementInforma… │ │
│ │         ResolutionImpossible = <class                                    │ │
│ │                                'resolvelib.resolvers.ResolutionImpossib… │ │
│ │           ResolvelibResolver = <class                                    │ │
│ │                                'mach_nix.resolver.resolvelib_resolver.R… │ │
│ │                         rich = <module 'rich' from                       │ │
│ │                                '/nix/store/3q4s5cpldkavkgjsy3y681n176xc… │ │
│ │                          sys = <module 'sys' (built-in)>                 │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/generate.py:106 in main                                     │
│                                                                              │
│   103                                                                        │
│   104 def main():                                                            │
│   105 │   try:                                                               │
│ ❱ 106 │   │   do()                                                           │
│   107 │   except MachNixError as e:                                          │
│   108 │   │   print(e)                                                       │
│   109 │   │   exit(1)                                                        │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/generate.py:69 in do                                        │
│                                                                              │
│    66 │   )                                                                  │
│    67 │   reqs = filter_reqs_by_eval_marker(parse_reqs(requirements), contex │
│    68 │   try:                                                               │
│ ❱  69 │   │   expr = generator.generate(reqs)                                │
│    70 │   except ResolutionImpossible as e:                                  │
│    71 │   │   handle_resolution_impossible(e, requirements, providers_json,  │
│    72 │   │   exit(1)                                                        │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │ conda_channels_json = '/nix/store/7bbm4zs92xyv2wvp4fqq1m4zpn9dfqm3-cond… │ │
│ │       deps_provider = <mach_nix.data.providers.CombinedDependencyProvid… │ │
│ │                       object at 0x7ffff6241d90>                          │ │
│ │      disable_checks = '1'                                                │ │
│ │           generator = <mach_nix.generators.overides_generator.Overrides… │ │
│ │                       object at 0x7ffff561f640>                          │ │
│ │             nixpkgs = {                                                  │ │
│ │                       │   'apscheduler': {                               │ │
│ │                       │   │   <Version('3.10.0')>: [                     │ │
│ │                       │   │   │   'APScheduler',                         │ │
│ │                       │   │   │   'apscheduler'                          │ │
│ │                       │   │   ]                                          │ │
│ │                       │   },                                             │ │
│ │                       │   'btrees': {                                    │ │
│ │                       │   │   <Version('5.0')>: ['BTrees', 'btrees']     │ │
│ │                       │   },                                             │ │
│ │                       │   'babel': {                                     │ │
│ │                       │   │   <Version('2.12.1')>: ['Babel', 'babel']    │ │
│ │                       │   },                                             │ │
│ │                       │   'blinkstick': {                                │ │
│ │                       │   │   <Version('1.2.0')>: [                      │ │
│ │                       │   │   │   'BlinkStick',                          │ │
│ │                       │   │   │   'blinkstick'                           │ │
│ │                       │   │   ]                                          │ │
│ │                       │   },                                             │ │
│ │                       │   'colanderclchemy': {                           │ │
│ │                       │   │   <Version('0.3.4')>: [                      │ │
│ │                       │   │   │   'ColanderAlchemy',                     │ │
│ │                       │   │   │   'colanderalchemy'                      │ │
│ │                       │   │   ]                                          │ │
│ │                       │   },                                             │ │
│ │                       │   'commonmark': {                                │ │
│ │                       │   │   <Version('0.9.1')>: [                      │ │
│ │                       │   │   │   'CommonMark',                          │ │
│ │                       │   │   │   'commonmark'                           │ │
│ │                       │   │   ]                                          │ │
│ │                       │   },                                             │ │
│ │                       │   'configargparse': {                            │ │
│ │                       │   │   <Version('1.5.3')>: [                      │ │
│ │                       │   │   │   'ConfigArgParse',                      │ │
│ │                       │   │   │   'configargparse'                       │ │
│ │                       │   │   ]                                          │ │
│ │                       │   },                                             │ │
│ │                       │   'easyprocess': {                               │ │
│ │                       │   │   <Version('1.1')>: [                        │ │
│ │                       │   │   │   'EasyProcess',                         │ │
│ │                       │   │   │   'easyprocess'                          │ │
│ │                       │   │   ]                                          │ │
│ │                       │   },                                             │ │
│ │                       │   'fabric': {                                    │ │
│ │                       │   │   <Version('3.0.0')>: ['Fabric', 'fabric']   │ │
│ │                       │   },                                             │ │
│ │                       │   'formencode': {                                │ │
│ │                       │   │   <Version('2.0.1')>: [                      │ │
│ │                       │   │   │   'FormEncode',                          │ │
│ │                       │   │   │   'formencode'                           │ │
│ │                       │   │   ]                                          │ │
│ │                       │   },                                             │ │
│ │                       │   ... +6075                                      │ │
│ │                       }                                                  │ │
│ │        nixpkgs_json = '/nix/store/zl6z11w4hkjl9fs7nb94zg9pnynm30d7-nixp… │ │
│ │            out_file = '/nix/store/9z6i301ivqkix1bhr2ig2z9q6ap2607i-mach… │ │
│ │            platform = 'x86_64'                                           │ │
│ │   provider_settings = <mach_nix.data.providers.ProviderSettings object   │ │
│ │                       at 0x7ffff7668070>                                 │ │
│ │      providers_json = '/nix/store/caayzcsbdczb30yghkanzp8f4gfrcwf5-prov… │ │
│ │              py_ver = <mach_nix.versions.PyVer object at 0x7ffff6f1e550> │ │
│ │          py_ver_str = '3.10.11'                                          │ │
│ │    pypi_deps_db_src = '/nix/store/x20lwqvg5xcz9k3ah1ha0fsj2np2488s-pypi… │ │
│ │ pypi_fetcher_commit = 'f83bd320cf92d2c3fcf891f16195189aab0db8fe'         │ │
│ │ pypi_fetcher_sha256 = 'sha256-y7YGrGcH/RuoEG4LNLghOeecnVYS1lNhhso9NFSA2… │ │
│ │                reqs = <generator object filter_reqs_by_eval_marker at    │ │
│ │                       0x7ffff5e9bd60>                                    │ │
│ │        requirements = 'pyzmq==25.1.0\n\n ## # bug fixes \n\n#            │ │
│ │                       #ruamel.yaml\n#        #ruamel.yaml.cli'+2477      │ │
│ │              system = 'linux'                                            │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/generators/overides_generator.py:36 in generate             │
│                                                                              │
│    33 │   │   super(OverridesGenerator, self).__init__(*args, **kwargs)      │
│    34 │                                                                      │
│    35 │   def generate(self, reqs) -> str:                                   │
│ ❱  36 │   │   pkgs = self.resolver.resolve(reqs)                             │
│    37 │   │   pkgs = dict(sorted(((p.name, p) for p in pkgs), key=lambda x:  │
│    38 │   │   return self._gen_python_env(pkgs)                              │
│    39                                                                        │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │ reqs = <generator object filter_reqs_by_eval_marker at 0x7ffff5e9bd60>   │ │
│ │ self = <mach_nix.generators.overides_generator.OverridesGenerator object │ │
│ │        at 0x7ffff561f640>                                                │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/resolver/resolvelib_resolver.py:64 in resolve               │
│                                                                              │
│   61 │                                                                       │
│   62 │   def resolve(self, reqs: Iterable[Requirement]) -> List[ResolvedPkg] │
│   63 │   │   reporter = resolvelib.BaseReporter()                            │
│ ❱ 64 │   │   result = resolvelib.Resolver(Provider(self.nixpkgs, self.deps_p │
│   65 │   │   nix_py_pkgs = []                                                │
│   66 │   │   for name in result.graph._forwards.keys():                      │
│   67 │   │   │   if name is None or name.startswith('-'):                    │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │ reporter = <resolvelib.reporters.BaseReporter object at 0x7ffff561f6d0>  │ │
│ │     reqs = <generator object filter_reqs_by_eval_marker at               │ │
│ │            0x7ffff5e9bd60>                                               │ │
│ │     self = <mach_nix.resolver.resolvelib_resolver.ResolvelibResolver     │ │
│ │            object at 0x7ffff623ffa0>                                     │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/3q4s5cpldkavkgjsy3y681n176xcwgqm-python3-3.9.17-env/lib/python3.9 │
│ /site-packages/resolvelib/resolvers.py:481 in resolve                        │
│                                                                              │
│   478 │   │   │   `max_rounds` argument.                                     │
│   479 │   │   """                                                            │
│   480 │   │   resolution = Resolution(self.provider, self.reporter)          │
│ ❱ 481 │   │   state = resolution.resolve(requirements, max_rounds=max_rounds │
│   482 │   │   return _build_result(state)                                    │
│   483                                                                        │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │   max_rounds = 1000                                                      │ │
│ │ requirements = <generator object filter_reqs_by_eval_marker at           │ │
│ │                0x7ffff5e9bd60>                                           │ │
│ │   resolution = <resolvelib.resolvers.Resolution object at                │ │
│ │                0x7ffff5e591f0>                                           │ │
│ │         self = <resolvelib.resolvers.Resolver object at 0x7ffff5e59040>  │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/3q4s5cpldkavkgjsy3y681n176xcwgqm-python3-3.9.17-env/lib/python3.9 │
│ /site-packages/resolvelib/resolvers.py:348 in resolve                        │
│                                                                              │
│   345 │   │   ]                                                              │
│   346 │   │   for r in requirements:                                         │
│   347 │   │   │   try:                                                       │
│ ❱ 348 │   │   │   │   self._add_to_criteria(self.state.criteria, r, parent=N │
│   349 │   │   │   except RequirementsConflicted as e:                        │
│   350 │   │   │   │   raise ResolutionImpossible(e.criterion.information)    │
│   351                                                                        │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │   max_rounds = 1000                                                      │ │
│ │            r = pyzmq (<SpecifierSet('==25.1.0')>,)                       │ │
│ │ requirements = <generator object filter_reqs_by_eval_marker at           │ │
│ │                0x7ffff5e9bd60>                                           │ │
│ │         self = <resolvelib.resolvers.Resolution object at                │ │
│ │                0x7ffff5e591f0>                                           │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/3q4s5cpldkavkgjsy3y681n176xcwgqm-python3-3.9.17-env/lib/python3.9 │
│ /site-packages/resolvelib/resolvers.py:147 in _add_to_criteria               │
│                                                                              │
│   144 │   │   else:                                                          │
│   145 │   │   │   incompatibilities = []                                     │
│   146 │   │                                                                  │
│ ❱ 147 │   │   matches = self._p.find_matches(                                │
│   148 │   │   │   identifier=identifier,                                     │
│   149 │   │   │   requirements=IteratorMapping(                              │
│   150 │   │   │   │   criteria,                                              │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │          criteria = {}                                                   │ │
│ │         criterion = None                                                 │ │
│ │        identifier = 'pyzmq'                                              │ │
│ │ incompatibilities = []                                                   │ │
│ │            parent = None                                                 │ │
│ │       requirement = pyzmq (<SpecifierSet('==25.1.0')>,)                  │ │
│ │              self = <resolvelib.resolvers.Resolution object at           │ │
│ │                     0x7ffff5e591f0>                                      │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/resolver/resolvelib_resolver.py:39 in find_matches          │
│                                                                              │
│   36 │   def find_matches(self, identifier, requirements, incompatibilities) │
│   37 │   │   return [                                                        │
│   38 │   │   │   candidate                                                   │
│ ❱ 39 │   │   │   for candidate in self.provider.find_matches(list(requiremen │
│   40 │   │   │   if candidate not in incompatibilities.get(identifier, ())   │
│   41 │   │   ]                                                               │
│   42                                                                         │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │        identifier = 'pyzmq'                                              │ │
│ │ incompatibilities = IteratorMapping({},                                  │ │
│ │                     operator.attrgetter('incompatibilities'), {'pyzmq':  │ │
│ │                     []})                                                 │ │
│ │      requirements = IteratorMapping({},                                  │ │
│ │                     operator.methodcaller('iter_requirement'), {'pyzmq': │ │
│ │                     [pyzmq (<SpecifierSet('==25.1.0')>,)]})              │ │
│ │              self = <mach_nix.resolver.resolvelib_resolver.Provider      │ │
│ │                     object at 0x7ffff561faf0>                            │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/cache.py:12 in cache_wrapper                                │
│                                                                              │
│    9 │   │   │   args_save = keyf(args)                                      │
│   10 │   │   │   key = (func, args_save, tuple(kwargs.items()))              │
│   11 │   │   │   if key not in cache:                                        │
│ ❱ 12 │   │   │   │   result = func(*args, **kwargs)                          │
│   13 │   │   │   │   if isgenerator(result):                                 │
│   14 │   │   │   │   │   result = tuple(result)                              │
│   15 │   │   │   │   cache[key] = result                                     │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │      args = (                                                            │ │
│ │             │   <mach_nix.data.providers.CombinedDependencyProvider      │ │
│ │             object at 0x7ffff6241d90>,                                   │ │
│ │             │   [pyzmq (<SpecifierSet('==25.1.0')>,)]                    │ │
│ │             )                                                            │ │
│ │ args_save = (                                                            │ │
│ │             │   <mach_nix.data.providers.CombinedDependencyProvider      │ │
│ │             object at 0x7ffff6241d90>,                                   │ │
│ │             │   (pyzmq (<SpecifierSet('==25.1.0')>,),)                   │ │
│ │             )                                                            │ │
│ │      func = <function DependencyProviderBase.find_matches at             │ │
│ │             0x7ffff62dc820>                                              │ │
│ │       key = (                                                            │ │
│ │             │   <function DependencyProviderBase.find_matches at         │ │
│ │             0x7ffff62dc820>,                                             │ │
│ │             │   (                                                        │ │
│ │             │   │   <mach_nix.data.providers.CombinedDependencyProvider  │ │
│ │             object at 0x7ffff6241d90>,                                   │ │
│ │             │   │   (pyzmq (<SpecifierSet('==25.1.0')>,),)               │ │
│ │             │   ),                                                       │ │
│ │             │   ()                                                       │ │
│ │             )                                                            │ │
│ │      keyf = <function DependencyProviderBase.<lambda> at 0x7ffff62dc700> │ │
│ │    kwargs = {}                                                           │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/data/providers.py:106 in find_matches                       │
│                                                                              │
│   103 │   def find_matches(self, reqs) -> List[Candidate]:                   │
│   104 │   │   extras = tuple({extra for req in reqs for extra in req.extras} │
│   105 │   │   builds = tuple({req.build for req in reqs if req.build is not  │
│ ❱ 106 │   │   all = list(self.all_candidates_sorted(reqs[0].key, extras, bui │
│   107 │   │   matching_versions = [c.ver for c in all]                       │
│   108 │   │   for req in reqs:                                               │
│   109 │   │   │   matching_versions = filter_versions(matching_versions, req │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │ builds = ()                                                              │ │
│ │ extras = ()                                                              │ │
│ │   reqs = [pyzmq (<SpecifierSet('==25.1.0')>,)]                           │ │
│ │   self = <mach_nix.data.providers.CombinedDependencyProvider object at   │ │
│ │          0x7ffff6241d90>                                                 │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/cache.py:12 in cache_wrapper                                │
│                                                                              │
│    9 │   │   │   args_save = keyf(args)                                      │
│   10 │   │   │   key = (func, args_save, tuple(kwargs.items()))              │
│   11 │   │   │   if key not in cache:                                        │
│ ❱ 12 │   │   │   │   result = func(*args, **kwargs)                          │
│   13 │   │   │   │   if isgenerator(result):                                 │
│   14 │   │   │   │   │   result = tuple(result)                              │
│   15 │   │   │   │   cache[key] = result                                     │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │      args = (                                                            │ │
│ │             │   <mach_nix.data.providers.CombinedDependencyProvider      │ │
│ │             object at 0x7ffff6241d90>,                                   │ │
│ │             │   'pyzmq',                                                 │ │
│ │             │   (),                                                      │ │
│ │             │   ()                                                       │ │
│ │             )                                                            │ │
│ │ args_save = (                                                            │ │
│ │             │   <mach_nix.data.providers.CombinedDependencyProvider      │ │
│ │             object at 0x7ffff6241d90>,                                   │ │
│ │             │   'pyzmq',                                                 │ │
│ │             │   (),                                                      │ │
│ │             │   ()                                                       │ │
│ │             )                                                            │ │
│ │      func = <function CombinedDependencyProvider.all_candidates_sorted   │ │
│ │             at 0x7ffff628e0d0>                                           │ │
│ │       key = (                                                            │ │
│ │             │   <function                                                │ │
│ │             CombinedDependencyProvider.all_candidates_sorted at          │ │
│ │             0x7ffff628e0d0>,                                             │ │
│ │             │   (                                                        │ │
│ │             │   │   <mach_nix.data.providers.CombinedDependencyProvider  │ │
│ │             object at 0x7ffff6241d90>,                                   │ │
│ │             │   │   'pyzmq',                                             │ │
│ │             │   │   (),                                                  │ │
│ │             │   │   ()                                                   │ │
│ │             │   ),                                                       │ │
│ │             │   ()                                                       │ │
│ │             )                                                            │ │
│ │      keyf = <function cached.<locals>.<lambda> at 0x7ffff628e040>        │ │
│ │    kwargs = {}                                                           │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/data/providers.py:217 in all_candidates_sorted              │
│                                                                              │
│   214 │   │   candidates = []                                                │
│   215 │   │   # order by reversed preference expected                        │
│   216 │   │   for provider in tuple(self.allowed_providers_for_pkg(pkg_name) │
│ ❱ 217 │   │   │   candidates += list(provider.all_candidates_sorted(pkg_name │
│   218 │   │   if not candidates:                                             │
│   219 │   │   │   self.print_error_no_versions_available(pkg_name, extras, b │
│   220 │   │   return tuple(candidates)                                       │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │     builds = ()                                                          │ │
│ │ candidates = [                                                           │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('25.1.0')>,                            │ │
│ │              │   │   raw_version='25.1.0',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-25.1.0-cp310-cp310-manylinux_2_17_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='25.1.0',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('25.0.2')>,                            │ │
│ │              │   │   raw_version='25.0.2',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-25.0.2-cp310-cp310-manylinux_2_17_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='25.0.2',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-25.0.2-cp310-cp310-manylinux_2_17_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('25.0.1')>,                            │ │
│ │              │   │   raw_version='25.0.1',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-25.0.1-cp310-cp310-manylinux_2_17_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='25.0.1',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-25.0.1-cp310-cp310-manylinux_2_17_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('25.0.0')>,                            │ │
│ │              │   │   raw_version='25.0.0',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-25.0.0-cp310-cp310-manylinux_2_17_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='25.0.0',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-25.0.0-cp310-cp310-manylinux_2_17_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('25.0.0b1')>,                          │ │
│ │              │   │   raw_version='25.0.0b1',                             │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-25.0.0b1-cp310-cp310-manylinux_2_17_x86… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='25.0.0b1',                             │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-25.0.0b1-cp310-cp310-manylinux_2_17_x86_64.manyl… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'py ; implementation_name == "pypy"',   │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('24.0.1')>,                            │ │
│ │              │   │   raw_version='24.0.1',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='24.0.1',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'py ; implementation_name == "pypy"',   │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('24.0.0')>,                            │ │
│ │              │   │   raw_version='24.0.0',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-24.0.0-cp310-cp310-manylinux_2_17_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='24.0.0',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-24.0.0-cp310-cp310-manylinux_2_17_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'py ; implementation_name == "pypy"',   │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('23.2.1')>,                            │ │
│ │              │   │   raw_version='23.2.1',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-23.2.1-cp310-cp310-manylinux_2_17_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='23.2.1',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-23.2.1-cp310-cp310-manylinux_2_17_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'py ; implementation_name == "pypy"',   │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('23.2.0')>,                            │ │
│ │              │   │   raw_version='23.2.0',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-23.2.0-cp310-cp310-manylinux_2_12_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='23.2.0',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-23.2.0-cp310-cp310-manylinux_2_12_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'py ; implementation_name == "pypy"',   │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   Candidate(                                              │ │
│ │              │   │   name='pyzmq',                                       │ │
│ │              │   │   ver=<Version('23.2.0')>,                            │ │
│ │              │   │   raw_version='23.2.0',                               │ │
│ │              │   │   selected_extras=(),                                 │ │
│ │              │   │   provider_info=ProviderInfo(                         │ │
│ │              │   │   │                                                   │ │
│ │              provider=<mach_nix.data.providers.WheelDependencyProvider   │ │
│ │              object at 0x7ffff561f4c0>,                                  │ │
│ │              │   │   │                                                   │ │
│ │              wheel_fname='pyzmq-23.2.0-cp310-cp310-manylinux_2_17_x86_6… │ │
│ │              │   │   │   url=None,                                       │ │
│ │              │   │   │   hash=None,                                      │ │
│ │              │   │   │   data=WheelRelease(                              │ │
│ │              │   │   │   │   fn_pyver='cp310',                           │ │
│ │              │   │   │   │   name='pyzmq',                               │ │
│ │              │   │   │   │   ver='23.2.0',                               │ │
│ │              │   │   │   │                                               │ │
│ │              fn='pyzmq-23.2.0-cp310-cp310-manylinux_2_17_x86_64.manylin… │ │
│ │              │   │   │   │   requires_dist=[                             │ │
│ │              │   │   │   │   │   'py ; implementation_name == "pypy"',   │ │
│ │              │   │   │   │   │   'cffi ; implementation_name == "pypy"'  │ │
│ │              │   │   │   │   ],                                          │ │
│ │              │   │   │   │   provided_extras=None,                       │ │
│ │              │   │   │   │   requires_python='>=3.6'                     │ │
│ │              │   │   │   )                                               │ │
│ │              │   │   ),                                                  │ │
│ │              │   │   build=None                                          │ │
│ │              │   ),                                                      │ │
│ │              │   ... +8                                                  │ │
│ │              ]                                                           │ │
│ │     extras = ()                                                          │ │
│ │   pkg_name = 'pyzmq'                                                     │ │
│ │   provider = <mach_nix.data.providers.SdistDependencyProvider object at  │ │
│ │              0x7ffff561f520>                                             │ │
│ │       self = <mach_nix.data.providers.CombinedDependencyProvider object  │ │
│ │              at 0x7ffff6241d90>                                          │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/data/providers.py:115 in all_candidates_sorted              │
│                                                                              │
│   112 │   │   return matching_candidates                                     │
│   113 │                                                                      │
│   114 │   def all_candidates_sorted(self, name, extras, builds) -> Iterable[ │
│ ❱ 115 │   │   candidates = list(self.all_candidates(name, extras, builds))   │
│   116 │   │   candidates.sort(key=lambda c: c.ver, reverse=True)             │
│   117 │   │   return candidates                                              │
│   118                                                                        │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │ builds = ()                                                              │ │
│ │ extras = ()                                                              │ │
│ │   name = 'pyzmq'                                                         │ │
│ │   self = <mach_nix.data.providers.SdistDependencyProvider object at      │ │
│ │          0x7ffff561f520>                                                 │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/data/providers.py:491 in all_candidates                     │
│                                                                              │
│   488 │   │   if builds:                                                     │
│   489 │   │   │   return []                                                  │
│   490 │   │   result = []                                                    │
│ ❱ 491 │   │   for ver, pkg in self._get_candidates(pkg_name).items():        │
│   492 │   │   │   try:                                                       │
│   493 │   │   │   │   result.append(                                         │
│   494 │   │   │   │   Candidate(                                             │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │   builds = ()                                                            │ │
│ │   extras = ()                                                            │ │
│ │ pkg_name = 'pyzmq'                                                       │ │
│ │   result = []                                                            │ │
│ │     self = <mach_nix.data.providers.SdistDependencyProvider object at    │ │
│ │            0x7ffff561f520>                                               │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/cache.py:12 in cache_wrapper                                │
│                                                                              │
│    9 │   │   │   args_save = keyf(args)                                      │
│   10 │   │   │   key = (func, args_save, tuple(kwargs.items()))              │
│   11 │   │   │   if key not in cache:                                        │
│ ❱ 12 │   │   │   │   result = func(*args, **kwargs)                          │
│   13 │   │   │   │   if isgenerator(result):                                 │
│   14 │   │   │   │   │   result = tuple(result)                              │
│   15 │   │   │   │   cache[key] = result                                     │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │      args = (                                                            │ │
│ │             │   <mach_nix.data.providers.SdistDependencyProvider object  │ │
│ │             at 0x7ffff561f520>,                                          │ │
│ │             │   'pyzmq'                                                  │ │
│ │             )                                                            │ │
│ │ args_save = (                                                            │ │
│ │             │   <mach_nix.data.providers.SdistDependencyProvider object  │ │
│ │             at 0x7ffff561f520>,                                          │ │
│ │             │   'pyzmq'                                                  │ │
│ │             )                                                            │ │
│ │      func = <function SdistDependencyProvider._get_candidates at         │ │
│ │             0x7ffff628eee0>                                              │ │
│ │       key = (                                                            │ │
│ │             │   <function SdistDependencyProvider._get_candidates at     │ │
│ │             0x7ffff628eee0>,                                             │ │
│ │             │   (                                                        │ │
│ │             │   │   <mach_nix.data.providers.SdistDependencyProvider     │ │
│ │             object at 0x7ffff561f520>,                                   │ │
│ │             │   │   'pyzmq'                                              │ │
│ │             │   ),                                                       │ │
│ │             │   ()                                                       │ │
│ │             )                                                            │ │
│ │      keyf = <function cached.<locals>.<lambda> at 0x7ffff628ee50>        │ │
│ │    kwargs = {}                                                           │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/data/providers.py:444 in _get_candidates                    │
│                                                                              │
│   441 │   │   │   │   │   pkg_data = pyvers[pkg_data]                        │
│   442 │   │   │   │   if 'python_requires' in pkg_data:                      │
│   443 │   │   │   │   │   specs = ",".join(pkg_data['python_requires'])      │
│ ❱ 444 │   │   │   │   │   parsed_py_requires = list(parse_reqs(f"python{spec │
│   445 │   │   │   │   │   if not filter_versions([self.py_ver.version], pars │
│   446 │   │   │   │   │   │   continue                                       │
│   447 │   │   │   │   candidates[ver] = pkg_data                             │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │ candidates = {                                                           │ │
│ │              │   '13.0.0': {},                                           │ │
│ │              │   '13.0.1': {},                                           │ │
│ │              │   '13.0.2': {},                                           │ │
│ │              │   '13.1.0': {},                                           │ │
│ │              │   '14.0.0': {},                                           │ │
│ │              │   '14.0.1': {},                                           │ │
│ │              │   '14.1.0': {},                                           │ │
│ │              │   '14.1.1': {},                                           │ │
│ │              │   '14.2.0': {},                                           │ │
│ │              │   '14.3.0': {},                                           │ │
│ │              │   ... +16                                                 │ │
│ │              }                                                           │ │
│ │        key = 'pyzmq'                                                     │ │
│ │       name = 'pyzmq'                                                     │ │
│ │   pkg_data = {'python_requires': ['>=2.7,!=3.0*,!=3.1*,!=3.2*']}         │ │
│ │     pyvers = {                                                           │ │
│ │              │   '27': {                                                 │ │
│ │              │   │   'python_requires': ['>=2.7,!=3.0*,!=3.1*,!=3.2*']   │ │
│ │              │   },                                                      │ │
│ │              │   '36': '27',                                             │ │
│ │              │   '37': '27',                                             │ │
│ │              │   '38': '27',                                             │ │
│ │              │   '39': '27',                                             │ │
│ │              │   '310': '27'                                             │ │
│ │              }                                                           │ │
│ │       self = <mach_nix.data.providers.SdistDependencyProvider object at  │ │
│ │              0x7ffff561f520>                                             │ │
│ │      specs = '>=2.7,!=3.0*,!=3.1*,!=3.2*'                                │ │
│ │        ver = '17.0.0'                                                    │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/cache.py:14 in cache_wrapper                                │
│                                                                              │
│   11 │   │   │   if key not in cache:                                        │
│   12 │   │   │   │   result = func(*args, **kwargs)                          │
│   13 │   │   │   │   if isgenerator(result):                                 │
│ ❱ 14 │   │   │   │   │   result = tuple(result)                              │
│   15 │   │   │   │   cache[key] = result                                     │
│   16 │   │   │   return cache[key]                                           │
│   17 │   │   return cache_wrapper                                            │
│                                                                              │
│ ╭────────────────────────── locals ───────────────────────────╮              │
│ │      args = ('python>=2.7,!=3.0*,!=3.1*,!=3.2*',)           │              │
│ │ args_save = 'python>=2.7,!=3.0*,!=3.1*,!=3.2*'              │              │
│ │      func = <function parse_reqs at 0x7ffff628b1f0>         │              │
│ │       key = (                                               │              │
│ │             │   <function parse_reqs at 0x7ffff628b1f0>,    │              │
│ │             │   'python>=2.7,!=3.0*,!=3.1*,!=3.2*',         │              │
│ │             │   ()                                          │              │
│ │             )                                               │              │
│ │      keyf = <function <lambda> at 0x7ffff628b0d0>           │              │
│ │    kwargs = {}                                              │              │
│ │    result = <generator object parse_reqs at 0x7ffff48b5890> │              │
│ ╰─────────────────────────────────────────────────────────────╯              │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/requirements.py:77 in parse_reqs                            │
│                                                                              │
│    74 │   │   │   │   line += next(lines)                                    │
│    75 │   │   │   except StopIteration:                                      │
│    76 │   │   │   │   return                                                 │
│ ❱  77 │   │   yield Requirement(*parse_reqs_line(line))                      │
│    78                                                                        │
│    79                                                                        │
│    80 extra_name = r"([a-z]|[A-Z]|-|_|\.|\d)+"                               │
│                                                                              │
│ ╭────────────────── locals ──────────────────╮                               │
│ │  line = 'python>=2.7,!=3.0*,!=3.1*,!=3.2*' │                               │
│ │ lines = <filter object at 0x7ffff4b39c70>  │                               │
│ │  strs = 'python>=2.7,!=3.0*,!=3.1*,!=3.2*' │                               │
│ ╰────────────────────────────────────────────╯                               │
│                                                                              │
│ /nix/store/qsvwkwvkyldy9vki24kqaimmmsyr1gi8-i80vhzmxnlvmy9n1iak7avfzccqjpqpx │
│ -source/mach_nix/requirements.py:181 in parse_reqs_line                      │
│                                                                              │
│   178 │   │   │   │   elif re.fullmatch(r"=\d(\d|\.|\*|[a-z])*", part):      │
│   179 │   │   │   │   │   part = '=' + part                                  │
│   180 │   │   │   │   parsed_parts.append(part)                              │
│ ❱ 181 │   │   │   all_specs.append(SpecifierSet(",".join(parsed_parts)))     │
│   182 │   │                                                                  │
│   183 │   │   all_specs = tuple(all_specs)                                   │
│   184                                                                        │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │     all_specs = []                                                       │ │
│ │ all_specs_raw = ['>=2.7,!=3.0*,!=3.1*,!=3.2*']                           │ │
│ │         build = None                                                     │ │
│ │        extras = ()                                                       │ │
│ │             i = 0                                                        │ │
│ │          line = 'python>=2.7,!=3.0*,!=3.1*,!=3.2*'                       │ │
│ │         match = <re.Match object; span=(0, 32),                          │ │
│ │                 match='python>=2.7,!=3.0*,!=3.1*,!=3.2*'>                │ │
│ │          name = 'python'                                                 │ │
│ │  parsed_parts = ['>=2.7', '!=3.0*', '!=3.1*', '!=3.2*']                  │ │
│ │          part = '!=3.2*'                                                 │ │
│ │         parts = ['>=2.7', '!=3.0*', '!=3.1*', '!=3.2*']                  │ │
│ │         specs = '>=2.7,!=3.0*,!=3.1*,!=3.2*'                             │ │
│ │         split = ['python>=2.7,!=3.0*,!=3.1*,!=3.2*']                     │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/3q4s5cpldkavkgjsy3y681n176xcwgqm-python3-3.9.17-env/lib/python3.9 │
│ /site-packages/packaging/specifiers.py:711 in __init__                       │
│                                                                              │
│    708 │   │   # Specifier.                                                  │
│    709 │   │   parsed: Set[Specifier] = set()                                │
│    710 │   │   for specifier in split_specifiers:                            │
│ ❱  711 │   │   │   parsed.add(Specifier(specifier))                          │
│    712 │   │                                                                 │
│    713 │   │   # Turn our parsed specifiers into a frozen set and save them  │
│    714 │   │   self._specs = frozenset(parsed)                               │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │           parsed = {<Specifier('>=2.7')>}                                │ │
│ │      prereleases = None                                                  │ │
│ │             self = <repr-error "'SpecifierSet' object has no attribute   │ │
│ │                    '_prereleases'">                                      │ │
│ │        specifier = '!=3.0*'                                              │ │
│ │       specifiers = '>=2.7,!=3.0*,!=3.1*,!=3.2*'                          │ │
│ │ split_specifiers = ['>=2.7', '!=3.0*', '!=3.1*', '!=3.2*']               │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│                                                                              │
│ /nix/store/3q4s5cpldkavkgjsy3y681n176xcwgqm-python3-3.9.17-env/lib/python3.9 │
│ /site-packages/packaging/specifiers.py:245 in __init__                       │
│                                                                              │
│    242 │   │   """                                                           │
│    243 │   │   match = self._regex.search(spec)                              │
│    244 │   │   if not match:                                                 │
│ ❱  245 │   │   │   raise InvalidSpecifier(f"Invalid specifier: '{spec}'")    │
│    246 │   │                                                                 │
│    247 │   │   self._spec: Tuple[str, str] = (                               │
│    248 │   │   │   match.group("operator").strip(),                          │
│                                                                              │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │       match = None                                                       │ │
│ │ prereleases = None                                                       │ │
│ │        self = <repr-error "'Specifier' object has no attribute           │ │
│ │               '_prereleases'">                                           │ │
│ │        spec = '!=3.0*'                                                   │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────╯
InvalidSpecifier: Invalid specifier: '!=3.0*'
error:
       … while evaluating the attribute 'buildInputs' of the derivation 'shell'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/stdenv/generic/make-derivation.nix:303:7:

          302|     // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          303|       name =
             |       ^
          304|         let

       … while evaluating the attribute 'passAsFile' of the derivation 'buildEnv-aefin'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/stdenv/generic/make-derivation.nix:303:7:

          302|     // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          303|       name =
             |       ^
          304|         let

       … while evaluating the attribute 'passAsFile'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/build-support/buildenv/default.nix:77:5:

           76|     # XXX: The size is somewhat arbitrary
           77|     passAsFile = if builtins.stringLength pkgs >= 128*1024 then [ "pkgs" ] else [ ];
             |     ^
           78|   }

       … while evaluating the attribute 'passAsFile' of the derivation 'python3-3.10.11-env'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/stdenv/generic/make-derivation.nix:303:7:

          302|     // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          303|       name =
             |       ^
          304|         let

       … while evaluating the attribute 'passAsFile'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/build-support/buildenv/default.nix:77:5:

           76|     # XXX: The size is somewhat arbitrary
           77|     passAsFile = if builtins.stringLength pkgs >= 128*1024 then [ "pkgs" ] else [ ];
             |     ^
           78|   }

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/development/interpreters/python/default.nix:46:10:

           45|         in lib.mapAttrs func items;
           46|       in ensurePythonModules (callPackage
             |          ^
           47|         # Function that when called

       … while calling 'ensurePythonModules'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/development/interpreters/python/default.nix:34:31:

           33|       pythonPackages = let
           34|         ensurePythonModules = items: let
             |                               ^
           35|           exceptions = [

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/development/interpreters/python/default.nix:46:31:

           45|         in lib.mapAttrs func items;
           46|       in ensurePythonModules (callPackage
             |                               ^
           47|         # Function that when called

       … while calling 'callPackageWith'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/customisation.nix:128:35:

          127|   */
          128|   callPackageWith = autoArgs: fn: args:
             |                                   ^
          129|     let

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/customisation.nix:179:34:

          178|
          179|     in if missingArgs == [] then makeOverridable f allArgs else abort error;
             |                                  ^
          180|

       … while calling 'makeOverridable'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/customisation.nix:78:24:

           77|   */
           78|   makeOverridable = f: origArgs:
             |                        ^
           79|     let

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/customisation.nix:80:16:

           79|     let
           80|       result = f origArgs;
             |                ^
           81|

       … while calling anonymous lambda

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/development/interpreters/python/default.nix:51:10:

           50|         # - applies overrides from `packageOverrides` and `pythonPackagesOverlays`.
           51|         ({ pkgs, stdenv, python, overrides }: let
             |          ^
           52|           pythonPackagesFun = import ./python-packages-base.nix {

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/pkgs/development/interpreters/python/default.nix:77:12:

           76|           aliases = self: super: lib.optionalAttrs config.allowAliases (import ../../../top-level/python-aliases.nix lib self super);
           77|         in makeScopeWithSplicing
             |            ^
           78|           otherSplices

       … while calling 'makeScopeWithSplicing'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/customisation.nix:288:80:

          287|      hopefully it helps a little bit. */
          288|   makeScopeWithSplicing = splicePackages: newScope: otherSplices: keep: extra: f:
             |                                                                                ^
          289|     let

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/customisation.nix:299:14:

          298|       spliced = extra spliced0 // spliced0 // keep self;
          299|       self = f self // {
             |              ^
          300|         newScope = scope: newScope (spliced // scope);

       … while calling 'extends'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:69:24:

           68|   #
           69|   extends = f: rattrs: self: let super = rattrs self; in super // f self super;
             |                        ^
           70|

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:69:67:

           68|   #
           69|   extends = f: rattrs: self: let super = rattrs self; in super // f self super;
             |                                                                   ^
           70|

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:78:22:

           77|           prev' = prev // fApplied;
           78|       in fApplied // g final prev';
             |                      ^
           79|

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:78:22:

           77|           prev' = prev // fApplied;
           78|       in fApplied // g final prev';
             |                      ^
           79|

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating call site

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:76:22:

           75|     f: g: final: prev:
           76|       let fApplied = f final prev;
             |                      ^
           77|           prev' = prev // fApplied;

       … while calling 'composeExtensions'

       at /nix/store/51p9r89zh93piqkmr18h4m7mkf10a1sg-nixos-23.05/nixos/lib/fixed-points.nix:75:18:

           74|   composeExtensions =
           75|     f: g: final: prev:
             |                  ^
           76|       let fApplied = f final prev;

       … while evaluating the attribute 'overrides'

       at /nix/store/i80vhzmxnlvmy9n1iak7avfzccqjpqpx-source/mach_nix/nix/lib.nix:187:7:

          186|     in {
          187|       overrides = result.overrides manylinux autoPatchelfHook;
             |       ^
          188|       select_pkgs = result.select_pkgs;

       … while realising the context of path '/nix/store/9z6i301ivqkix1bhr2ig2z9q6ap2607i-mach_nix_file/share/mach_nix_file.nix'

       at /nix/store/i80vhzmxnlvmy9n1iak7avfzccqjpqpx-source/mach_nix/nix/lib.nix:180:16:

          179|       file = "${compileExpression args}/share/mach_nix_file.nix";
          180|       result = import file { inherit (args) pkgs python; };
             |                ^
          181|       manylinux =

       error: builder for '/nix/store/2y7xih18swwk18vdma903b4h8q989px4-mach_nix_file.drv' failed with exit code 1;
       last 10 log lines:
       > │                                                                              │
       > │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
       > │ │       match = None                                                       │ │
       > │ │ prereleases = None                                                       │ │
       > │ │        self = <repr-error "'Specifier' object has no attribute           │ │
       > │ │               '_prereleases'">                                           │ │
       > │ │        spec = '!=3.0*'                                                   │ │
       > │ ╰──────────────────────────────────────────────────────────────────────────╯ │
       > ╰──────────────────────────────────────────────────────────────────────────────╯
       > InvalidSpecifier: Invalid specifier: '!=3.0*'
       For full logs, run 'nix log /nix/store/2y7xih18swwk18vdma903b4h8q989px4-mach_nix_file.drv'.

@TyberiusPrime
Copy link
Collaborator Author

Yeah, there a bunch of traps lying in the shift to PEP 440 enforcement that packing has handed us.

If I'm reading the spec right, that should actually be '!=3.0.*' these days.
At least that one is easy to fix...

More troubling is stuff like "openssl >=1.1.1l,<1.1.2a", (from conda), for which I currently don't have a good answer.

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.

None yet

3 participants