Skip to main content

Crux Python Client

A Python library for interacting with the Crux platform.

The aim of this module is to be a Pythonic way to use the Crux API reliably. It covers client functionality including scanning subscriptions, getting delivery status, and downloading files.

Python 3.6+ is supported.

See crux-python.cruxinformatics.com for detailed documentation.

Installation

Install a recent version of Python, and a Python dependency and virtual environment manager like pipenv. On macOS run:

brew install python
brew install pipenv

Install crux from PyPI in a virtual environment, and get a shell in that environment:

mkdir -p crux_example
cd crux_example
pipenv install "crux==1.4"
pipenv shell

Getting Started

Create a file, like example.py, and use the crux module:

from crux import Crux

conn = Crux()
identity = conn.whoami()
print("I am", identity.email)

Run the script:

HISTCONTROL=ignoreboth
 export CRUX_API_KEY='YOUR_API_KEY'
python3 example.py

See the installation and authentication documentation for details.

Development

Python 3.7 is required for development, which can be installed with brew install python. For heavy development work, every supported version of Python must be installed, see the pyenv documentation below.

Pipenv should be used to manage dependancies during development.

  1. Install Pipenv, on macOS run brew install pipenv
  2. git clone https://github.com/cruxinformatics/crux-python.git
  3. cd crux-python
  4. pipenv install --dev to install the dependancies
  5. pipenv shell to get a shell in the virtual environment

Multiple Python versions

To be able to run tests against all supported Python versions, you must have all supported Python versions installed. The test runner will look for binaries called python2.7, python3.5, python3.6, etc. There are multiple ways to install Python versions, we'll document using pyenv.

  1. brew install pyenv to install

  2. Put eval "$(pyenv init -)" towards the end of the shell configuration file (~/.bashrc or ~/.bash_profile), because it manipulates $PATH, for example:

    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
    
  3. Open a new Terminal to get an updated shell

  4. Install required/missing Python versions (this assumes you have Python 2.7 already installed, otherwise install it too):

    pyenv install 3.5.6
    pyenv install 3.6.6
    pyenv install 3.7.0
    
  5. pyenv global system 3.5.6 3.6.6 3.7.0 to make all the Python versions available

  6. If you already have pipenv virtual environment, remove it with pipenv --rm so it detects the Python versions

  7. pipenv install --dev to install all the dependancies

  8. pipenv shell to get a shell in the virtual environment

Running tests

We use Nox to automate running tests, and use make to automate running some commands. These commands should be run within a shell created with pipenv shell.

# Run all tests: lint, unit, format_check
make test
# Or
nox

# Run only lint checks
make lint
# Or
nox -s lint

# Run unit tests against all available Python versions
make unit
# Or
nox -s unit

# Run integration tests agains all available Python versions
 export CRUX_API_KEY="12345"
export CRUX_API_HOST="https://api.example.com"
make integration
# Or
 export CRUX_API_KEY="12345"
export CRUX_API_HOST="https://api.example.com"
nox --s integration

# Check formatting
make format_check
# Or
nox -s format_check

# List all commands available
make
# Or
nox -l

# Run unit test only against Python 3.7
nox -s unit-3.7

# Reformat code
make format

# Generate Sphinx HTML documentation
make docs

Running test scripts

Manual testing scripts could be found at tests/regression. In order to run one, i.e. client.py, follow the steps:

  1. copy corresponding .env.dist file as .env file (if you plan to run client.py, copy client.env.dist as client.env)
  2. fill variables within .env file
  3. launch the script (while being in the tests/regression folder, execute python client.py)

Metadata

Release files for crux 1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crux 1.4
File Size Uploaded
crux-1.4.tar.gz 32.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for crux 1.4
File Interpreter ABI Platform
crux-1.4-py3-none-any.whl Python 3 none any Details

Total release size: 69.3 kB

Release files / crux-1.4.tar.gz

Download URL crux-1.4.tar.gz
Size 32.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0e2157c3075ab9fd1bfe2e6f7d0a19cf17adfc2298b5413c3da704c6addecd42
BLAKE2b-256 checksum
How to use checksums
b61a1e0be0e999a83e71d31587a2105b5cda4bbacba2544570a22b19fafef8aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.9

Release files / crux-1.4-py3-none-any.whl

Download URL crux-1.4-py3-none-any.whl
Size 37.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a8bc3e965cd65a299f0c8f10d547dac410652f799ca71b7f0bdde324e4dac2d
BLAKE2b-256 checksum
How to use checksums
411b4f29ce623c1b8699f000eae09b6f813e8a68fcef5d8084adf8306c5b87ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

1.4 This release

2 release files

1.3

2 release files

1.2

2 release files

1.1

2 release files

0.0.22

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page