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

Capture failed tests as actual step/job failures #448

Merged

Conversation

riccardoporreca
Copy link
Contributor

@riccardoporreca riccardoporreca requested a review from a team as a code owner July 5, 2023 17:14
@netlify
Copy link

netlify bot commented Jul 5, 2023

Deploy Preview for conda-lock ready!

Name Link
🔨 Latest commit fa8434d
🔍 Latest deploy log https://app.netlify.com/sites/conda-lock/deploys/64a9f27ef234d500084b169d
😎 Deploy Preview https://deploy-preview-448--conda-lock.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@riccardoporreca
Copy link
Contributor Author

See how the jobs are correctly failing given the failing tests, as opposed to e.g. https://github.com/conda/conda-lock/actions/runs/5466015810/jobs/9950322426#step:6:1001

As for the failing tests, they seem to be all related to pydantic, and started to appear following the 2.0 release: https://docs.pydantic.dev/2.0/migration/

Most errors are about virtual package specs:

validation error for VirtualPackageSpec
E       subdirs.linux-64.packages.__glibc
E         Input should be a valid string [type=string_type, input_value=2.17, input_type=float]

and could be addressed by quoting versions, e.g. __glibc: "2.11" instead of __glibc: 2.11.

The other relevant failure is

 >           raise JSONDecodeError("Expecting value", s, err.value) from None
E           json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

perhaps related to

Due to performance overhead and implementation complexity, we have now removed support for specifying json_encoders in the model config.

Happy to include any recommended fix in this PR

@riccardoporreca
Copy link
Contributor Author

See also pydantic/pydantic#6375

Perhaps a tactical solution for now is to stick to pydantic >=1.8.1,<2.0

@maresb
Copy link
Contributor

maresb commented Jul 8, 2023

I'd rather try and support Pydantic v2.

I wonder how easily we can get rid of frozensets. I might be missing something, but when I occasionally use sets for internal manipulations, I prefer casting the result to a list with sorted before returning, especially for determinism since sets get their orders scrambled, e.g. #450. If immutability is demanded by the type checker, then I cast the sorted list to a tuple.

I'm not sure if this paradigm would break down at some point when applied to conda-lock here, but that'd be my idea for how to solve it. What do you think?

@riccardoporreca
Copy link
Contributor Author

@maresb, I looked a bit closer into the JSONDecodeError, which I was maybe a bit too quick to attribute to Pydantic V2.

I could reproduce the error locally and here is what I see as proc.stdout in dryrun_install: DryRunInstall = json.loads(proc.stdout), where the first line No package record found! is clearly no valid JSON!
Not sure however where this could come from

No package record found!
{
  "actions": {
    "FETCH": [
      {
        "build": "py39hb9d737c_1",
        "build_number": 1,
        "channel": "https://conda.anaconda.org/conda-forge/linux-64",
        "constrains": [],
        "depends": [
          "python >=3.9,<3.10.0a0",
          "python_abi 3.9.* *_cp39",
          "libgcc-ng >=10.3.0",
          "typing-extensions >=3.7.4.3"
        ],
        "fn": "pydantic-1.9.0-py39hb9d737c_1.tar.bz2",
        "license": "MIT",
        "md5": "5e0
[continues]

@riccardoporreca
Copy link
Contributor Author

This is in fact even visible in the workflow log, e.g. https://github.com/conda/conda-lock/actions/runs/5495255879/jobs/10014527957?pr=448#step:6:400

s = 'No package record found!\n{\n  "actions": {\n    "FETCH": [\n      {\n        "build": "pyha770c72_0",\n        "buil...emp/tmpztcgmr04"\n  },\n  "dry_run": true,\n  "prefix": "/home/runner/work/_temp/tmpztcgmr04",\n  "success": true\n}\n'

@maresb
Copy link
Contributor

maresb commented Jul 8, 2023

Thanks @riccardoporreca, I actually simultaneously came to the same conclusion. I'm not sure what to make of it, but I opened mamba-org/mamba#2662 to hopefully eventually gain some clarity.

I was unable to reproduce locally, so it's really great that you can! Any chance that you could set a breakpoint at conda_lock.conda_solver line 495 and see if you can figure out what's going on? In the debug console, I recommend running shlex.join(proc.args) to get the exact command being executed.

@maresb
Copy link
Contributor

maresb commented Jul 8, 2023

It'd be nice to get to the bottom of this warning, but in case we can't maybe we should just ignore it as per my commit. (Not an ideal solution, so I hope we can do better.)

But now I'm actually a bit nervous about Pydantic. It seems like v2 has some big changes, and we don't have a major version pin.

@riccardoporreca
Copy link
Contributor Author

I was unable to reproduce locally, so it's really great that you can! Any chance that you could set a breakpoint at conda_lock.conda_solver line 495 and see if you can figure out what's going on?

I was reproducing the steps of the test workflow for creating the environment and installing from requirements.txt. Ultimatelty, there is something in the logic leading to the print statement in https://github.com/mamba-org/mamba/blob/c46647a8807b5d4812b25c199754f4bbe904b679/mamba/mamba/utils.py#L384-L398, so I fully agree to raise the flag to mamba

But now I'm actually a bit nervous about Pydantic. It seems like v2 has some big changes, and we don't have a major version pin.

I can fully understand that!

@riccardoporreca
Copy link
Contributor Author

Debug info:

shlex.join(proc.args)
"/home/riccardo/miniconda3/envs/test-env/bin/mamba update --override-channels --channel conda-forge --channel file:///tmp/tmpjqbwoa0p -p /tmp/tmpagnu7aom --json --dry-run 'pydantic >=1.9.0,<1.9.1'"

To help reproducing the issue, here is the outcome of conda list -p /tmp/tmpagnu7aom --explicit

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: linux-64
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.5.7-hbcca054_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.1.0-hfd8a6a1_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-3_cp39.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.1.0-he5830b7_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.1.0-he5830b7_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libffi-3.3-h58526e2_2.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1u-hd590300_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.42.0-h2797004_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.42.0-h2c6b66d_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/python-3.9.6-h49503c6_1_cpython.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/itsdangerous-1.1.0-py_0.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.0.1-py39h3811e60_1.tar.bz2
https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.7-py39h07f9747_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/setuptools-68.0.0-pyhd8ed1ab_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/werkzeug-1.0.1-pyh9f0ad1d_0.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_2.tar.bz2
https://conda.anaconda.org/conda-forge/noarch/flask-1.1.4-pyhd8ed1ab_0.tar.bz2

Co-authored-by: Riccardo Porreca <riccardo.porreca@mirai-solutions.com>
@maresb
Copy link
Contributor

maresb commented Jul 8, 2023

Thanks for the debug info! I would have expected to see No package record found! though. Any idea why it's not showing up when you run the command by hand? I have to sign off for the night.

@riccardoporreca
Copy link
Contributor Author

riccardoporreca commented Jul 8, 2023

Thanks for the debug info! I would have expected to see No package record found! though.

Oh, I do see the same if I execute the same command manually, even w/o --dry-run. Hopefully you can also reproduce locally by creating and environment based on the EXPLICIT package list and the run the mamba update command on that environment.

Btw, I could also extract installed_pkg_recs that is looped over in mamba.utils and triggers the message:

[PrefixRecord(_hash=6117309602136572690, name='libstdcxx-ng', version='13.1.0', build='hfd8a6a1_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='067bcc23164642f4c226da631f2a2e1d', url='https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.1.0-hfd8a6a1_0.tar.bz2', sha256='6f9eb2d7a96687938c0001166a3b308460a8eb02b10e9d0dd9e251f0219ea05c', depends=()), PrefixRecord(_hash=4601397831281391658, name='_openmp_mutex', version='4.5', build='2_gnu', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='73aaf86a425cc6e73fcf236a5a46396d', url='https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2', sha256='fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22', depends=('_libgcc_mutex 0.1', 'libgomp >=7.5.0')), PrefixRecord(_hash=4258323768399712393, name='libgomp', version='13.1.0', build='he5830b7_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='56ca14d57ac29a75d23a39eb3ee0ddeb', url='https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.1.0-he5830b7_0.tar.bz2', sha256='5d441d80b57f857ad305a65169a6b915d4fd6735cdc9e9bded35d493c91ef16d', depends=('_libgcc_mutex 0.1',)), PrefixRecord(_hash=-1062740788984534903, name='libgcc-ng', version='13.1.0', build='he5830b7_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='cd93f779ff018dd85c7544c015c9db3c', url='https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.1.0-he5830b7_0.tar.bz2', sha256='fba897a02f35b2b5e6edc43a746d1fa6970a77b422f258246316110af8966911', depends=('_libgcc_mutex 0.1', '_openmp_mutex >=4.5')), PrefixRecord(_hash=-3508787944303369784, name='markupsafe', version='2.0.1', build='py39h3811e60_1', build_number=1, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='bba8fc0d724caa73a96220e48aac3b61', url='https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.0.1-py39h3811e60_1.tar.bz2', sha256='012db594e5921001b571415e1af5f96f0261f0e405dc5bb24108f37424b5bdcc', depends=('libgcc-ng >=9.4.0', 'python >=3.9,<3.10.0a0', 'python_abi 3.9.*')), PrefixRecord(_hash=1864570515959054434, name='flask', version='1.1.4', build='pyhd8ed1ab_0', build_number=0, channel=Channel("conda-forge/noarch"), subdir='noarch', md5='63a883114dff04051d6da14614abad6c', url='https://conda.anaconda.org/conda-forge/noarch/flask-1.1.4-pyhd8ed1ab_0.tar.bz2', sha256='caefc2382372dae76287b2f93c8f143be6a2f6fd1beb9a99d397bdd89885ca0b', depends=('click >=5.1,<8.0', 'itsdangerous >=0.24,<2.0', 'jinja2 >=2.10.1,<3.0', 'python >=3.7', 'werkzeug >=0.15,<2.0')), PrefixRecord(_hash=217662879442330501, name='readline', version='8.2', build='h8228510_1', build_number=1, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='47d31b792659ce70f470b5c82fdfb7a4', url='https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.tar.bz2', sha256='5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7', depends=('libgcc-ng >=12', 'ncurses >=6.3,<7.0a0')), PrefixRecord(_hash=7171625443809266070, name='openssl', version='1.1.1u', build='hd590300_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='cc1c2db83ae28a28871d52b035739488', url='https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1u-hd590300_0.tar.bz2', sha256='b8b2c2cebc4753d23263cae5deaf9112069113030a14076756358ea090194616', depends=('ca-certificates', 'libgcc-ng >=12')), PrefixRecord(_hash=5478892565273133814, name='ld_impl_linux-64', version='2.40', build='h41732ed_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='7aca3059a1729aa76c597603f10b0dd3', url='https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-h41732ed_0.tar.bz2', sha256='f6cc89d887555912d6c61b295d398cff9ec982a3417d38025c45d5dd9b9e79cd', depends=()), PrefixRecord(_hash=3767926195225194115, name='xz', version='5.2.6', build='h166bdaf_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='2161070d867d1b1204ea749c8eec4ef0', url='https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2', sha256='03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162', depends=('libgcc-ng >=12',)), PrefixRecord(_hash=4806233417525843396, name='setuptools', version='68.0.0', build='pyhd8ed1ab_0', build_number=0, channel=Channel("conda-forge/noarch"), subdir='noarch', md5='5a7739d0f57ee64133c9d32e6507c46d', url='https://conda.anaconda.org/conda-forge/noarch/setuptools-68.0.0-pyhd8ed1ab_0.tar.bz2', sha256='083a0913f5b56644051f31ac40b4eeea762a88c00aa12437817191b85a753cec', depends=('python >=3.7',)), PrefixRecord(_hash=6087619369644264193, name='_libgcc_mutex', version='0.1', build='conda_forge', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='d7c89558ba9fa0495403155b64376d81', url='https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2', sha256='fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726', depends=()), PrefixRecord(_hash=7883234331493347149, name='python', version='3.9.6', build='h49503c6_1_cpython', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='3ef028f528fe6cae3a536acb5d31be7a', url='https://conda.anaconda.org/conda-forge/linux-64/python-3.9.6-h49503c6_1_cpython.tar.bz2', sha256='525da63a4195fb8dd68f7edc92b7cc6e7f408a002a747b2dc6c487ce8adf6d52', depends=('ld_impl_linux-64 >=2.36.1', 'libffi >=3.3,<3.4.0a0', 'libgcc-ng >=9.3.0', 'ncurses >=6.2,<7.0.0a0', 'openssl >=1.1.1k,<1.1.2a', 'readline >=8.1,<9.0a0', 'sqlite >=3.36.0,<4.0a0', 'tk >=8.6.10,<8.7.0a0', 'tzdata', 'xz >=5.2.5,<5.3.0a0', 'zlib >=1.2.11,<1.3.0a0')), PrefixRecord(_hash=-896372301984600320, name='tk', version='8.6.12', build='h27826a3_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='5b8c42eb62e9fc961af70bdd6a26e168', url='https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2', sha256='032fd769aad9d4cad40ba261ab222675acb7ec951a8832455fce18ef33fa8df0', depends=('libgcc-ng >=9.4.0', 'libzlib >=1.2.11,<1.3.0a0')), PrefixRecord(_hash=4117789512474915087, name='ncurses', version='6.4', build='hcb278e6_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='681105bccc2a3f7f1a837d47d39c9179', url='https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.tar.bz2', sha256='ccf61e61d58a8a7b2d66822d5568e2dc9387883dd9b2da61e1d787ece4c4979a', depends=('libgcc-ng >=12',)), PrefixRecord(_hash=4130680458484229485, name='sqlite', version='3.42.0', build='h2c6b66d_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='1192f6ec654a5bc4ee1d64bdc4a3e5cc', url='https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.42.0-h2c6b66d_0.tar.bz2', sha256='9cf59fa9891248e0e3a86a41041156cec367653d423e5d8a09b4c8ab98441a27', depends=('libgcc-ng >=12', 'libsqlite 3.42.0', 'libzlib >=1.2.13,<1.3.0a0', 'ncurses >=6.3,<7.0a0', 'readline >=8.2,<9.0a0')), PrefixRecord(_hash=-5848454029907418160, name='libffi', version='3.3', build='h58526e2_2', build_number=2, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='665369991d8dd290ac5ee92fce3e6bf5', url='https://conda.anaconda.org/conda-forge/linux-64/libffi-3.3-h58526e2_2.tar.bz2', sha256='bfa80758d38a4f50089c38340b4577d476daaf10967ab2dfc2de9650854705f0', depends=('libgcc-ng >=7.5.0', 'libstdcxx-ng >=7.5.0')), PrefixRecord(_hash=-5506156747694922585, name='jinja2', version='2.11.3', build='pyhd8ed1ab_2', build_number=2, channel=Channel("conda-forge/noarch"), subdir='noarch', md5='bdedf6199eec03402a0c5db1f25e891e', url='https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_2.tar.bz2', sha256='bd10e86000b606b69bff881268d9d54b347d08d0850593ab24dfc05f7bcb91c6', depends=('markupsafe >=0.23,<2.1', 'python >=3.5', 'setuptools')), PrefixRecord(_hash=1215477188485682399, name='libsqlite', version='3.42.0', build='h2797004_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='fdaae20a1cf7cd62130a0973190a31b7', url='https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.42.0-h2797004_0.tar.bz2', sha256='72e958870f49174ebc0ddcd4129e9a9f48de815f20aa3b553f136b514f29bb3a', depends=('libgcc-ng >=12', 'libzlib >=1.2.13,<1.3.0a0')), PrefixRecord(_hash=-6890465648837371721, name='ca-certificates', version='2023.5.7', build='hbcca054_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='f5c65075fc34438d5b456c7f3f5ab695', url='https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.5.7-hbcca054_0.tar.bz2', sha256='0cf1bb3d0bfc5519b60af2c360fa4888fb838e1476b1e0f65b9dbc48b45c7345', depends=()), PrefixRecord(_hash=-3106167075499420295, name='tzdata', version='2023c', build='h71feb2d_0', build_number=0, channel=Channel("conda-forge/noarch"), subdir='noarch', md5='939e3e74d8be4dac89ce83b20de2492a', url='https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.tar.bz2', sha256='0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55', depends=()), PrefixRecord(_hash=-6914100323875545989, name='pydantic', version='1.7', build='py39h07f9747_0', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='f33be4cbe9070ef3671852aaa304e2f6', url='https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.7-py39h07f9747_0.tar.bz2', sha256='09bbf313f929700e639b7fdc421130d567c958ac625a81e30a8cafbf17c35e8b', depends=('libgcc-ng >=7.5.0', 'python >=3.9,<3.10.0a0', 'python_abi 3.9.*')), PrefixRecord(_hash=-9067982657162894589, name='itsdangerous', version='1.1.0', build='py_0', build_number=0, channel=Channel("conda-forge/noarch"), subdir='noarch', md5='8afda875561afffed1115fd247fdd61e', url='https://conda.anaconda.org/conda-forge/noarch/itsdangerous-1.1.0-py_0.tar.bz2', sha256='55fdad81f4130544e6bad0accacaaa01541c28d046a5a385b8bce34e1093cf9d', depends=('python',)), PrefixRecord(_hash=-3960696335752423681, name='python_abi', version='3.9', build='3_cp39', build_number=0, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='0dd193187d54e585cac7eab942a8847e', url='https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-3_cp39.tar.bz2', sha256='89e8c4436dd04d8b4a0c13c508e930be56973a480a9714171969de953bdafd3a', depends=()), PrefixRecord(_hash=3651643537671295313, name='werkzeug', version='1.0.1', build='pyh9f0ad1d_0', build_number=0, channel=Channel("conda-forge/noarch"), subdir='noarch', md5='a9f0ed0e6ba014c4e42543bda09e0035', url='https://conda.anaconda.org/conda-forge/noarch/werkzeug-1.0.1-pyh9f0ad1d_0.tar.bz2', sha256='6b8d772970f447b686c3fd498ca8df9f3121bfd5988644aeeea63c9dab54b8a4', depends=('python',)), PrefixRecord(_hash=-8793689297694241366, name='click', version='7.1.2', build='pyh9f0ad1d_0', build_number=0, channel=Channel("conda-forge/noarch"), subdir='noarch', md5='bd50a970ce07e660c319fdc4d730d3f1', url='https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2', sha256='e08b3d5bd79fae9e6e0edcbe41d42c93f9b0f4698df98b22d9119c8f6057cf2d', depends=('python',)), PrefixRecord(_hash=4176514287766983998, name='libzlib', version='1.2.13', build='hd590300_5', build_number=5, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='f36c115f1ee199da648e0597ec2047ad', url='https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-hd590300_5.tar.bz2', sha256='370c7c5893b737596fd6ca0d9190c9715d89d888b8c88537ae1ef168c25e82e4', depends=('libgcc-ng >=12',)), PrefixRecord(_hash=1242590324271593394, name='zlib', version='1.2.13', build='hd590300_5', build_number=5, channel=Channel("conda-forge/linux-64"), subdir='linux-64', md5='68c34ec6149623be41a1933ab996a209', url='https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-hd590300_5.tar.bz2', sha256='9887a04d7e7cb14bd2b52fa01858f05a6d7f002c890f618d9fcd864adbfecb1b', depends=('libgcc-ng >=12', 'libzlib 1.2.13')), PackageRecord(_hash=-4743696213320253586, name='__linux', version='0', build='0', build_number=0, channel=Channel("@"), subdir='linux-64', fn='__linux', md5='12345678901234567890123456789012', package_type='virtual_system'), PackageRecord(_hash=-8923462647567306477, name='__unix', version='0', build='0', build_number=0, channel=Channel("@"), subdir='linux-64', fn='__unix', md5='12345678901234567890123456789012', package_type='virtual_system')]

Actually, I think the problem is with to_unlink, which is

[('https://conda.anaconda.org/conda-forge/linux-64', '')]

and as such pkg in the loop is ''!

Calling it a night too!

@maresb
Copy link
Contributor

maresb commented Jul 9, 2023

Interesting, my shlex.join(proc.args) command ends with 'pydantic 1.7' rather than your 'pydantic >=1.9.0,<1.9.1'. I can reproduce it by switching to the latter.

So now I'm wondering why we have different version specifications. On my side, following it up the stack, in conda_lock.make_lock_files line 328 I have src_files=['.../environment-preupdate.yml'] as an argument to make_lock_spec. This gives me a LockSpec with

[dep.version for dep in lock_spec.dependencies["linux-64"] if dep.name == "pydantic"] == ['1.7']

This propagates down the stack via conda_lock L380, conda_lock L782, conda_lock L706, conda_solver L148, conda_solver L490.

I'm going to merge this in order to have a working main, but I'm still interested in pursuing this further.

@maresb maresb merged commit 9d882c3 into conda:main Jul 9, 2023
@riccardoporreca
Copy link
Contributor Author

I'm still interested in pursuing this further.

@maresb, I have found indications of the issue appearing with mamba 1.4.6 (released June 30), and indeed failures appeared in the last week or so. Let me pursue this further, I will report my findings and free up some of your precious time for other conda-lock topics (like pydantic V2 or vendored poetry updates ;)) or for some quality Sunday time :)

@riccardoporreca
Copy link
Contributor Author

I have created #452 to follow-up on the matter

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.

Tests in ubunut/macos GHA jobs fail silently
2 participants