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

[Question] A question about introducing black for code format #46

Open
1 task done
ChenZiHong-Gavin opened this issue May 29, 2024 · 6 comments
Open
1 task done
Labels
question Further information is requested

Comments

@ChenZiHong-Gavin
Copy link
Contributor

Problem Type (问题类型)

configs (配置项 / 文档相关)

Before submit

  • I had searched in the issues and found no similar issues.

Environment (环境信息)

  • Server Version: 1.x.x
  • Toolchain Version: 1.x.x
  • Data Size: xx vertices, xx edges >

Your Question (问题描述)

I am thinking about introducing BLACK for code check but still confused about the process.

I also noticed that there's a style script already using BLACK, refer: https://github.com/apache/incubator-hugegraph-ai/blob/main/style/code_format_and_analysis.sh

This script is used in the pylint.yml workflow, but only the pylint functionality is enabled. Should I create a new workflow for using BLACK, following the structure of pylint.yml, or should I modify pylint.yml to make it capable of performing code formatting tasks as well?

Vertex/Edge example (问题点 / 边数据举例)

No response

Schema [VertexLabel, EdgeLabel, IndexLabel] (元数据结构)

No response

@dosubot dosubot bot added the question Further information is requested label May 29, 2024
Copy link

dosubot bot commented May 29, 2024

@ChenZiHong-Gavin 你好! 我是Dosu,一个可以帮助你解决错误、回答问题并成为贡献者的机器人。我将在等待人类维护者的过程中协助你。

You should modify pylint.yml to include code formatting tasks as well. The provided script style/code_format_and_analysis.sh already supports running both BLACK and PYLINT together or separately based on the provided command-line arguments. This indicates that the workflow can be combined.

Here is an example of how you might modify pylint.yml to include BLACK:

name: "Lint and Format"

on:
  push:
    branches:
      - 'release-*'
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.9", "3.10"]
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v3
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install black pylint pytest
        pip install -r ./hugegraph-llm/requirements.txt 
        pip install -r ./hugegraph-llm/llm_api/requirements.txt
        pip install -r ./hugegraph-python-client/requirements.txt
    - name: Run code format and analysis
      run: |
        chmod +x style/code_format_and_analysis.sh
        ./style/code_format_and_analysis.sh -b -p

This workflow will run both BLACK and PYLINT as specified in the style/code_format_and_analysis.sh script [1][2].

Details

About Dosu
This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

To continue the conversation, mention @dosu.

@ChenZiHong-Gavin
Copy link
Contributor Author

@ChenZiHong-Gavin 你好! 我是Dosu,一个可以帮助你解决错误、回答问题并成为贡献者的机器人。我将在等待人类维护者的过程中协助你。

You should modify pylint.yml to include code formatting tasks as well. The provided script style/code_format_and_analysis.sh already supports running both BLACK and PYLINT together or separately based on the provided command-line arguments. This indicates that the workflow can be combined.

Here is an example of how you might modify pylint.yml to include BLACK:

name: "Lint and Format"

on:
  push:
    branches:
      - 'release-*'
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.9", "3.10"]
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v3
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install black pylint pytest
        pip install -r ./hugegraph-llm/requirements.txt 
        pip install -r ./hugegraph-llm/llm_api/requirements.txt
        pip install -r ./hugegraph-python-client/requirements.txt
    - name: Run code format and analysis
      run: |
        chmod +x style/code_format_and_analysis.sh
        ./style/code_format_and_analysis.sh -b -p

This workflow will run both BLACK and PYLINT as specified in the style/code_format_and_analysis.sh script [1][2].

Details

About Dosu This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

To continue the conversation, mention @dosu.

it makes sense

Copy link

dosubot bot commented May 29, 2024

Great! It sounds like you're on the right track. If you need any further assistance or have more questions, feel free to ask. Happy coding!

Details

About Dosu
This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

To continue the conversation, mention @dosu.

@ChenZiHong-Gavin
Copy link
Contributor Author

Also, BLACK provides GitHub Actions integration(https://black.readthedocs.io/en/stable/integrations/github_actions.html), and i believe it's better because its flexibility

@imbajin
Copy link
Member

imbajin commented Jun 7, 2024

@dosu we used the action(black CI) but it was banned by Apache's action rules, can you find examples of other Apache projects(in GitHub) using black as a code CI check or how to correctly reference black?

Copy link

dosubot bot commented Jun 7, 2024

@ChenZiHong-Gavin, integrating BLACK into your CI workflow while adhering to Apache's action rules can be challenging. Here is an example of how BLACK is integrated within the constraints of Apache's action rules:

name: "Black Code Formatter"

on:
  push:
    branches:
      - 'release-*'
  pull_request:

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: psf/black@3702ba224ecffbcec30af640c149f231d90aebdb
        with:
          options: "--check --diff --line-length 100"
          src: "hugegraph-llm/src hugegraph-python-client/src"

Additionally, the incubator-hugegraph-ai repository includes a script for running BLACK and PYLINT checks:

#! /bin/bash

BLACK=false
PYLINT=false
ROOT_DIR=$(pwd)
echo ${ROOT_DIR}
# Parse command line arguments
while getopts ":bp" opt; do
  case ${opt} in
    b )
      BLACK=true
      ;;
    p )
      PYLINT=true
      ;;
    \? )
      echo "Usage: cmd [-b] [-p]"
      ;;
  esac
done

# If no arguments were provided, run both BLACK and PYLINT
if [ "$BLACK" = false ] && [ "$PYLINT" = false ]; then
  BLACK=true
  PYLINT=true
fi

# Run BLACK if -b is specified
if [ "$BLACK" = true ] ; then
  echo "[black] Start to check code style and auto format"
  black --line-length=100 ${ROOT_DIR}
fi

# Run PYLINT if -p is specified
if [ "$PYLINT" = true ] ; then
  echo "[pylint] Start code analysis and check,
  we need to manually fix all the warnings mentioned below before commit! "
  export PYTHONPATH=${ROOT_DIR}/hugegraph-llm/src:${ROOT_DIR}/hugegraph-python-client/src
  pylint --rcfile=${ROOT_DIR}/style/pylint.conf ${ROOT_DIR}/hugegraph-llm
  pylint --rcfile=${ROOT_DIR}/style/pylint.conf --disable C0103 ${ROOT_DIR}/hugegraph-python-client
fi

This script allows for flexible integration of BLACK and PYLINT checks, either individually or together, based on command-line arguments [1][2].

If you need further assistance or have more questions, feel free to ask. Happy coding!

To continue talking to Dosu, mention @dosu.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants