conda / grayskull

Grayskull :skull: - Recipe generator for Conda
https://conda.github.io/grayskull/
Apache License 2.0
320 stars 68 forks source link

[BUG] `optionaltrue` appended to entries from pyproject.toml #516

Open xylar opened 10 months ago

xylar commented 10 months ago

A recent change in grayskull seems to now be producing lines like:

- crate >=0.30.1,<1optionaltrue

For optional entries in a pyproject.toml, e.g.: https://github.com/earthobservations/wetterdienst/blob/v0.70.0/pyproject.toml#L136

See: https://github.com/conda-forge/wetterdienst-feedstock/pull/115/commits/a22fa2b0a36be509fe061a2016e6da67d95130b7

xylar commented 10 months ago

Hmm, I'm not able to reproduce the problem with a local grayskull so maybe it's an issue with conda's bot.

xylar commented 10 months ago

Reopening because @beckermr thinks this is a grayskull bug, see: https://github.com/regro/cf-scripts/issues/1980#issuecomment-1875613408

BastianZim commented 10 months ago

I also got it in this case: https://github.com/conda-forge/aws-lambda-powertools-feedstock/pull/99

xylar commented 10 months ago

Thanks @BastianZim. Have you been able to reproduce it locally with some version of grayskull? That would be a lot more helpful in tracking down and fixing the issue.

BastianZim commented 10 months ago

No, using it locally works for me as well. For the bot, I think it is not using the CLI but a python module instead, so maybe something is converted incorrectly. The logs locally show "optional" as well but it is not in the meta.yaml:

Build requirements:
  <none>
Host requirements:
  - python <4.0
  - poetry-core >=1.3.2
  - pip
Run requirements:
  - python >=3.7.4,<4.0.0
  - typing-extensions >=4.6.2,<5.0.0
All requirements (optional):
  - aws-xray-sdk >=2.8.0,<3.0.0
  - python-fastjsonschema >=2.14.5,<3.0.0
  - pydantic >=1.8.2,<2.0.0
Aws-sdk requirements (optional):
  - boto3 >=1.20.32,<2.0.0
Datadog requirements (optional):
  - datadog-lambda >=4.77,<6.0
Datamasking-aws-sdk requirements (optional):
  - aws-encryption-sdk >=3.1.1,<4.0.0
Parser requirements (optional):
  - pydantic >=1.8.2,<2.0.0
Tracer requirements (optional):
  - aws-xray-sdk >=2.8.0,<3.0.0
Validation requirements (optional):
  - python-fastjsonschema >=2.14.5,<3.0.0

RED: Missing packages
GREEN: Packages available on conda-forge
xylar commented 10 months ago

Thanks @BastianZim. That's helpful. I hadn't had time to look into the details yet.

BastianZim commented 10 months ago

Just cannot remember anymore where that code lives... 😅

beckermr commented 10 months ago

In the bot or grayskull? In the bot it is here https://github.com/regro/cf-scripts/blob/master/conda_forge_tick/update_deps.py#L333. You'll have to extract a test case by hand since the current code paths use bot data structures.

beckermr commented 10 months ago

This function might be easier: https://github.com/regro/cf-scripts/blob/master/conda_forge_tick/update_deps.py#L282

BastianZim commented 10 months ago

Ahh was looking in smithy – thank you!

In the bot or grayskull?

Yes, I just wanted to see if there is an obvious difference between CLI and bot.

BastianZim commented 10 months ago

Ok if I run recipe, _ = create_python_recipe(pkg_name="aws-lambda-powertools", version="2.31.0", download=False, is_strict_cf=True) and save that, I am getting

requirements:
  host:
    - python <4.0
    - poetry-core >=1.3.2
    - pip
  run:
    - python >=3.7.4,<4.0.0
    - typing-extensions >=4.6.2,<5.0.0
  run_constrained:
    - aws-xray-sdk >=2.8.0,<3.0.0
    - python-fastjsonschema >=2.14.5,<3.0.0
    - pydantic >=1.8.2,<2.0.0
    - boto3 >=1.20.32,<2.0.0
    - datadog-lambda >=4.77,<6.0

I'm not sure if it is 100% Grayskull related, it might be the matching later. But first I would need to investigate if the Python version can have the same argument as the CLI with --extras-require-all.