diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..5e65d88 --- /dev/null +++ b/.coveragerc @@ -0,0 +1,6 @@ +[report] +omit = + *__init__* + tests/* +exclude_lines = + if __name__ == .__main__.: \ No newline at end of file diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml new file mode 100644 index 0000000..4ff8076 --- /dev/null +++ b/.github/workflows/build_test.yml @@ -0,0 +1,133 @@ +# You can have multiple workflows that are triggered by different +# events (eg a workflow that runs on branch pushes, versus a +# workflow that runs when a GitHub issue is created). Give your +# workflow a descriptive name so that you know what it is. +name: build_test + +# What is the event that triggers this workflow? Options include +# push, pull_request, create, issues, etc. This configuration says +# that you should run on pushes to the main branch (ie after a PR +# is merged), or when a pull request is created to merge into main. +on: + push: + branches: + - main + pull_request: + # Configuring this means that your PRs will get a GitHub comment + # from Coveralls with your coverage. + branches: + - main + +# A list of jobs to run as part of the workflow +jobs: + + # Each job gets a name. This one builds/tests all branches. + build_test: + + # Provide a runner. Options are listed on GitHub, but include + # windows, ubuntu, and macos (latest, as well as specific versions) + runs-on: ubuntu-latest + + # In order to get Conda environments to work properly, we need to + # tell the runner to start up the bash shell in a way that respects + # the changes Conda makes to bash profile files. + # More at: + # https://github.com/marketplace/actions/setup-miniconda#use-a-default-shell + defaults: + run: + shell: bash -el {0} + + # We specify all versions of Python that we want to validate. + # GitHub will run the tests for each of these Python versions. + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11"] + + # The actual workflow steps! + steps: + # First, check out the repository for the current branch. + - uses: actions/checkout@v3 + + # Then set up Python with a python version from the matrix. + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + # This is an Action published by the Conda team to get your + # Conda environment set up using your environment.yml file. + # More at https://github.com/marketplace/actions/setup-miniconda + - name: Set up conda + uses: conda-incubator/setup-miniconda@v2 + with: + # Use the environment name from your environment.yml file + activate-environment: ci_example + # The name of the environment file you want conda to use + environment-file: environment.yml + # Whether you want conda to automatically update the conda + # version (helpful when some runners have old versions of + # conda) + auto-update-conda: true + # Which version of python you want conda to use + python-version: ${{ matrix.python-version }} + # We don't need the base environment, so don't activate it + auto-activate-base: false + + # You don't normally need test coverage information when + # developing locally - we just want it in CI - so we install + # it here instead of in our environment file (which we also + # use locally). + - name: Install additional development dependencies + run: | + conda install --yes coverage + + # If there are any other steps in order for your tests to + # run successfully, you can add those steps here! + + # Next step: run pylint. Anything less than 10/10 will fail. + # - name: Lint with pylint + # run: | + # python -m pip install pylint + # pylint thronetalk-game-of-thrones-summarizer/**/*.py + + # Next step: run the unit tests with code coverage. + - name: Unit tests + run: | + cd thronetalk-game-of-thrones-summarizer + coverage run -m unittest discover + coverage report + coverage lcov + + # Lastly: report code coverage to Coveralls. + - name: Report code coverage to Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + base-path: thronetalk-game-of-thrones-summarizer + path-to-lcov: thronetalk-game-of-thrones-summarizer/coverage.lcov + # The following two options are needed for "parallel" + # runs - ie if you have a matrix of python versions. + # This holds off on reporting code coverage to + # coveralls until all runs are done. If you don't have + # a matrix, this isn't needed. + flag-name: run ${{ join(matrix.*, ' - ') }} + parallel: true + + # After all the parallel matrix runs for build_test are done + # for the various python versions, we run this job to send the + # final code coverage to Coveralls. + finish: + # This job requires that build_test be finished before it + # can run. + needs: build_test + if: ${{ always() }} + runs-on: ubuntu-latest + steps: + - name: Coveralls Finished + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel-finished: true + # This says finish the parallel runs that we did above + # and send to Coveralls. + carryforward: "run-3.7,run-3.8,run-3.9,run-3.10" diff --git a/README.md b/README.md index 8e0c663..90f1101 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ # ThroneTalk - Game of Thrones Summarizer +![build-test workflow](https://github.com/DSProjects2024/thronetalk-game-of-thrones-summarizer/actions/workflows/build-test/badge.svg) + 1. Project type - An Interactive Web Tool 2. Questions of interest - Can we develop a model that can take a given input text and transform it into the style of a chosen Game of Thrones character, maintaining the character's speech patterns, vocabulary, and personality traits? 3. The goal for the project output -