Skip to main content

OBiBa/Opal python client.

Project description

Opal Python CI

This Python-based command line tool allows to access to a Opal server through its REST API. This is the perfect tool for automating tasks in Opal using shell scripts.

See also the Opal R Client which offers a comprehensive programming interface.

Usage

Install with:

pip install obiba-opal

Development

This project uses uv for dependency management and packaging.

Setup Development Environment

  1. Install uv:

See uv installation.

  1. Install dependencies:
uv sync
  1. Run tests:
uv run pytest
  1. Build the package:
uv build

Requirements

  • Python 3.10 or higher
  • uv (for development)

CLI

To get the options of the command line:

opal --help

This command will display which sub-commands are available. For each sub-command you can get the help message as well:

opal <subcommand> --help

The objective of having sub-command is to hide the complexity of applying some use cases to the Opal REST API. More sub-commands will be developed in the future.

API

Opal Python client can be easily extended by using the exposed classes. The classes *Command return an Opal task object, to be followed with the TaskService. The classes *Service perform immediate operations.

from obiba_opal import OpalClient, HTTPError, Formatter, ImportCSVCommand, TaskService, FileService, DictionaryService

# if 2-factor auth is enabled, user will be asked for the secret code
# Personal access token authentication is also supported (and recommended)
client = OpalClient.buildWithAuthentication(server='https://opal-demo.obiba.org', user='administrator', password='password')

try:
    # upload a local CSV data file into Opal file system
    fs = FileService(client)
    fs.upload_file('./data.csv', '/tmp')

    # import this CSV file into a project
    task = ImportCSVCommand(client).import_data('/tmp/data.csv', 'CNSIM')
    status = TaskService(client).wait_task(task['id'])
    
    # clean data file from Opal
    fs.delete_file('/tmp/data.csv')

    if status == 'SUCCEEDED':
        dico = DictionaryService(client)
        table = dico.get_table('CNSIM', 'data')
        # do something ...
        dico.delete_tables('CNSIM', ['data'])
    else:
        print('Import failed!')
        # do something ...
except HTTPError as e:
    Formatter.print_json(e.error, True)
finally:
    client.close()

Mailing list

Have a question? Ask on our mailing list!

obiba-users@googlegroups.com

http://groups.google.com/group/obiba-users

License

OBiBa software are open source and made available under the GPL3 licence. OBiBa software are free of charge.

OBiBa acknowledgments

If you are using OBiBa software, please cite our work in your code, websites, publications or reports.

"The work presented herein was made possible using the OBiBa suite (www.obiba.org), a software suite developed by Maelstrom Research (www.maelstrom-research.org)"

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

obiba_opal-6.1.0.tar.gz (125.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

obiba_opal-6.1.0-py3-none-any.whl (74.5 kB view details)

Uploaded Python 3

File details

Details for the file obiba_opal-6.1.0.tar.gz.

File metadata

  • Download URL: obiba_opal-6.1.0.tar.gz
  • Upload date:
  • Size: 125.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for obiba_opal-6.1.0.tar.gz
Algorithm Hash digest
SHA256 aad21b78144e06d28d2057fa2e8f2690a2cba792d58c84b36614ef37349ff2c5
MD5 2ba65cbf025578afa47ecf356a1f491e
BLAKE2b-256 6e8fa33f6c78f96e36d7218b1aa27d26cc8c236cf0b6c43ab42b245d0e1450d9

See more details on using hashes here.

File details

Details for the file obiba_opal-6.1.0-py3-none-any.whl.

File metadata

  • Download URL: obiba_opal-6.1.0-py3-none-any.whl
  • Upload date:
  • Size: 74.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for obiba_opal-6.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a619b2d77c97a24e444f25f1a7c46fd5fd050894a9287f948d1bad6b3268c63d
MD5 d92e87f07eb98d4e01b2ad3ecadb4368
BLAKE2b-256 09896f9ce3e3485e29342098bc3fdd330abaef0f67776afbf5b981a6e8a78ae8

See more details on using hashes here.

Supported by

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