Skip to main content

Synapse integration utilities with asyncio support.

Project description

synapsis

Synapse integration utilities with asyncio support.

Provides helper methods for common Synapse operations and seamless asyncio integration for all methods.

Installation

pip install synapsis

Usage

Configure authentication and the synapseclient:

from synapsis import Synapsis

# No configuration is necessary if using environment variables or the default synapse config file.
# For user/pass, set:
#   SYNAPSE_USERNAME=
#   SYNAPSE_PASSWORD=
# For auth token, set:
#   SYNAPSE_AUTH_TOKEN=
# For Synapse Config file, have a valid config file in:
#   ~/.synapseConfig
# Or, have the environment variable set:
#   SYNAPSE_CONFIG_FILE=

# Configure for user/pass:
Synapsis.configure(email='', password='')

# Configure for auth token:
Synapsis.configure(auth_token='')

# Configure for non-default Synapse Config file:
Synapsis.configure(synapse_args={'configPath': '~/.synapseConfigAdmin'})

# Configure the Synapse client:
Synapsis.configure(synapse_args={'cache_root_dir': '/tmp/synapse', 'silent': False})

# Force the synapseclient to be single threaded:
Synapsis.configure(synapse_args={'multi_threaded': False})

Inject authentication params into argparse.

import argparse
from synapsis import cli as synapsis_cli


def main():
    parser = argparse.ArgumentParser(...)
    synapsis_cli.inject(parser)

    args = parser.parse_args
    synapsis_cli.configure(args)
    # or with logging in.
    synapsis_cli.configure(args, login=True)

This will inject the following args.

options:
  -u USERNAME, --username USERNAME
                        Synapse username.
  -p PASSWORD, --password PASSWORD
                        Synapse password.
  --auth-token AUTH_TOKEN
                        Synapse auth token.
  --synapse-config SYNAPSE_CONFIG
                        Path to Synapse configuration file.

Login to Synapse

from synapsis import Synapsis

Synapsis.login()

Method Chaining and Piping

Synchronous: Synapsis.Chain.<your-method-chain>.Result()

Asynchronous: await Synapsis.Chain.<your-method-chain>

Examples:

from synapsis import Synapsis

# Chaining
filehandle = Synapsis.Chain.get('syn123').get('_file_handle', None).Result()
# or
filehandle = await Synapsis.Chain.get('syn123').get('_file_handle', None)

# Piping
filehandle = Synapsis.Chain.get('syn123').Pipe.Utils.get_filehandle().Result()
# or
filehandle = await Synapsis.Chain.get('syn123').Pipe.Utils.get_filehandle()

Calling a Synapsis, Synapsis.Utils, synapseclient, or synapseutils method

A method called directly on Synapsis will resolve in the following order.

  1. Synapsis
  2. Synapsis.Synapse

Utils and SynapseUtils need to be called directly.

  • Synapsis.Utils
  • Synapsis.SynapseUtils

NOTE: For Synapsis.SynapseUtils (synapseutils) you do not have to call the method with the syn arg, it will be set to the current Synapsis.Synapse instance automatically.

Calling an Asynchronous Method

Start by calling Synapsis.Chain then the rest of the method chain.

from synapsis import Synapsis


async def my_async_method():
    # Any resolvable method on `Synapsis` can be called asynchronously. 
    await Synapsis.Chain.configure(...)
    await Synapsis.Chain.login()

    entity = await Synapsis.Chain.Synapse.get(...)
    # or
    entity = await Synapsis.Chain.get(...)

    copy = await Synapsis.Chain.SynapseUtils.copy(...)
    entity = await Synapsis.Chain.Utils.find_entity(...)

Calling a Synchronous Method

Call the method directly on Synapsis.

from synapsis import Synapsis


def my_sync_method():
    Synapsis.configure(...)
    Synapsis.login()

    entity = Synapsis.Synapse.get(...)
    # or
    entity = Synapsis.get(...)

    copy = Synapsis.SynapseUtils.copy(...)
    entity = Synapsis.Utils.find_entity(...)

Development Setup

git clone https://github.com/ki-tools/synapsis-py.git
cd synapsis-py
pipenv --python 3.10
pipenv shell
make pip_install

Run tests:

  1. Rename .env.template to .env and set the variables in the file.
  2. Run make test or tox

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

synapsis-0.0.8.tar.gz (20.3 kB view details)

Uploaded Source

Built Distribution

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

synapsis-0.0.8-py3-none-any.whl (28.1 kB view details)

Uploaded Python 3

File details

Details for the file synapsis-0.0.8.tar.gz.

File metadata

  • Download URL: synapsis-0.0.8.tar.gz
  • Upload date:
  • Size: 20.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for synapsis-0.0.8.tar.gz
Algorithm Hash digest
SHA256 366a3c8f46c8543b3207baa6e2494bb934a12179d03d1af1cb38c3d7340c25ba
MD5 46f81b3050c87c647a43b286098aec32
BLAKE2b-256 8b68b52b743c5cef5880b09f159b8db8934dac44334dae06c9eed755db47aeb3

See more details on using hashes here.

File details

Details for the file synapsis-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: synapsis-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 28.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for synapsis-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 27ebf13403f28c1b958ec485bf2a498d7a284648480ab8a9f1f09c783f190a27
MD5 4cc1da09df2cfd75b2fc363b791e7056
BLAKE2b-256 8d2614857faaa73ee3886adb8d34978d437cc5dfe24a23da817f04f74a270152

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