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.73.0.tar.gz (296.7 kB view details)

Uploaded Source

Built Distributions

flux_python-0.73.0-0-cp311-cp311-any.whl (483.8 kB view details)

Uploaded CPython 3.11

flux_python-0.73.0-0-cp310-cp310-any.whl (483.8 kB view details)

Uploaded CPython 3.10

flux_python-0.73.0-0-cp39-cp39-any.whl (483.8 kB view details)

Uploaded CPython 3.9

flux_python-0.73.0-0-cp38-cp38-any.whl (483.7 kB view details)

Uploaded CPython 3.8

File details

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

File metadata

  • Download URL: flux_python-0.73.0.tar.gz
  • Upload date:
  • Size: 296.7 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.73.0.tar.gz
Algorithm Hash digest
SHA256 ee1451cb818957afe9fd0cae8c8405b2b1f20292616ab386e75cdc47d677cfaa
MD5 5c570f79dd6f0aadf506a018529f25a3
BLAKE2b-256 8ce46b55b31f968663efb8e4ba4a0cfd75a9eba7ea098be14bbb822d86bcc6b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flux_python-0.73.0-0-cp311-cp311-any.whl
Algorithm Hash digest
SHA256 d0b095bd460c1afa725edffce0dfcaf67da68b53aa0cbecdda64ad029449544d
MD5 6f3de88e8e7a738e21d5db860de687e9
BLAKE2b-256 2658e30ffac8face970ca88c813980463f828d9418db5c495a76abdaea26b47f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for flux_python-0.73.0-0-cp310-cp310-any.whl
Algorithm Hash digest
SHA256 62a2f1f36061abe4907ef8a21f5e4fbf051ffa376a4eb33ba1cff71a1460abd0
MD5 7b08fd1b30cad7a905690e9eb9aa87a1
BLAKE2b-256 ff410e814b7177fce35a16a2b0b9caf1e96fdbbbabac25ca24d659e4e36ca7b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: flux_python-0.73.0-0-cp39-cp39-any.whl
  • Upload date:
  • Size: 483.8 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.73.0-0-cp39-cp39-any.whl
Algorithm Hash digest
SHA256 d600402ff9a146e129b4726af118b08a098ffac671b686a5c40bcbfe61adce56
MD5 a0fe0cea7868505e3010c55117759454
BLAKE2b-256 1d81447dfccbcbfe6616c7c7abaebfe712a50377eb1f514ffe25a8039308d6a1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: flux_python-0.73.0-0-cp38-cp38-any.whl
  • Upload date:
  • Size: 483.7 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.73.0-0-cp38-cp38-any.whl
Algorithm Hash digest
SHA256 f99d3559a4820cc4681814ba3053ad29f54ee0eccd72a28b767e6457292af6cf
MD5 afe18831dc3491c2f8137fe71c136e89
BLAKE2b-256 7a7756ceca985fe6e8d937981c736b1a7707a7cd12f53a80783d5d5e0a884c1f

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