Skip to main content

Python bindings for the flux resource manager API

Project description

Flux Python Bindings

🐍️ You called me?

Hello! You've found the flux Python bindings, an experiment to build and deploy Flux to Pypi without needing to store code alongside Flux. The goal of this experiment is to test them separately. This was originally developed at vsoch/flux-python and has been ported here to automate more officially. The following guides might be useful to you:

Helper Install

If you don't want to figure out your flux version and install with pip directory (per instructions in manual install) we provide a helper script install-flux-python.sh that will:

  1. Determine that Flux and Python are installed with pip
  2. Parse the version of Flux on your PATH
  3. Derive the version and run the command for you!

You'll first want to make sure that flux is on your path, as is a python3 executable with pip installed as a module alongside it. And you can run it as follows:

wget https://raw.githubusercontent.com/flux-framework/flux-python/main/script/install-flux-python.sh
chmod +x ./install-flux-python.sh
./install-flux-python.sh

If a version is missing on pypi or you otherwise have a bug, please open an issue here.

Manual Install

Since we need to link to Flux libraries, you are advised to install flux and flux-security in the same location that will be discovered via the executable "flux," so typically /usr or /usr/local. You will need wheel installed:

$ pip install wheel

You can do either:

# Find the flux version on your system
flux --version

# Install the bindings that match that version
pip install flux-python==0.48.0

And if you are having trouble with the WCI cache, you can also wget the file directly from pypi and install the .tar.gz directly.

wget https://files.pythonhosted.org/packages/25/fb/02951d80e44a19db291f0e7370d4e7d82c0c1b17709a37913881f958dff7/flux-python-0.48.0rc0.tar.gz
pip install flux-python-0.48.0rc0.tar.gz

If you install to a local (personal) location (e.g., $HOME/.local) you'll need to add this to your PYTHONPATH

# The directory "flux" is under the site-packages here
export PYTHONPATH=$HOME/.local/lib/python3.7/site-packages

You can then do some basic testing.

$ flux start --test-size=4

Ensure your PYTHONPATH is correct here And import flux.

$ ipython
import flux
flux.Flux()

Development

We provide a .devcontainer environment you can open in VSCode to have an environment ready to go with Flux (and Flux Security). You can follow the instructions in the DevContainer to build the Flux Python bindings. By default, this environment installs the latest flux-core. If you want to build a custom version with Flux core you can do:

rm -rf ~/flux-core
export FLUX_VERSION=0.49.0
wget https://github.com/flux-framework/flux-core/releases/download/v${FLUX_VERSION}/flux-core-${FLUX_VERSION}.tar.gz
tar -xzvf flux-core-${FLUX_VERSION}.tar.gz
sudo mv flux-core-${FLUX_VERSION} ~/flux-core
rm flux-core-${FLUX_VERSION}.tar.gz
cd ~/flux-core
./configure --prefix=/usr
make
sudo make install

And then copy over the Python source to "flux" and build your custom archives and/or wheels:

$ rm -rf /workspaces/flux-python/flux
$ cp -R src/bindings/python/flux /workspaces/flux-python/flux
$ cd /workspaces/flux-python
# Archive
$ python3 setup.py sdist

# Wheel (will build for the python version you've targeted)
# This isn't currently being done but is a future TODO!
$ python3 setup.py sdist bdist_wheel

You can build versions of the Python wheels across 3.6 to 3.10 like:

# only need to run this once in the container
/bin/bash ./docker/install-mamba.sh

# And this to install the current Flux + version in setup.py as a wheel
# The number is the build number
/bin/bash ./docker/build-wheels.sh 2

And if you want to upload:

$ twine upload dist/*.tar.gz

Automation

In order to (eventually) support a workflow to check for a release, get the release's flux assets and build, we have a workflow script that will:

  • Get the latest flux releases
  • Compare to the latest pypi releases
  • If there is a new release (from Flux on GitHub) not in pypi, build and release

And the script also can take an optional version string that will find and build a version explicitly. You might (to test) do:

$ export GITHUB_TOKEN=xxxxxxxxxxxxx
$ python .github/scripts/check_releases.py flux-framework --version 0.46.0

That basically checks if there should be a build. It will use the container provided here to install a custom version of flux core that builds the release.

Release

SPDX-License-Identifier: LGPL-3.0

LLNL-CODE-764420

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flux_python-0.76.0.tar.gz (314.0 kB view details)

Uploaded Source

Built Distributions

flux_python-0.76.0-0-cp311-cp311-any.whl (502.6 kB view details)

Uploaded CPython 3.11

flux_python-0.76.0-0-cp310-cp310-any.whl (502.6 kB view details)

Uploaded CPython 3.10

flux_python-0.76.0-0-cp39-cp39-any.whl (502.6 kB view details)

Uploaded CPython 3.9

flux_python-0.76.0-0-cp38-cp38-any.whl (502.5 kB view details)

Uploaded CPython 3.8

File details

Details for the file flux_python-0.76.0.tar.gz.

File metadata

  • Download URL: flux_python-0.76.0.tar.gz
  • Upload date:
  • Size: 314.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for flux_python-0.76.0.tar.gz
Algorithm Hash digest
SHA256 6b06e608f2a17b6253cf3e59a7b5eeb0304cc5298f83cde1354dbd08de40c2ec
MD5 baff0f3e7dd16ffae99944f65950f316
BLAKE2b-256 5c2f86b38c17cfe138d8dd164df962a0ba854313243c079c84f6de23ecaa57be

See more details on using hashes here.

File details

Details for the file flux_python-0.76.0-0-cp311-cp311-any.whl.

File metadata

File hashes

Hashes for flux_python-0.76.0-0-cp311-cp311-any.whl
Algorithm Hash digest
SHA256 33f90edc7a2942adda3333363060dd4c44149db053e809bd7d9411fe0c436fcf
MD5 4419a1eac827ee50d5b3d63fd59dd642
BLAKE2b-256 d9ab1670a93ca059a5ea354de11329f2619abc859a5c9c60b98be6f61782a013

See more details on using hashes here.

File details

Details for the file flux_python-0.76.0-0-cp310-cp310-any.whl.

File metadata

File hashes

Hashes for flux_python-0.76.0-0-cp310-cp310-any.whl
Algorithm Hash digest
SHA256 9b137b2ba52cc08ff82a383d1f73cdd60aaf955a813be46f74109734faf52154
MD5 dea97bb9bbb9eee5fdfd995d33154bfa
BLAKE2b-256 d19274b3d836a6b529f9ccd737957b71d16ea0865da746c6199b2f7c7f151ae8

See more details on using hashes here.

File details

Details for the file flux_python-0.76.0-0-cp39-cp39-any.whl.

File metadata

  • Download URL: flux_python-0.76.0-0-cp39-cp39-any.whl
  • Upload date:
  • Size: 502.6 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for flux_python-0.76.0-0-cp39-cp39-any.whl
Algorithm Hash digest
SHA256 ef623f2d5777550af585ffacd75621563ff032314bb82735c9288e0937076dba
MD5 f60c700310566c774583cdca13d4dc0f
BLAKE2b-256 3799130d0bcbd7f5306c5169e022ad34d6f5629db2caa6ca00a2e41e33d3febc

See more details on using hashes here.

File details

Details for the file flux_python-0.76.0-0-cp38-cp38-any.whl.

File metadata

  • Download URL: flux_python-0.76.0-0-cp38-cp38-any.whl
  • Upload date:
  • Size: 502.5 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for flux_python-0.76.0-0-cp38-cp38-any.whl
Algorithm Hash digest
SHA256 d14a83ff899adbca263c7122c151813e90642ffe571073909f23545f5da1eb06
MD5 aedd4233d7a667bacdafc6ee325d5dec
BLAKE2b-256 b6969a14c2abcc61ccdb9019ff228ec4799df174a4d92247e1be96f17d105ee2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page