diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index b36438d..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1 +0,0 @@ -![Coverage Badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/micahjohnson150/2034019acc40a963bd02d2fcbb31c5a9/raw/snowexsql__pull_##.json) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 3b14efa..a86735b 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -36,7 +36,7 @@ jobs: permissions: id-token: write steps: - - uses: actions/setup-python@v5.1.1 + - uses: actions/setup-python@v5 name: Install Python with: python-version: "3.10" @@ -49,7 +49,7 @@ jobs: ls -ltrh ls -ltrh dist - name: Publish to Test PyPI - uses: pypa/gh-action-pypi-publish@v1.9.0 + uses: pypa/gh-action-pypi-publish@v1.10.1 with: repository-url: https://test.pypi.org/legacy/ verbose: true @@ -98,5 +98,5 @@ jobs: name: artifact path: dist - - uses: pypa/gh-action-pypi-publish@v1.9.0 + - uses: pypa/gh-action-pypi-publish@v1.10.1 if: startsWith(github.ref, 'refs/tags') diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..f6ab52e --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,43 @@ +name: Code Quality +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] +jobs: + run: + runs-on: ubuntu-latest + services: + postgis: + image: kartoza/postgis:14-3.2 + env: + POSTGRES_PASSWORD: db_builder + POSTGRES_USER: builder + POSTGRES_DB: test + TZ: 'UTC' + PGTZ: 'UTC' + POSTGIS_GDAL_ENABLED_DRIVERS: 'ENABLE_ALL' + POSTGIS_ENABLE_OUTDB_RASTERS: 'True' + ports: + - 5432:5432 + volumes: + - /home/runner/work/:/home/runner/work/ + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: '3.10' + - name: Install dependencies + run: python3 -m pip install -e ".[dev]" + - name: Run tests and collect coverage + run: pytest --cov snowexsql --cov-report=xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + verbose: true + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 668c11b..31dc277 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,5 +1,5 @@ -name: snowexsql testing +name: Pytest # Controls when the action will run. on: @@ -36,9 +36,9 @@ jobs: - /home/runner/work/:/home/runner/work/ steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies @@ -46,44 +46,7 @@ jobs: sudo apt-get update sudo apt-get install -y postgis gdal-bin python3 -m pip install --upgrade pip - python3 -m pip install pytest coverage python3 -m pip install -e ".[dev]" - name: Test with pytest run: | pytest -s - - # Run coverage only once - - if: ${{ matrix.python-version == '3.9'}} - name: Get Coverage for badge - run: | - # Run coverage save the results - coverage run --source snowexsql -m pytest - SUMMARY=`coverage report -m | grep TOTAL` - - # Save results as ENV var - COVERAGE=$(python -c "print('$SUMMARY'.split(' ')[-1])") - echo "COVERAGE=$COVERAGE" >> $GITHUB_ENV - - # var REF = 'refs/pull/27/merge.json'; - REF=${{ github.ref }} - # console.log('github.ref: ' + REF); - echo "github.ref: $REF" - # var PATHS = REF.split('/'); - IFS='/' read -ra PATHS <<< "$REF" - # var BRANCH_NAME = PATHS[1] + PATHS[2]; - BRANCH_NAME="${PATHS[1]}_${PATHS[2]}" - # console.log(BRANCH_NAME); // 'pull_27' - echo $BRANCH_NAME - # process.env.BRANCH = 'pull_27'; - echo "BRANCH=$(echo ${BRANCH_NAME})" >> $GITHUB_ENV - - - if: ${{ matrix.python-version == '3.9'}} - name: Create the Badge - uses: schneegans/dynamic-badges-action@v1.0.0 - with: - auth: ${{ secrets.GIST_SECRET }} - gistID: 2034019acc40a963bd02d2fcbb31c5a9 - filename: snowexsql__${{ env.BRANCH }}.json - label: Coverage - message: ${{ env.COVERAGE }} - color: green \ No newline at end of file diff --git a/README.rst b/README.rst index 5cb8102..89256ed 100644 --- a/README.rst +++ b/README.rst @@ -14,8 +14,8 @@ Welcome to snowexsql :target: https://pypi.org/project/snowexsql/ :alt: Code Coverage -.. image:: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/micahjohnson150/2034019acc40a963bd02d2fcbb31c5a9/raw/snowexsql__heads_master.json - :alt: Code Coverage +.. image:: https://codecov.io/gh/SnowEx/snowexsql/graph/badge.svg?token=B27OKGBOTR + :target: https://codecov.io/gh/SnowEx/snowexsql About ----- diff --git a/pyproject.toml b/pyproject.toml index 346bd19..0397155 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,10 +28,8 @@ dependencies = [ [project.optional-dependencies] dev = [ - "pip==23.3", - "coverage==5.5", - "pytest==6.2.4", - "pytest-cov==2.12.1", + "pytest", + "pytest-cov", "sphinx-autobuild<=2024.5", ] docs = [ diff --git a/snowexsql/analysis.py b/snowexsql/analysis.py deleted file mode 100644 index a9e5f67..0000000 --- a/snowexsql/analysis.py +++ /dev/null @@ -1,27 +0,0 @@ -import numpy as np - - -def get_stats(data, logger=None): - """ - Calculate and report the typical stats on an numpy array. - - Args: - data: Numpy array or Pandas Dataframe - logger: Use a logger to report stats - Return: - result: Dictionary containing statistics - """ - - results = {} - - for stat in ['mean', 'min', 'max', 'std']: - fn = getattr(np, 'nan' + stat) - results[stat] = fn(data) - msg = '\t{} = {}'.format(stat, results[stat]) - - if logger is not None: - logger.info(msg) - else: - print(msg) - - return results diff --git a/tests/test_analysis.py b/tests/test_analysis.py deleted file mode 100644 index d6ca0c1..0000000 --- a/tests/test_analysis.py +++ /dev/null @@ -1,15 +0,0 @@ -import numpy as np - -from snowexsql.analysis import * - - -def test_get_stats(): - """ - Tests the get stats function - """ - arr = np.array([[1,2],[1,2]]) - received = get_stats(arr) - expected = {'mean':1.5, 'std': 0.5, 'min': 1, 'max':2} - - for s,v in expected.items(): - assert v == expected[s]