Skip to content

Commit

Permalink
basic structure based on cookiecutter
Browse files Browse the repository at this point in the history
Signed-off-by: Prati28 <[email protected]>
  • Loading branch information
psankhe28 committed Jul 2, 2024
1 parent 661c7af commit 119c581
Show file tree
Hide file tree
Showing 34 changed files with 1,799 additions and 24 deletions.
21 changes: 21 additions & 0 deletions .cruft.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"template": "D:\\open-source\\gsoc\\final\\cookiecutter-python",
"commit": "88967f43af9799dfa0ad04b2908d7f40259c02d2",
"checkout": null,
"context": {
"cookiecutter": {
"author_name": "Elixir Cloud AAI",
"author_email": "[email protected]",
"development_status": "Beta",
"short_description": "File Handler Utilizing TUS and Minio (S3 Storage) with DRS Filer Integration",
"project_name": "tus-storagehandler",
"project_slug": "tus_storagehandler",
"github_username": "elixir-cloud-aai",
"python_version": "3.11",
"add_script": "y",
"year": "2024",
"_template": "D:\\open-source\\gsoc\\final\\cookiecutter-python"
}
},
"directory": null
}
47 changes: 47 additions & 0 deletions .github/ISSUE_TEMPLATE/general-purpose.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
Your issue may already be reported! Please search on the
[issue tracker](https://github.com/elixir-cloud-aai/tus-storagehandler/issues) before creating
one.

## Expected Behavior

<!--- If you're describing a bug, tell us what should happen -->

<!--- If you're suggesting a change/improvement, tell us how it should work -->

## Current Behavior

<!--- If describing a bug, tell us what happens instead of the expected behavior -->

<!--- If suggesting a change/improvement, explain the difference from current behavior -->

## Possible Solution

<!--- Not obligatory, but suggest a fix/reason for the bug, -->

<!--- or ideas how to implement the addition or change -->

## Steps to Reproduce (for bugs)

<!--- Provide a link to a live example, or an unambiguous set of steps to -->

<!--- reproduce this bug. Include code to reproduce, if relevant -->

1.
1.
1.
1.

## Context

<!--- How has this issue affected you? What are you trying to accomplish? -->

<!--- Providing context helps us come up with a solution that is most useful in the real world -->

## Your Environment

<!--- Include as many relevant details about the environment you experienced the bug in -->

- Version used:
- Browser Name and version:
- Operating System and version (desktop or mobile):
- Link to your project:
92 changes: 92 additions & 0 deletions .github/actions/setup/poetry/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
name: Setup Python and Poetry Action
description: Configure system, Python, Poetry and deps and cache management.

inputs:
os:
default: ubuntu-latest
description: The operating system to use
python-version:
default: '3.11'
description: The version of Python to use
poetry-version:
default: '1.8.2'
description: The version of Poetry to install
poetry-install-options:
default: ''
description: Additional options to pass to poetry install
poetry-export-options:
default: ''
description: Options to pass to poetry export for hash generation for cache
invalidation

runs:
using: composite
steps:
- uses: 'actions/setup-python@v5'
id: setup-python
with:
python-version: '${{ inputs.python-version }}'

- name: Setup pipx environment Variables
id: pipx-env-setup
# pipx default home and bin dir are not writable by the cache action
# so override them here and add the bin dir to PATH for later steps.
# This also ensures the pipx cache only contains poetry
run: |
SEP="${{ !startsWith(runner.os, 'windows') && '/' || '\\' }}"
PIPX_CACHE="${{ github.workspace }}${SEP}pipx_cache"
echo "pipx-cache-path=${PIPX_CACHE}" >> $GITHUB_OUTPUT
echo "pipx-version=$(pipx --version)" >> $GITHUB_OUTPUT
echo "PIPX_HOME=${PIPX_CACHE}${SEP}home" >> $GITHUB_ENV
echo "PIPX_BIN_DIR=${PIPX_CACHE}${SEP}bin" >> $GITHUB_ENV
echo "PIPX_MAN_DIR=${PIPX_CACHE}${SEP}man" >> $GITHUB_ENV
echo "${PIPX_CACHE}${SEP}bin" >> $GITHUB_PATH
shell: bash

- name: Pipx cache
id: pipx-cache
uses: actions/cache@v4
with:
path: ${{ steps.pipx-env-setup.outputs.pipx-cache-path }}
key: ${{ runner.os }}-python-
${{ steps.setup-python.outputs.python-version }}-
pipx-${{ steps.pipx-env-setup.outputs.pipx-version }}-
poetry-${{ inputs.poetry-version }}

- name: Install poetry
if: steps.pipx-cache.outputs.cache-hit != 'true'
id: install-poetry
shell: bash
run: |
pipx install poetry \
--python "${{ steps.setup-python.outputs.python-path }}"
- name: Read poetry cache location
id: poetry-cache-location
shell: bash
run: |
echo "poetry-venv-location=$(poetry config virtualenvs.path)" \
>> $GITHUB_OUTPUT
- name: Generate hash only for required deps
run: |
poetry export ${{ inputs.poetry-export-options }} \
--format=requirements.txt --output=requirements.txt
echo "DEP_HASH=$(sha256sum requirements.txt | cut -d ' ' -f 1)" \
>> $GITHUB_ENV
shell: bash

- uses: actions/cache@v4
name: Poetry cache
with:
path: ${{ steps.poetry-cache-location.outputs.poetry-venv-location }}
key: ${{ runner.os }}-[python-
${{ steps.setup-python.outputs.python-version }}]-[
${{ env.DEP_HASH }}]-[${{ inputs.poetry-install-options }}]

- name: 'Poetry install'
if: steps.poetry-cache.outputs.cache-hit != 'true'
shell: bash
run: poetry install ${{ inputs.poetry-install-options }} --no-interaction
...
84 changes: 84 additions & 0 deletions .github/workflows/code_quality.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
name: Code Quality

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
format:
name: Format
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up environment
uses: ./.github/actions/setup/poetry
with:
os: ${{ job.os }}
python-version: '3.11'
poetry-install-options: "--only=lint --no-root"
poetry-export-options: "--only=lint"

- name: Check code style
run: poetry run ruff format --check

lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up environment
uses: ./.github/actions/setup/poetry
with:
os: ${{ job.os }}
python-version: '3.11'
poetry-install-options: "--only=lint --no-root"
poetry-export-options: "--only=lint"

- name: Check code quality
run: poetry run ruff check .

spell-check:
name: Spell Check
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up environment
uses: ./.github/actions/setup/poetry
with:
os: ${{ job.os }}
python-version: '3.11'
poetry-install-options: "--only=lint --no-root"
poetry-export-options: "--only=lint"

- name: Check spellings
run: poetry run typos .

type-check:
name: Type Check
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up environment
uses: ./.github/actions/setup/poetry
with:
os: ${{ job.os }}
python-version: '3.11'
poetry-install-options: "--only=types --no-root"
poetry-export-options: "--only=types"

- name: Check types
run: poetry run mypy tus_storagehandler/
...
74 changes: 74 additions & 0 deletions .github/workflows/code_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
name: Code Test

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
integration-test:
name: Unit Test
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up environment
uses: ./.github/actions/setup/poetry
with:
os: ${{ job.os }}
python-version: '3.11'
poetry-install-options: "--with=test"
poetry-export-options: "--with=test"

- name: Run tests and generate coverage as test_integration.xml
run: |
poetry run pytest \
--cov-report term \
--cov-report xml:test_integration.xml \
--cov=tests/test_integration
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: test_integration
files: ./test_integration.xml
fail_ci_if_error: true
verbose: true

unit-test:
name: Unit Test
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up environment
uses: ./.github/actions/setup/poetry
with:
os: ${{ job.os }}
python-version: '3.11'
poetry-install-options: "--with=test"
poetry-export-options: "--with=test"

- name: Run tests and generate coverage as test_unit.xml
run: |
poetry run pytest \
--cov-report term \
--cov-report xml:test_unit.xml \
--cov=tests/test_unit
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: test_unit
files: ./test_unit.xml
fail_ci_if_error: true
verbose: true
...
44 changes: 44 additions & 0 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
name: Documentation Check

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
check-api-docs:
runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up environment
uses: ./.github/actions/setup/poetry
with:
os: ${{ job.os }}
python-version: '3.11'
poetry-install-options: "--with=docs"
poetry-export-options: "--with=docs"

- name: Generate API docs
run: |
sphinx-apidoc -o /tmp/docs tus_storagehandler/
- name: Compare docs with main branch
id: check_docs_diff
run: |
shasum /tmp/docs/* > /tmp/docs.sha
shasum /docs/pages/* > /docs/project_doc.sha
diff=$(diff /tmp/docs.sha /docs/project_doc.sha) || true
if [[ -n "$diff" ]]; then
echo "::error::API documentation is out of date."
exit 1
else
echo "API documentation is up to date."
fi
...
Loading

0 comments on commit 119c581

Please sign in to comment.