Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding Python library to client #1

Merged
merged 30 commits into from
Sep 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
e46b858
refactor(models): saving some changes in prep of python library
slyons Aug 14, 2024
f4ba4a9
feat(all): adding python library wrapper
slyons Aug 15, 2024
e99e898
fix(python-client): fixing paged search results to use a PyList instead
slyons Aug 15, 2024
23a7568
build(cargo): re-adding serde-pyobject after mistakingly removing it
slyons Aug 15, 2024
c8cb4a6
ci(ci_yaml): adding CI yaml for maturin
slyons Aug 15, 2024
c744675
ci(ci_yaml): adding missing feature flag to build
slyons Aug 15, 2024
32fffc1
ci(ci_yaml): typos in ci.yaml
slyons Aug 15, 2024
cd93911
ci(ci_yaml): trying to get working directory working
slyons Aug 15, 2024
8fd24ef
ci(ci_yaml): abandoning working-directory approach
slyons Aug 15, 2024
ead0470
fix(cargo): adding vendored openssl to help with build
slyons Aug 15, 2024
9c8d084
ci(ci_yaml): fixing build for linux targets
slyons Aug 15, 2024
669be07
refactor(models): removing unnecessary python classes
slyons Aug 15, 2024
92bc8cf
ci(ci_yaml): removing platform due to bad instruction
slyons Aug 15, 2024
9fb8ffb
test(rust-test): refactoring Rust tests
slyons Aug 20, 2024
c862d2d
test(szurubooru-integration-test): removing old integration test, rel…
slyons Aug 21, 2024
f2ae459
fix(python): refactoring python client
slyons Aug 21, 2024
4d71a44
test(python): adding python integration test
slyons Aug 21, 2024
5d0d8ef
refactor(python): adding custom python modules to possibly help with …
slyons Aug 21, 2024
67c8456
docs(docs): adding initial mkdocs build
slyons Aug 21, 2024
3781d6f
ci(ci_yaml): adding release on tag and unit/integration test running
slyons Aug 22, 2024
d8887b4
ci(ci_yaml): forgot to check out code first for unit tests :/
slyons Aug 22, 2024
748ca52
ci(ci_yaml): adding venv to python integration test
slyons Aug 22, 2024
2d998a0
docs(szurubooru-client-docs): deleting old documentation directory
slyons Sep 5, 2024
ba6e45d
docs(gitignore): ignoring python docs build artifacts
slyons Sep 5, 2024
3611849
docs(docs): in-code fixes for documentation
slyons Sep 5, 2024
bb888bb
test(python-sync): fixing the python test suite with new exception name
slyons Sep 5, 2024
d4b1758
docs(pydocs): full python wrapper documentation
slyons Sep 5, 2024
7e9b059
docs(license): adding MIT license
slyons Sep 5, 2024
2769297
bump: version 0.4.0 → 0.5.0
slyons Sep 5, 2024
f90bd5f
docs(changelog): updating the changelog for the new release
slyons Sep 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
234 changes: 234 additions & 0 deletions .github/workflows/CI.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,234 @@
# This file is autogenerated by maturin v1.7.0
# To update, run
#
# maturin generate-ci github
#
name: CI

on:
push:
branches:
- main
- master
tags:
- '*'
pull_request:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
unit_test:
name: Unit tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: cargo test --all-features
rust_integration_test:
name: Rust Integration test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cd tests/rust-test && ./test.sh
python_integration_test:
name: Python Integration test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: getsentry/[email protected]
id: venv
with:
python-version: 3.10.7
- run: cd tests/python-sync && ./test.sh
linux:
runs-on: ${{ matrix.platform.runner }}
defaults:
run:
working-directory: ./szurubooru-client
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-latest
target: armv7
- runner: ubuntu-latest
target: ppc64le
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: -F python --release --out dist --find-interpreter -m szurubooru-client/Cargo.toml
sccache: 'true'
manylinux: auto
before-script-linux: |
# If we're running on rhel centos, install needed packages.
if command -v yum &> /dev/null; then
yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic

# If we're running on i686 we need to symlink libatomic
# in order to build openssl with -latomic flag.
if [[ ! -d "/usr/lib64" ]]; then
ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so
fi
else
# If we're running on debian-based system.
apt update -y && apt-get install -y libssl-dev openssl pkg-config
fi
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: dist

musllinux:
runs-on: ${{ matrix.platform.runner }}
defaults:
run:
working-directory: ./szurubooru-client
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-latest
target: armv7
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: -F python --release --out dist --find-interpreter -m szurubooru-client/Cargo.toml
sccache: 'true'
manylinux: musllinux_1_2
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist

windows:
runs-on: ${{ matrix.platform.runner }}
defaults:
run:
working-directory: ./szurubooru-client
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
- runner: windows-latest
target: x86
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: -F python --release --out dist --find-interpreter -m szurubooru-client/Cargo.toml
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
path: dist

macos:
runs-on: ${{ matrix.platform.runner }}
defaults:
run:
working-directory: ./szurubooru-client
strategy:
matrix:
platform:
- runner: macos-12
target: x86_64
- runner: macos-14
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: -F python --release --out dist --find-interpreter -m szurubooru-client/Cargo.toml
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
path: dist

sdist:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./szurubooru-client
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist -m szurubooru-client/Cargo.toml
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist

python_release:
name: Python Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux, musllinux, 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-*/*
crate_release:
name: Crates.io Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux, musllinux, windows, macos, sdist]
steps:
- uses: actions/checkout@v4
- name: Cargo publish
run: cargo publish --token ${CRATES_TOKEN}
env:
CRATES_TOKEN: ${{ secrets.CRATES_TOKEN }}
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ szurubooru-integration-test/szurubooru/data/*
szurubooru-integration-test/szurubooru/pgsql/*
szurubooru-integration-test/szurubooru/server/*
**/.DS_Store
**/target
*.so
*.pyc
/docs/_build/**
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
## v0.5.0 (2024-09-05)

### Feat

- **all**: adding python library wrapper

### Fix

- **python**: refactoring python client
- **cargo**: adding vendored openssl to help with build
- **python-client**: fixing paged search results to use a PyList instead

### Refactor

- **python**: adding custom python modules to possibly help with documentation
- **models**: removing unnecessary python classes
- **models**: saving some changes in prep of python library

## v0.4.0 (2024-08-12)

### Feat
Expand Down
Loading
Loading