From d446207fd2532fd8997da7a7d2fb1f399ec2eab9 Mon Sep 17 00:00:00 2001 From: Kristoffel Pirard Date: Thu, 18 Mar 2021 09:27:09 +0100 Subject: [PATCH 1/3] Add python project file --- pyproject.toml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..a5fb6f7 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,15 @@ +[tool.poetry] +name = "natan-mastermind" +version = "0.1.0" +description = "Mastermind" +authors = ["natan"] +license = "LGPLv3" + +[tool.poetry.dependencies] +python = "^3.8" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" From 3ca5ce2fdd64a11c55e000462a2c4c7f2e22ba5b Mon Sep 17 00:00:00 2001 From: Kristoffel Pirard Date: Thu, 18 Mar 2021 09:35:24 +0100 Subject: [PATCH 2/3] Create proper python project structure --- pyproject.toml | 6 ++++++ GUI.py => src/nmastermind/GUI.py | 15 ++++++++++----- .../nmastermind/MasterMindAsked.py | 0 src/nmastermind/__init__.py | 0 test.py => src/nmastermind/test.py | 0 5 files changed, 16 insertions(+), 5 deletions(-) rename GUI.py => src/nmastermind/GUI.py (97%) rename MasterMindAsked.py => src/nmastermind/MasterMindAsked.py (100%) create mode 100644 src/nmastermind/__init__.py rename test.py => src/nmastermind/test.py (100%) diff --git a/pyproject.toml b/pyproject.toml index a5fb6f7..beab06d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,6 +4,12 @@ version = "0.1.0" description = "Mastermind" authors = ["natan"] license = "LGPLv3" +packages = [ + { include = "nmastermind", from="src" } +] + +[tool.poetry.scripts] +natan-mastermind = "nmastermind.GUI:main" [tool.poetry.dependencies] python = "^3.8" diff --git a/GUI.py b/src/nmastermind/GUI.py similarity index 97% rename from GUI.py rename to src/nmastermind/GUI.py index 566888a..e70ae19 100644 --- a/GUI.py +++ b/src/nmastermind/GUI.py @@ -8,7 +8,7 @@ Label, messagebox) -import MasterMindAsked +from . import MasterMindAsked import random ALL_COLORS = ("red", "green", "blue", "yellow", "orange", "white") @@ -197,7 +197,12 @@ def color(color_name): -root = Tk() -draw_board(root) -random_combination = MasterMindAsked.create_combination(NUMBER_OF_CIRCLES) -root.mainloop() \ No newline at end of file +def main(): + root = Tk() + draw_board(root) + random_combination = MasterMindAsked.create_combination(NUMBER_OF_CIRCLES) + root.mainloop() + + +if __name__ == "__main__": + main() diff --git a/MasterMindAsked.py b/src/nmastermind/MasterMindAsked.py similarity index 100% rename from MasterMindAsked.py rename to src/nmastermind/MasterMindAsked.py diff --git a/src/nmastermind/__init__.py b/src/nmastermind/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test.py b/src/nmastermind/test.py similarity index 100% rename from test.py rename to src/nmastermind/test.py From 932b876357688a9c82ee38bc4631f43e0d4346e4 Mon Sep 17 00:00:00 2001 From: Kristoffel Pirard Date: Thu, 18 Mar 2021 09:35:55 +0100 Subject: [PATCH 3/3] Add automatic checks: quality and style --- .github/workflows/quality.yml | 69 +++++++++++++++++++++++++++++++++++ .github/workflows/style.yml | 11 ++++++ 2 files changed, 80 insertions(+) create mode 100644 .github/workflows/quality.yml create mode 100644 .github/workflows/style.yml diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml new file mode 100644 index 0000000..47ff381 --- /dev/null +++ b/.github/workflows/quality.yml @@ -0,0 +1,69 @@ +# This is a basic workflow to help you get started with Actions + +name: Quality + +# Controls when the action will run. +on: + # Triggers the workflow on push or pull request events but only for the main branch + push: + branches: [ master ] + pull_request: + branches: [ master ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + tests: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-python@v2 + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: Gr1N/setup-poetry@v4 + - run: poetry install + - run: | + poetry run coverage run -m pytest src + mkdir coverage-reports + poetry run coverage xml -o coverage-reports/coverage-tests.xml + ls coverage-reports + - name: Upload coverage reports + uses: actions/upload-artifact@v2 + with: + name: coverage-reports + path: coverage-reports/coverage-tests.xml + + # This workflow contains a single job called "build" + quality: + needs: tests + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Download coverage reports + uses: actions/download-artifact@v2 + with: + name: coverage-reports + path: coverage-reports + - run: find . + + - name: SonarCloud Scan + uses: SonarSource/sonarcloud-github-action@v1.5 + with: + projectBaseDir: src + args: > + -Dsonar.organization=xtofl + -Dsonar.projectKey=xtofl_natan_mastermind + -Dsonar.python.coverage.reportPaths=coverage-reports/coverage-tests.xml + env: + SONAR_TOKEN: ${{secrets.SONAR_TOKEN}} + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml new file mode 100644 index 0000000..f58e4c6 --- /dev/null +++ b/.github/workflows/style.yml @@ -0,0 +1,11 @@ +name: Lint + +on: [push, pull_request] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + - uses: psf/black@stable