Skip to main content

The Python Client for PolyAPI, the IPaaS by Developers for Developers

Project description

PolyAPI Python Library

The PolyAPI Python Library lets you use and define PolyAPI functions using Python.

PolyAPI Quickstart

1. Install Libraries

First install the client.

We recommend the use of venv so you can have multiple projects each with separate credentials:

python -m venv myvenv
source myvenv/bin/activate
pip install polyapi-python

Replace myvenv with whatever you'd like your venv to be named!

For more on Python virtual environments, we recommend this venv primer.

However, if you only need to use polyapi with a single project, you can do a basic install:

pip install polyapi-python

2. Generate Your Functions

Now you can run the following to generate your library

python -m polyapi generate

You will be prompted to enter the Poly server url you use and your Poly API key.

You can also provide the key and url as environment variables (useful for deployment):

POLY_API_KEY='your_key'
POLY_API_BASE_URL='your_server'  # e.g. na1.polyapi.io

3. Test

That's it! Now open up a test file and you can run some code like so:

from polyapi import poly
print(poly.polyapi.function.api.list(my_server, my_api_key))

Add New Server Functions

To add a new server function, please follow the quickstart. Then you can add a server function like so:

python -m polyapi --context mycontext --description mydesc --server function add <function_name> foo.py

The code in foo.py should contain a single defined function named the same as your <function_name> variable.

So for example, if you want to add a function named bar, your file foo.py would look like this:

def bar():
    return "Hello World"

See Server Function Logs

In order to see function logs, please first set logsEnabled to true in Canopy for the function.

https://na1.polyapi.io/canopy/polyui/collections/server-functions

Then in your code, get the poly logger and log with it like so:

logger = logging.getLogger("poly")
def bar():
    logger.warning("I AM THE LOG")
    return "Hello World"

Finally, click the "Show Logs" button to see your server function logs in Canopy!

Complex Types In Server Functions

You can define arbitrarily complex argument and return types using TypedDicts.

NOTE: you must use TypedDict from typing_extensions, not from the base typing module.

from typing_extensions import TypedDict


class Foobar(TypedDict):
    count: int


def bar(n: int) -> Foobar:
    return Foobar(count=n)

Pypi

This library is hosted on Pypi. You can find the latest version on the pypi polyapi-python project.

Upgrade

To upgrade your library to the latest version, pass the upgrade flag.

pip install polyapi-python --upgrade

Pre-Release

To upgrade your library to the latest dev version, pass the --pre flag.

pip install polyapi-python --pre --upgrade

Change Your API Key

If you need to change your API key or what server you are pointing to, you can run:

python -m polyapi setup

Unit Tests

To run this library's unit tests, please clone the repo then run:

python -m unittest discover

Linting

The flake8 config is at the root of this repo at .flake8.

When hacking on this library, please enable flake8 and add this line to your flake8 args (e.g., in your VSCode Workspace Settings):

--config=.flake8

Mypy Type Improvements

This script is handy for checking for any mypy types:

./check_mypy.sh

Please ignore [name-defined] errors for now. This is a known bug we are working to fix!

Support

If you run into any issues or want help getting started with this project, please contact support@polyapi.io .

Project details


Release history Release notifications | RSS feed

This version

0.3.8

Download files

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

Source Distribution

polyapi_python-0.3.8.tar.gz (58.0 kB view details)

Uploaded Source

Built Distribution

polyapi_python-0.3.8-py3-none-any.whl (53.1 kB view details)

Uploaded Python 3

File details

Details for the file polyapi_python-0.3.8.tar.gz.

File metadata

  • Download URL: polyapi_python-0.3.8.tar.gz
  • Upload date:
  • Size: 58.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for polyapi_python-0.3.8.tar.gz
Algorithm Hash digest
SHA256 b7a92c8af565119ca11ebdca4af1a489e89c148d1e8ac423546b2ca37e71c57d
MD5 ced58e1d6c1bc89b3d2b32bb1b72f8f5
BLAKE2b-256 a0c0e1c3a35b7ce9fb8e133221612e681c8e209f2c0272357c5cd84f0189caf2

See more details on using hashes here.

Provenance

The following attestation bundles were made for polyapi_python-0.3.8.tar.gz:

Publisher: polyapi-update-python-package.yml on polyapi/polyapi-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file polyapi_python-0.3.8-py3-none-any.whl.

File metadata

  • Download URL: polyapi_python-0.3.8-py3-none-any.whl
  • Upload date:
  • Size: 53.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for polyapi_python-0.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 2ae9982d953b671bc1cc691a20bed5f66501ecf6565cda239ee919cdeec3ad9e
MD5 df39c03a4f2e6c05ea066eb6e7b005d8
BLAKE2b-256 d36215e0fbb9c0c89b4bec785891d400d378aa175eb04b2127e9497cfcc3583c

See more details on using hashes here.

Provenance

The following attestation bundles were made for polyapi_python-0.3.8-py3-none-any.whl:

Publisher: polyapi-update-python-package.yml on polyapi/polyapi-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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