black icon indicating copy to clipboard operation
black copied to clipboard

Error in github actions when using `use_pyproject: true`

Open hachimada opened this issue 1 year ago • 4 comments

Describe the bug

black in github actions failed when we set use_pyproject: true this way is discribed in here

To Reproduce

my .github/workflows/black.yml was like bellow.

name: Lint
on: [push, pull_request]
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: psf/black@stable
        with:
          options: "--check --verbose"
          src: "."
          jupyter: false
          use_pyproject: true

and pyproject.toml was like bellow, so black is latest version.

[tool.poetry.group.dev.dependencies]
pytest = "^8.2.0"
notebook = "^7.2.0"
black = "^24.4.2"

The resulting error is lie this. image

The yml description should be as documented, am I missing something?

when I give up to use use_pyproject: true and use version: "~= 24.4.2", no error occurred.

name: Lint

on: [push, pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: psf/black@stable
        with:
          options: "--check --verbose"
          src: "."
          jupyter: false
          version: "~= 24.4.2"  # same as the version in pyproject.toml

Environment

  • Black's version: 24.4.2
  • OS and Python version:

Additional context

hachimada avatar May 18 '24 17:05 hachimada

I ran into the same issue, but I think it's not actually a bug as the action is operating as documented, though it is a bit of a gotcha when using this with Poetry.

The docs say: "To read the version from the pyproject.toml file instead, set use_pyproject to true. This will first look into the tool.black.required-version field, then the project.dependencies array and finally the project.optional-dependencies table."

The first suggestion is a Black-specific location, and then the other 2 are standard pyproject.toml locations as described in https://peps.python.org/pep-0621/. The issue is Poetry does not follow PEP 621 (yet - see https://github.com/python-poetry/roadmap/issues/3), and so it stores its dependencies in different locations - tool.poetry.dependencies and similar, and so the Black action cannot use the Poetry-specified version without redundancy.

If you add

[tool.black]
required-version = "24.4.2"

to your pyproject.toml file instead then use_pyproject will work as described.

Longer term the solution might be to note this gotcha in the docs, for Black to pick up on the Poetry syntax as well, and/or to just wait for Poetry to follow PEP 621.

bobwhitelock avatar May 22 '24 11:05 bobwhitelock

Thanks @bobwhitelock!

I don't think Black should attempt to parse the Poetry-specific section in pyproject.toml. However, I would support adding a note in the docs to address this issue.

JelleZijlstra avatar May 22 '24 13:05 JelleZijlstra

Since this issue is still open, I wanted to add more information and the solution I found.

GitHub Action Failures

Following the documentation for the stable branch of Black GitHub Actions integrations, the GitHub action I had authored continued to fail displaying Error: 'with.use_pyproject' input requires Python 3.11 or later..

Below are the workflow and pyproject files used:

# workflow.yml
name: Pull Request Workflow
on:
  pull_request:
jobs:
  check-code-style:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4
      - name: Check Formatting
        uses: psf/black@stable
        with:
          options: "--check"
          src: "."
          use_pyproject: true

# pyproject.toml
[tool.black]
target-version = ["py313"]  # projects python version
required-version = "24.8.0"  # required version of black to run

Solution

The documentation for the latest includes a step for setting up the python environment. By including the following to workflow.yml the pipeline was successful.

      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.13"

MichaelCduBois avatar Dec 04 '24 23:12 MichaelCduBois