feat: auto-deploy to pypi (#8)

This commit is contained in:
Miguel Sozinho Ramalho
2022-07-01 15:23:50 +01:00
committed by GitHub
parent f55782d0da
commit f1053953ba
17 changed files with 2422 additions and 1075 deletions

54
.github/actions/setup-venv/action.yml vendored Normal file
View File

@@ -0,0 +1,54 @@
name: Python virtualenv
description: Set up a Python virtual environment with caching
inputs:
python-version:
description: The Python version to use
required: true
cache-prefix:
description: Update this to invalidate the cache
required: true
default: v0
runs:
using: composite
steps:
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ inputs.python-version }}
- shell: bash
run: |
# Install prerequisites.
pip install --upgrade pip setuptools wheel virtualenv
- shell: bash
run: |
# Get the exact Python version to use in the cache key.
echo "PYTHON_VERSION=$(python --version)" >> $GITHUB_ENV
- uses: actions/cache@v2
id: virtualenv-cache
with:
path: .venv
key: ${{ inputs.cache-prefix }}-${{ runner.os }}-${{ env.PYTHON_VERSION }}-${{ hashFiles('requirements.txt', 'dev-requirements.txt') }}
- if: steps.virtualenv-cache.outputs.cache-hit != 'true'
shell: bash
run: |
# Set up virtual environment without cache hit.
test -d .venv || virtualenv -p $(which python) --copies --reset-app-data .venv
. .venv/bin/activate
pip install -e .[dev]
- if: steps.virtualenv-cache.outputs.cache-hit == 'true'
shell: bash
run: |
# Set up virtual environment from cache hit.
. .venv/bin/activate
pip install --no-deps -e .[dev]
- shell: bash
run: |
# Show environment info.
. .venv/bin/activate
echo "✓ Installed $(python --version) virtual environment to $(which python)"

View File

@@ -1,10 +0,0 @@
name: Lint
on: [push]
jobs:
black:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: psf/black@stable

113
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,113 @@
name: Main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# on: [push]
on:
pull_request:
branches:
- main
push:
branches:
- main
tags:
- "v*.*.*"
env:
# Change this to invalidate existing cache.
CACHE_PREFIX: v0
PYTHONPATH: ./
jobs:
checks:
name: Python ${{ matrix.python }} - ${{ matrix.task.name }}
runs-on: [ubuntu-latest]
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
include:
- python: "3.10"
task:
name: "Build"
run: |
python setup.py check
python setup.py bdist_wheel sdist
- python: "3.10"
task:
name: "Style"
run: |
black --check .
steps:
- uses: actions/checkout@v3
- name: Setup Python environment
uses: ./.github/actions/setup-venv
with:
python-version: ${{ matrix.python }}
cache-prefix: ${{ env.CACHE_PREFIX }}
- name: ${{ matrix.task.name }}
run: |
. .venv/bin/activate
${{ matrix.task.run }}
- name: Upload package distribution files
if: matrix.task.name == 'Build'
uses: actions/upload-artifact@v3
with:
name: package
path: dist
- name: Clean up
if: always()
run: |
. .venv/bin/activate
pip uninstall -y geoclustering
release:
name: Release
runs-on: ubuntu-latest
needs: [checks]
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v1
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install requirements
run: |
pip install --upgrade pip setuptools wheel "twine>=1.11.0"
- name: Prepare environment
run: |
echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV
- name: Download package distribution files
uses: actions/download-artifact@v3
with:
name: package
path: dist
- name: Publish package to PyPI
run: |
twine upload -u '${{ secrets.PYPI_USERNAME }}' -p '${{ secrets.PYPI_PASSWORD }}' dist/*
- name: Publish GitHub release
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# body_path: ${{ github.workspace }}-RELEASE_NOTES.md
prerelease: ${{ contains(env.TAG, 'rc') }}
files: |
dist/*

19
Pipfile Normal file
View File

@@ -0,0 +1,19 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
click = "*"
geojson = "*"
keplergl = "*"
numpy = "*"
pandas = "*"
scikit-learn = "*"
[dev-packages]
black = "*"
wheel = "*"
[requires]
python_version = "3.9"

1124
Pipfile.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
# geocluster
# geoclustering
> 📍 command-line tool for clustering geolocations.
@@ -18,8 +18,8 @@ A cluster is created when a certain number of points (=> `--size`) each are with
Clone the repository:
```sh
git clone https://github.com/fspoettel/geocluster
cd geocluster
git clone https://github.com/bellingcat/geoclustering
cd geoclustering
```
Install keplergl build dependencies:
@@ -37,7 +37,7 @@ pip install .
## Usage
```
Usage: geocluster [OPTIONS] FILENAME
Usage: geoclustering [OPTIONS] FILENAME
Options:
-d, --distance FLOAT (in km) Max. distance between two points in

View File

@@ -1,9 +1,9 @@
import click
import webbrowser
import geocluster.clustering as clustering
import geocluster.encoding as encoding
import geocluster.io as io
import geoclustering.clustering as clustering
import geoclustering.encoding as encoding
import geoclustering.io as io
@click.command()

View File

@@ -68,7 +68,7 @@ def write_visualization(dirname, filename, data):
map.add_data(data=data, name="clusters")
# config configures a default color scheme for our clusters layer.
config_file = resource_filename("geocluster", "kepler_config.json")
config_file = resource_filename("geoclustering", "kepler_config.json")
with open(config_file) as f:
map.config = json.loads(f.read())

11
geoclustering/version.py Normal file
View File

@@ -0,0 +1,11 @@
_MAJOR = "0"
_MINOR = "1"
# On main and in a nightly release the patch should be one ahead of the last
# released build.
_PATCH = "3"
# This is mainly for nightly builds which have the suffix ".dev$DATE". See
# https://semver.org/#is-v123-a-semantic-version for the semantics.
_SUFFIX = ""
VERSION_SHORT = "{0}.{1}".format(_MAJOR, _MINOR)
VERSION = "{0}.{1}.{2}{3}".format(_MAJOR, _MINOR, _PATCH, _SUFFIX)

18
scripts/release.sh Normal file
View File

@@ -0,0 +1,18 @@
#!/bin/bash
set -e
TAG=$(python -c 'from geoclustering.version import VERSION; print("v" + VERSION)')
read -p "Creating new release for $TAG. Do you want to continue? [Y/n] " prompt
if [[ $prompt == "y" || $prompt == "Y" || $prompt == "yes" || $prompt == "Yes" ]]; then
git add -A
git commit -m "Bump version to $TAG for release" || true && git push
echo "Creating new git tag $TAG"
git tag "$TAG" -m "$TAG"
git push --tags
else
echo "Cancelled"
exit 1
fi

View File

@@ -1,12 +1,30 @@
from setuptools import setup
# version.py defines the VERSION and VERSION_SHORT variables.
# We use exec here so we don't import cached_path whilst setting up.
VERSION = {} # type: ignore
with open("geoclustering/version.py", "r") as version_file:
exec(version_file.read(), VERSION)
setup(
name="geocluster",
version="0.1",
description="",
name="geoclustering",
version=VERSION["VERSION"],
description="📍 command-line tool for clustering geolocations.",
long_description=open("README.md").read(),
long_description_content_type="text/markdown",
classifiers=[
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
],
author="Bellingcat",
packages=["geocluster"],
entry_points={"console_scripts": ["geocluster = geocluster.__main__:main"]},
author_email="tech@bellingcat.com",
license="MIT",
packages=["geoclustering"],
package_data={"geoclustering": ["kepler_config.json"]},
keywords=["cluster", "gis", "pattern-analysis"],
entry_points={"console_scripts": ["geoclustering = geoclustering.__main__:main"]},
install_requires=[
"click",
"geojson",

File diff suppressed because it is too large Load Diff

View File

@@ -1,51 +1,51 @@
id,name,lat,lon
1,Bonnibelle Mathwen,40.1324085,64.4911086
2,Fayette Elt,49.6235379,6.2379992
3,Jandy Cooch,-7.5874497,110.7420464
4,Robb Gerbel,22.2455315,-80.3936994
5,Silvie Clipson,40.3418956,21.5118754
6,Kristina Izakoff,30.741991,121.341969
7,Ricky Sweeting,11.2666664,122.5333328
8,Quintin Hazart,35.119385,109.167435
9,Sholom Kilmister,55.7393377,37.6642542
10,Misty Dooher,49.9776657,20.9421091
11,Knox Phython,-8.4985,123.5226
12,Shay Davidy,14.4142191,120.9495257
13,Dre Benoey,-31.4561755,-64.2111608
14,Prudi Tomek,40.692169,117.163821
15,Evey Ealam,31.123586,114.893666
16,Norry Urch,45.8022541,17.497172
17,Valerye Dumberell,50.4438122,48.1450932
18,Freddy Furtado,58.3767785,11.6764538
19,Catarina Samett,50.4034992,26.141892
20,Lidia Muckian,-38.7359018,-72.5903739
21,Stacey Dockrey,29.741986,106.273576
22,Norri Bonhill,60.6184239,16.7769535
23,Florence Pretsel,55.96667,25.15
24,Marten Matantsev,50.9603536,14.3596743
25,Claiborn Everall,43.884893,-0.5046003
26,Randolf Hailey,49.4679131,18.2282007
27,Meggi Kirkebye,57.6888453,11.9943311
28,Denna Le Grove,16.7124054,98.5746649
29,Randy Verheijden,40.4722617,-7.9751886
30,Caterina Blancowe,35.422892,103.352654
31,Joanne Adamovitch,55.9251242,39.4489055
32,Orazio Coppins,,111.6556388
33,Anastassia Bennedsen,45.212088,130.478187
34,Linoel Ruggier,22.066171,107.781956
35,Paulina Moralis,-11.806679,-77.1657716
36,Ambur Outhwaite,59.4033695,17.9443213
37,Laetitia Aspland,37.6086169,138.9089988
38,Dew Moxstead,6.1317011,-75.6382657
39,Berna Klaiser,40.1394691,-8.3092933
40,Krystle Ingold,7.1518505,0.4738293
41,Cassaundra Cuffin,56.6342788,36.885813
42,Malanie Harpin,46.9,109.75
43,Laurence Stothart,39.912765,116.18362
44,Luz O'Siaghail,40.4476834,25.5917918
45,Brittni Garrod,59.0836123,16.18741
46,Karlie Semrad,-8.793392,121.9330894
47,Leigh Allderidge,45.768045,15.947739
48,Ashlin Gogerty,50.3250139,34.9100068
49,Mozelle De Launde,53.31611,40.70806
50,Ema le Keux,41.6315023,19.9310781
id,name,lat,lon
1,Bonnibelle Mathwen,40.1324085,64.4911086
2,Fayette Elt,49.6235379,6.2379992
3,Jandy Cooch,-7.5874497,110.7420464
4,Robb Gerbel,22.2455315,-80.3936994
5,Silvie Clipson,40.3418956,21.5118754
6,Kristina Izakoff,30.741991,121.341969
7,Ricky Sweeting,11.2666664,122.5333328
8,Quintin Hazart,35.119385,109.167435
9,Sholom Kilmister,55.7393377,37.6642542
10,Misty Dooher,49.9776657,20.9421091
11,Knox Phython,-8.4985,123.5226
12,Shay Davidy,14.4142191,120.9495257
13,Dre Benoey,-31.4561755,-64.2111608
14,Prudi Tomek,40.692169,117.163821
15,Evey Ealam,31.123586,114.893666
16,Norry Urch,45.8022541,17.497172
17,Valerye Dumberell,50.4438122,48.1450932
18,Freddy Furtado,58.3767785,11.6764538
19,Catarina Samett,50.4034992,26.141892
20,Lidia Muckian,-38.7359018,-72.5903739
21,Stacey Dockrey,29.741986,106.273576
22,Norri Bonhill,60.6184239,16.7769535
23,Florence Pretsel,55.96667,25.15
24,Marten Matantsev,50.9603536,14.3596743
25,Claiborn Everall,43.884893,-0.5046003
26,Randolf Hailey,49.4679131,18.2282007
27,Meggi Kirkebye,57.6888453,11.9943311
28,Denna Le Grove,16.7124054,98.5746649
29,Randy Verheijden,40.4722617,-7.9751886
30,Caterina Blancowe,35.422892,103.352654
31,Joanne Adamovitch,55.9251242,39.4489055
32,Orazio Coppins,,111.6556388
33,Anastassia Bennedsen,45.212088,130.478187
34,Linoel Ruggier,22.066171,107.781956
35,Paulina Moralis,-11.806679,-77.1657716
36,Ambur Outhwaite,59.4033695,17.9443213
37,Laetitia Aspland,37.6086169,138.9089988
38,Dew Moxstead,6.1317011,-75.6382657
39,Berna Klaiser,40.1394691,-8.3092933
40,Krystle Ingold,7.1518505,0.4738293
41,Cassaundra Cuffin,56.6342788,36.885813
42,Malanie Harpin,46.9,109.75
43,Laurence Stothart,39.912765,116.18362
44,Luz O'Siaghail,40.4476834,25.5917918
45,Brittni Garrod,59.0836123,16.18741
46,Karlie Semrad,-8.793392,121.9330894
47,Leigh Allderidge,45.768045,15.947739
48,Ashlin Gogerty,50.3250139,34.9100068
49,Mozelle De Launde,53.31611,40.70806
50,Ema le Keux,41.6315023,19.9310781
1 id name lat lon
2 1 Bonnibelle Mathwen 40.1324085 64.4911086
3 2 Fayette Elt 49.6235379 6.2379992
4 3 Jandy Cooch -7.5874497 110.7420464
5 4 Robb Gerbel 22.2455315 -80.3936994
6 5 Silvie Clipson 40.3418956 21.5118754
7 6 Kristina Izakoff 30.741991 121.341969
8 7 Ricky Sweeting 11.2666664 122.5333328
9 8 Quintin Hazart 35.119385 109.167435
10 9 Sholom Kilmister 55.7393377 37.6642542
11 10 Misty Dooher 49.9776657 20.9421091
12 11 Knox Phython -8.4985 123.5226
13 12 Shay Davidy 14.4142191 120.9495257
14 13 Dre Benoey -31.4561755 -64.2111608
15 14 Prudi Tomek 40.692169 117.163821
16 15 Evey Ealam 31.123586 114.893666
17 16 Norry Urch 45.8022541 17.497172
18 17 Valerye Dumberell 50.4438122 48.1450932
19 18 Freddy Furtado 58.3767785 11.6764538
20 19 Catarina Samett 50.4034992 26.141892
21 20 Lidia Muckian -38.7359018 -72.5903739
22 21 Stacey Dockrey 29.741986 106.273576
23 22 Norri Bonhill 60.6184239 16.7769535
24 23 Florence Pretsel 55.96667 25.15
25 24 Marten Matantsev 50.9603536 14.3596743
26 25 Claiborn Everall 43.884893 -0.5046003
27 26 Randolf Hailey 49.4679131 18.2282007
28 27 Meggi Kirkebye 57.6888453 11.9943311
29 28 Denna Le Grove 16.7124054 98.5746649
30 29 Randy Verheijden 40.4722617 -7.9751886
31 30 Caterina Blancowe 35.422892 103.352654
32 31 Joanne Adamovitch 55.9251242 39.4489055
33 32 Orazio Coppins 111.6556388
34 33 Anastassia Bennedsen 45.212088 130.478187
35 34 Linoel Ruggier 22.066171 107.781956
36 35 Paulina Moralis -11.806679 -77.1657716
37 36 Ambur Outhwaite 59.4033695 17.9443213
38 37 Laetitia Aspland 37.6086169 138.9089988
39 38 Dew Moxstead 6.1317011 -75.6382657
40 39 Berna Klaiser 40.1394691 -8.3092933
41 40 Krystle Ingold 7.1518505 0.4738293
42 41 Cassaundra Cuffin 56.6342788 36.885813
43 42 Malanie Harpin 46.9 109.75
44 43 Laurence Stothart 39.912765 116.18362
45 44 Luz O'Siaghail 40.4476834 25.5917918
46 45 Brittni Garrod 59.0836123 16.18741
47 46 Karlie Semrad -8.793392 121.9330894
48 47 Leigh Allderidge 45.768045 15.947739
49 48 Ashlin Gogerty 50.3250139 34.9100068
50 49 Mozelle De Launde 53.31611 40.70806
51 50 Ema le Keux 41.6315023 19.9310781