Skip to content

Commit

Permalink
Update and move Python CI, add README
Browse files Browse the repository at this point in the history
  • Loading branch information
sgreenbury committed Sep 5, 2024
1 parent 93e5a81 commit 033ef40
Show file tree
Hide file tree
Showing 3 changed files with 163 additions and 118 deletions.
137 changes: 137 additions & 0 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# This file is autogenerated by maturin v1.5.0
# To update, run
#
# maturin generate-ci github
#
name: Python

on:
push:
branches:
- main
tags:
- "*"
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
linux:
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: >
--release
--manifest-path popgetter_py/Cargo.toml
--out dist
sccache: "true"
before-script-linux: |
sudo apt-get update
sudo apt-get install pkg-config libssl-dev
# See: https://github.com/pola-rs/polars/blob/main/.github/workflows/release-python.yml
- name: Test wheel
if: matrix.target == 'x86_64'
run: |
pip install --force-reinstall --verbose dist/*.whl
python -c 'import popgetter'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}
path: dist

# TODO: currently compilation fails due to API missing for xdg: `xdg::BaseDirectories`
# windows:
# runs-on: windows-latest
# strategy:
# matrix:
# target: [x64, x86]
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-python@v5
# with:
# python-version: '3.11'
# architecture: ${{ matrix.target }}
# - name: Build wheels
# uses: PyO3/maturin-action@v1
# with:
# target: ${{ matrix.target }}
# args: --release --out dist --find-interpreter
# working-directory: popgetter_py
# sccache: 'true'
# - name: Upload wheels
# uses: actions/upload-artifact@v4
# with:
# name: wheels-windows-${{ matrix.target }}
# path: dist
# working-directory: popgetter_py

macos:
runs-on: macos-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: >
--release
--manifest-path popgetter_py/Cargo.toml
--out dist
sccache: "true"
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.target }}
path: dist

sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: >
--manifest-path popgetter_py/Cargo.toml
--out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist

# TODO: uncomment for release to PyPI
# release:
# name: Release
# runs-on: ubuntu-latest
# if: startsWith(github.ref, 'refs/tags/')
# needs: [linux, windows, macos, sdist]
# steps:
# - uses: actions/download-artifact@v4
# - name: Publish to PyPI
# uses: PyO3/maturin-action@v1
# env:
# MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
# with:
# command: upload
# args: --non-interactive --skip-existing wheels-*/*
118 changes: 0 additions & 118 deletions popgetter_py/.github/workflows/CI.yml

This file was deleted.

26 changes: 26 additions & 0 deletions popgetter_py/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# popgetter_py

Python bindings for popgetter library for searching and downloading [popgetter](https://github.com/Urban-Analytics-Technology-Platform/popgetter) data.

## Quickstart

- Install [Python](https://www.python.org/)
- Install [Rust](https://www.rust-lang.org/tools/install)
- Install [maturin](https://github.com/PyO3/maturin)
- Create a virtual environment and activate (e.g. with zsh):
```shell
python -m venv .venv
source .venv/bin/activate
```
- Install popgetter
```shell
maturin develop --release
```
- Run popgetter with a data requst specification (see e.g. [test_recipe.json](../test_recipe.json)):
```python
import json
import popgetter
with open("../test_recipe.json", "r") as f:
df = popgetter.download_data_request(json.load(f))
print(df.head())
```

0 comments on commit 033ef40

Please sign in to comment.