Skip to main content

An extension for TRAC D.A.P. that lets models connect to HTTP endpoints

Project description

tracdap

PyPI Version Python Versions Packaging status Compliance status FINOS - Incubating

HTTP Extension for the TRAC Model Runtime

This extension allows TRAC models to make calls to external systems using HTTP and HTTPS.

  • Make HTTP endpoints available to models, to use directly in model code
  • Connection settings managed by TRAC for both local and deployed models
  • Supports http.client and urllib3

Models that make external calls are not considered repeatable, and will be flagged as not repeatable when they run on the TRAC platform.

This extension is a pre-release and will be finalized inTRAC 0.10.

Installing

The HTTP extension can be installed with pip:

$ pip install tracdap-ext-http

The package has the following dependencies:

  • tracdap-runtime (version 0.10.0-beta1 or later)
  • urllib3 (optional, version 2.x)

Using the http.client API

Here is a minimum working example of a TRAC model using the http.client API:

import tracdap.rt.api as trac
import http.client as hc

class TestModel(trac.TracModel):

    # ... define parameters, inputs and outputs

    def define_resources(self):

        return {
            "github": trac.define_external_system("http", hc.HTTPSConnection)
        }

    def run_model(self, ctx: trac.TracContext):

        with ctx.get_external_system("github", hc.HTTPSConnection) as github:

            github.connect()
            github.request("GET", "finos/tracdap/refs/heads/main/README.md")

            response = github.getresponse()
            response_text = response.read().decode("utf-8")
            first_line = response_text.splitlines()[0]

            ctx.log.info(first_line)

if __name__ == '__main__':
    import tracdap.rt.launch as launch
    launch.launch_model(TestModel, "config/job_config.yaml", "config/sys_config.yaml")

To make this example work, you will need to add github as a resource in the system config file:

resources:

  github:
    resourceType: EXTERNAL_SYSTEM
    protocol: http
    properties:
      host: raw.githubusercontent.com
      port: 443
      tls: true

The following configuration properties are supported:

  • host, string, required
  • port, int, optional
  • tls, bool, default = true
  • timeout, float, optional

Models using the client type HTTPSConnection will only work if tls = true is set in the configuration. Models requesting HTTPConnection will work with tls = true or tls = false, and will receive an HTTPSConnection if tls = true.

Using the urllib3 API

Here is a minimum working example of a TRAC model using the urllib3 API. In order to use this API, the urllib3 package must be installed.

import tracdap.rt.api as trac
import urllib3

class TestModel(trac.TracModel):

    # ... define parameters, inputs and outputs

    def define_resources(self):

        return {
            "github": trac.define_external_system("http", urllib3.HTTPSConnectionPool)
        }

    def run_model(self, ctx: trac.TracContext):

        with ctx.get_external_system("github", urllib3.HTTPSConnectionPool, timeout=10.0) as github:

            response = github.request("GET", "/finos/tracdap/refs/heads/main/README.md")

            response_text = response.data.decode("utf-8")
            first_line = response_text.splitlines()[0]

            ctx.log.info(first_line)

if __name__ == '__main__':
    import tracdap.rt.launch as launch
    launch.launch_model(TestModel, "config/job_config.yaml", "config/sys_config.yaml")

The resource configuration for the urllib3 API is identical to the http.client API.

Download files

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

Source Distribution

tracdap_ext_http-0.10.0.dev21.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

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

tracdap_ext_http-0.10.0.dev21-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file tracdap_ext_http-0.10.0.dev21.tar.gz.

File metadata

  • Download URL: tracdap_ext_http-0.10.0.dev21.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tracdap_ext_http-0.10.0.dev21.tar.gz
Algorithm Hash digest
SHA256 dfccdbb983bd183de4ce1c4f479ce5dc578471152110b4391ec4ef6c5b55925e
MD5 b7425bd5b4882b4c2a2ca797193d9851
BLAKE2b-256 ceda0c446b52d53e0a2adc49d155c1a1d2b37bd1e73e3a9c629243a0f83d4b9a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tracdap_ext_http-0.10.0.dev21.tar.gz:

Publisher: packaging.yaml on martin-traverse/tracdap

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

File details

Details for the file tracdap_ext_http-0.10.0.dev21-py3-none-any.whl.

File metadata

File hashes

Hashes for tracdap_ext_http-0.10.0.dev21-py3-none-any.whl
Algorithm Hash digest
SHA256 8d30dd41f7dfe6b7a45d9d83aaedc95d677333cfbd5dea4d64824dfcbd9c4db8
MD5 34259a2e4fa35c9f7f6639a273d11f1a
BLAKE2b-256 b4767a42eeb8fd9eca9f554f5bc0709813b7427561bc24f6a3e488e8f95f582c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tracdap_ext_http-0.10.0.dev21-py3-none-any.whl:

Publisher: packaging.yaml on martin-traverse/tracdap

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 Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page