Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

HTTP Extension for the TRAC Model Runtime

This extension allows tracdap-runtime 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 the runtime 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.

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-beta2 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.

Release files for tracdap-ext-http 0.11.0b2

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

Source distribution (sdist)

Source distribution for tracdap-ext-http 0.11.0b2
File Size Uploaded
tracdap_ext_http-0.11.0b2.tar.gz 10.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tracdap-ext-http 0.11.0b2
File Interpreter ABI Platform
tracdap_ext_http-0.11.0b2-py3-none-any.whl Python 3 none any Details

Total release size: 19.7 kB

Release files / tracdap_ext_http-0.11.0b2.tar.gz

Download URL tracdap_ext_http-0.11.0b2.tar.gz
Size 10.1 kB
Tags Source
SHA-256 checksum
How to use checksums
464dbf96d50697c4dd9cca0e8f2a0f511cab568bdcd70d0d86db49e4fb6ea3dd
BLAKE2b-256 checksum
How to use checksums
af05aa32096c3196d40f747c109ae6aab8a40090fc0f41d23b5d2859b3067986
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log

Release files / tracdap_ext_http-0.11.0b2-py3-none-any.whl

Download URL tracdap_ext_http-0.11.0b2-py3-none-any.whl
Size 9.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d6c6e715f808e3c25c4f603fff06256c219dd63bc43591b60e84caca714367eb
BLAKE2b-256 checksum
How to use checksums
e2d05e39c7a2c1b4fb40fdf0a7c11166420241d47bbf4b06c05d7be21a7c820b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.

Transparency log
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