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

Baivab updated python-package.yml #145

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

baivab85
Copy link

@baivab85 baivab85 commented Mar 3, 2024

Summary

##The issue was :

We need a new GitHub Action workflow to automatically publish this package to PyPI (Python Package Index)

This will be useful for other project, to ease their installation.

The GitHub Action pypa/gh-action-pypi-publish could be easily added to .github//workflows/python-package.yml:

- name: Publish distribution 📦 to Test PyPI
  uses: pypa/gh-action-pypi-publish@release/v1
  with:
    password: ${{ secrets.TEST_PYPI_API_TOKEN }}
    repository_url: https://test.pypi.org/legacy/

This action should only run if secrets.TEST_PYPI_API_TOKEN is configured

Checklist

Ans:

My Logic and implementation details are the following:

The YAML file is a GitHub Actions workflow for a Python package. The workflow is triggered on push and pull request events to the main branch. It includes several jobs that are run on the latest version of Ubuntu.

The jobs in the workflow include:

Setting up Python: The versions used are 3.9 and 3.11.

Installing pip: The latest version of pip is installed.

Installing dependencies: This includes upgrading setuptools, wheel, and twine. If there are any requirements specified in requirements.txt or requirements-dev.txt, those are installed as well.

Building the package: The Python package is built using setup.py.

Publishing the distribution to PyPI: The built package is published to PyPI using a token for authentication.

Publishing the distribution to Test PyPI: If a token for Test PyPI is available, the package is also published there.

Testing with pytest: Tests are run using pytest, and a HTML report is generated.

Uploading the test report: The test report is uploaded as an artifact.

Generating a coverage report: A coverage report is generated using pytest and a configuration file.

Uploading the coverage report: The coverage report is uploaded as an artifact.

This workflow ensures that the Python package is properly built and tested and that the distribution is published to PyPI and Test PyPI. It also provides test and coverage reports for further analysis.

The Issue was assigned to me by Nico Sir.

Process to test the code:

The code provided in the context is a GitHub Actions workflow for a Python project. It includes steps for setting up Python, installing dependencies, building the package, publishing the package to PyPI and Test PyPI, and running tests with pytest.

Here are the steps to test the code:

Write our tests: The tests should be written in a separate file (or files) using a testing framework like pytest. The context suggests that the tests are located in a directory named tests/.

Run the tests: In the workflow, the tests are run with the command pytest --html=report.html --self-contained-html. This command runs the tests and generates a HTML report.

Check the test report: After the tests are run, the report is uploaded as an artifact with the name report.html. We can download this report from the GitHub Actions tab in your repository to check the results of the tests.

Check the coverage report: The workflow also includes a step to generate a coverage report with the command pytest --cov-config=.coveragerc --cov-report=html --cov=pyafipws tests/. This command generates a coverage report that shows how much of my code is covered by the tests. The coverage report is also uploaded as an artifact with the name Coverage_Report.

The Code is:

runs-on: ubuntu-latest
strategy:
  fail-fast: false
  matrix:
    python-version: [3.9, 3.11]

steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
  uses: actions/setup-python@v2
  with:
    python-version: ${{ matrix.python-version }}
- name: Install pip
  run: python -m pip install --upgrade pip
- name: Install dependencies
  run: |
    python -m pip install --upgrade setuptools wheel twine
    if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; fi
- name: Build package
  run: python setup.py sdist bdist_wheel
- name: Publish distribution 📦 to PyPI
  uses: pypa/gh-action-pypi-publish@master
  with:
    user: __token__
    password: ${{ secrets.PYPI_API_TOKEN }}
- name: Publish distribution 📦 to Test PyPI
  if: secrets.TEST_PYPI_API_TOKEN != ''
  uses: pypa/gh-action-pypi-publish@release/v1
  with:
    user: __token__
    password: ${{ secrets.TEST_PYPI_API_TOKEN }}
    repository_url: https://test.pypi.org/legacy/
- name: Test with pytest
  run: |
    pytest --html=report.html --self-contained-html
- name: Upload test report
  uses: actions/upload-artifact@v2
  if: ${{ always() }}
  with:
    name: report.html
    path: report.html
- name: Coverage Report
  run: |
    pytest --cov-config=.coveragerc --cov-report=html --cov=pyafipws tests/
- name: Upload coverage report
  uses: actions/upload-artifact@v2
  if: ${{ always() }}
  with:
    name: Coverage_Report
    path: htmlcov

- name: Install dependencies
run: |
python -m pip install --upgrade pip
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you remove the upgrade command for pips?

if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; fi
- name: Lint with flake8
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All of this block of code is required for this project to be run and tested. Please ensure you have read the documentation properly before proceeding

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please review this code is this correct or not? Actually its a first Open Source for me . So I need guidance and review of my pull requests

`name: Python package

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:

runs-on: ubuntu-latest
strategy:
  fail-fast: false
  matrix:
    python-version: [3.9, 3.11]

steps:
- uses: actions/checkout@v2

- name: Set up Python ${{ matrix.python-version }}
  uses: actions/setup-python@v2
  with:
    python-version: ${{ matrix.python-version }}

- name: Upgrade pip
  run: |
    python -m pip install --upgrade pip

- name: Install dependencies
  run: |
    python -m pip install flake8
    if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; fi

- name: Lint with flake8
  run: |
    # TODO: stop the build if there are Python syntax errors or undefined names
    flake8 . --count --exit-zero --select=E9,F63,F7,F82 --show-source --statistics
    # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
    flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

- name: Install package
  run: |
    python setup.py install

- name: Download certificate and private key
  run: |
    wget "https://www.sistemasagiles.com.ar/soft/pyafipws/reingart2021.zip" -O reingart2019.zip
    unzip reingart2019.zip

- name: Copy configuration files
  run: |
    sudo cp conf/rece.ini rece.ini
    sudo cp conf/wslum.ini wslum.ini
    sudo cp conf/wsremcarne.ini wsremcarne.ini
    sudo cp conf/wsltv.ini wsltv.ini
    sudo cp conf/wslsp.ini wslsp.ini

- name: Install pip dependencies
  run: |
    python -m pip install --upgrade setuptools wheel twine

- name: Build package
  run: |
    python setup.py sdist bdist_wheel

- name: Publish distribution 📦 to PyPI
  uses: pypa/gh-action-pypi-publish@master
  with:
    user: __token__
    password: ${{ secrets.PYPI_API_TOKEN }}

- name: Publish distribution 📦 to Test PyPI
  if: secrets.TEST_PYPI_API_TOKEN != ''
  uses: pypa/gh-action-pypi-publish@release/v1
  with:
    user: __token__
    password: ${{ secrets.TEST_PYPI_API_TOKEN }}
    repository_url: https://test.pypi.org/legacy/

- name: Test with pytest
  run: |
    pytest --html=report.html --self-contained-html

- name: Upload test report
  uses: actions/upload-artifact@v2
  if: ${{ always() }}
  with:
    name: report.html
    path: report.html

- name: Coverage Report
  run: |
    pytest --cov-config=.coveragerc --cov-report=html --cov=pyafipws tests/

- name: Upload coverage report
  uses: actions/upload-artifact@v2
  if: ${{ always() }}
  with:
    name: Coverage_Report
    path: htmlcov

`

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know it's your first opensource work
So it's good to always ask especially with issues like deleting code somewhere

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok Sir, I might have mistakenly deleted it but updated in the previous code can you please review it

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@baivab85 First, you need to sign-off the commits and then send a new commit with the changes requested by @HanslettTheDev so that he can review your work again.
Don't worry if you have to send more commits until your work can be approved, that's the process and you gain practice in the meantime.
Thank you for your collaboration.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@baivab85 Try to push the the github script in this same branch
I noticed some minor changes in it, Just push to this branch so the github runners can execute it so we can see the commit changes per line

.github/workflows/python-package.yml Show resolved Hide resolved
@baivab85 baivab85 requested a review from HanslettTheDev March 5, 2024 15:33
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.

3 participants