chore(python-docs): update python doc assets to recent development state
diff --git a/docs-python/dev/assets/_mkdocstrings.css b/docs-python/dev/assets/_mkdocstrings.css
index 4b7d98b..85449ec 100644
--- a/docs-python/dev/assets/_mkdocstrings.css
+++ b/docs-python/dev/assets/_mkdocstrings.css
@@ -26,6 +26,11 @@
float: right;
}
+/* Backward-compatibility: docstring section titles in bold. */
+.doc-section-title {
+ font-weight: bold;
+}
+
/* Symbols in Navigation and ToC. */
:root,
[data-md-color-scheme="default"] {
@@ -106,4 +111,9 @@
code.doc-symbol-module::after {
content: "mod";
-}
\ No newline at end of file
+}
+
+.doc-signature .autorefs {
+ color: inherit;
+ border-bottom: 1px dotted currentcolor;
+}
diff --git a/docs-python/dev/getting-started/developing/index.html b/docs-python/dev/getting-started/developing/index.html
index 8f1e333..03e6344 100644
--- a/docs-python/dev/getting-started/developing/index.html
+++ b/docs-python/dev/getting-started/developing/index.html
@@ -2475,7 +2475,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">June 20, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 20, 2024 19:46:31">June 20, 2024</span>
</small>
diff --git a/docs-python/dev/getting-started/first-steps/index.html b/docs-python/dev/getting-started/first-steps/index.html
index 8c9f2aa..89c0157 100644
--- a/docs-python/dev/getting-started/first-steps/index.html
+++ b/docs-python/dev/getting-started/first-steps/index.html
@@ -2387,7 +2387,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">June 20, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 20, 2024 19:46:31">June 20, 2024</span>
</small>
diff --git a/docs-python/dev/getting-started/quickstart/index.html b/docs-python/dev/getting-started/quickstart/index.html
index a79d960..03f600e 100644
--- a/docs-python/dev/getting-started/quickstart/index.html
+++ b/docs-python/dev/getting-started/quickstart/index.html
@@ -2242,9 +2242,9 @@
<h1 id="quickstart">⚡️ Quickstart<a class="headerlink" href="#quickstart" title="Permanent link">¶</a></h1>
<p>As a quick example, we demonstrate how to set up and configure a StreamPipes client.
In addition, we will get the available data lake measures out of StreamPipes.</p>
-<p><div class="language-python highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<p><div class="language-python highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
<span class="n">config</span> <span class="o">=</span> <span class="n">StreamPipesClientConfig</span><span class="p">(</span>
<span class="n">credential_provider</span> <span class="o">=</span> <span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span>
@@ -2279,7 +2279,7 @@
<br>
Alternatively, you can provide your credentials via environment variables.
Simply define your credential provider as follows:</p>
-<p><div class="language-python highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<p><div class="language-python highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
<span class="n">StreamPipesApiKeyCredentials</span><span class="p">()</span>
</code></pre></div>
@@ -2294,7 +2294,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">May 31, 2023</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="May 31, 2023 18:12:58">May 31, 2023</span>
</small>
diff --git a/docs-python/dev/index.html b/docs-python/dev/index.html
index c7ec778..e440d07 100644
--- a/docs-python/dev/index.html
+++ b/docs-python/dev/index.html
@@ -2297,9 +2297,9 @@
<h2 id="quickstart">⚡️ Quickstart<a class="headerlink" href="#quickstart" title="Permanent link">¶</a></h2>
<p>As a quick example, we demonstrate how to set up and configure a StreamPipes client.
In addition, we will get the available data lake measures out of StreamPipes.</p>
-<p><div class="language-python highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<p><div class="language-python highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
<span class="n">config</span> <span class="o">=</span> <span class="n">StreamPipesClientConfig</span><span class="p">(</span>
<span class="n">credential_provider</span> <span class="o">=</span> <span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span>
@@ -2334,7 +2334,7 @@
<br>
Alternatively, you can provide your credentials via environment variables.
Simply define your credential provider as follows:</p>
-<p><div class="language-python highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<p><div class="language-python highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
<span class="n">StreamPipesApiKeyCredentials</span><span class="p">()</span>
</code></pre></div>
@@ -2353,7 +2353,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">April 3, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="April 3, 2024 07:17:12">April 3, 2024</span>
</small>
diff --git a/docs-python/dev/reference/client/client/index.html b/docs-python/dev/reference/client/client/index.html
index bc5e1cf..d1bf78d 100644
--- a/docs-python/dev/reference/client/client/index.html
+++ b/docs-python/dev/reference/client/client/index.html
@@ -2360,13 +2360,13 @@
<a id="streampipes.client.client"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Implementation of the StreamPipes client.
The client is designed as the central point of interaction with the StreamPipes API and
provides all functionalities to communicate with the API.</p>
-
+
<div class="doc doc-children">
@@ -2382,14 +2382,14 @@
<h2 id="streampipes.client.client.StreamPipesClient" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">StreamPipesClient</span><span class="p">(</span><span class="n">client_config</span><span class="p">,</span> <span class="n">logging_level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">StreamPipesClient</span><span class="p">(</span><span class="n">client_config</span><span class="p">,</span> <span class="n">logging_level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span></code>
<a href="#streampipes.client.client.StreamPipesClient" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>The client to connect to StreamPipes.</p>
<p>This is the central point of contact with StreamPipes and
provides all the functionalities to interact with it.</p>
@@ -2399,122 +2399,118 @@
API.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>client_config</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Configures the client to connect properly to the StreamPipes instance.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.client.config.StreamPipesClientConfig" href="../config/#streampipes.client.config.StreamPipesClientConfig">StreamPipesClientConfig</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>client_config</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Configures the client to connect properly to the StreamPipes instance.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="StreamPipesClientConfig (streampipes.client.config.StreamPipesClientConfig)" href="../config/#streampipes.client.config.StreamPipesClientConfig">StreamPipesClientConfig</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>logging_level</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Influences the log messages emitted by the <code>StreamPipesClient</code></p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="int">int</span>]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code><span title="logging.INFO">INFO</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
<tr>
- <td><code>logging_level</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Influences the log messages emitted by the <code>StreamPipesClient</code></p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[int]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code><span title="logging.INFO">INFO</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.client.client.StreamPipesClient.dataLakeMeasureApi">dataLakeMeasureApi</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Instance of the data lake measure endpoint</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataLakeMeasureEndpoint (streampipes.endpoint.api.DataLakeMeasureEndpoint)" href="../../endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint">DataLakeMeasureEndpoint</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.client.client.StreamPipesClient.dataStreamApi">dataStreamApi</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Instance of the data stream endpoint</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStreamEndpoint (streampipes.endpoint.api.DataStreamEndpoint)" href="../../endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint">DataStreamEndpoint</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.client.client.StreamPipesClient.dataLakeMeasureApi">dataLakeMeasureApi</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Instance of the data lake measure endpoint</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.endpoint.api.DataLakeMeasureEndpoint" href="../../endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint">DataLakeMeasureEndpoint</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code><span title="streampipes.client.client.StreamPipesClient.dataStreamApi">dataStreamApi</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Instance of the data stream endpoint</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.endpoint.api.DataStreamEndpoint" href="../../endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint">DataStreamEndpoint</a></code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code>AttributeError:</code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>In case an invalid configuration of the <code>StreamPipesClientConfig</code> is passed</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code>AttributeError:</code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>In case an invalid configuration of the <code>StreamPipesClientConfig</code> is passed</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
-<p><strong>Examples:</strong></p>
- <div class="language-python highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<p><span class="doc-section-title">Examples:</span></p>
+ <div class="language-python highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
</code></pre></div>
<div class="language-python highlight"><pre><span></span><code><span class="n">client_config</span> <span class="o">=</span> <span class="n">StreamPipesClientConfig</span><span class="p">(</span>
<span class="n">credential_provider</span><span class="o">=</span><span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span>
@@ -2544,7 +2540,7 @@
</code></pre></div></p>
-
+
<div class="doc doc-children">
@@ -2559,8 +2555,8 @@
<h3 id="streampipes.client.client.StreamPipesClient.base_api_path" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">base_api_path</span><span class="p">:</span> <span class="nb">str</span></code>
-
+ <code class="highlight language-python"><span class="n">base_api_path</span><span class="p">:</span> <span class="nb">str</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-property"><code>property</code></small>
</span>
@@ -2568,39 +2564,38 @@
<a href="#streampipes.client.client.StreamPipesClient.base_api_path" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Constructs the basic API URL from the given <code>client_config</code>.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>base_api_path</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>basic API path of the connected StreamPipes instance</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>base_api_path</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>basic API path of the connected StreamPipes instance</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</div>
@@ -2609,8 +2604,8 @@
<h3 id="streampipes.client.client.StreamPipesClient.http_headers" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">http_headers</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span></code>
-
+ <code class="highlight language-python"><span class="n">http_headers</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-property"><code>property</code></small>
</span>
@@ -2618,54 +2613,51 @@
<a href="#streampipes.client.client.StreamPipesClient.http_headers" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the HTTP headers used for all requests.</p>
<p>The HTTP headers are composed of the authentication headers supplied by the credential
provider and additional required headers (currently this is only the application header).</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>http_headers</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Header information for HTTP requests as string key-value pairs.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, str]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>http_headers</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Header information for HTTP requests as string key-value pairs.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.client.client.StreamPipesClient.create" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">create</span><span class="p">(</span><span class="n">client_config</span><span class="p">,</span> <span class="n">logging_level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">create</span><span class="p">(</span><span class="n">client_config</span><span class="p">,</span> <span class="n">logging_level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
</span>
@@ -2673,128 +2665,122 @@
<a href="#streampipes.client.client.StreamPipesClient.create" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns an instance of the <code>StreamPipesPythonClient</code>.</p>
<p>Provides consistency to the StreamPipes Java client.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>client_config</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Configures the client to connect properly to the StreamPipes instance.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.client.config.StreamPipesClientConfig" href="../config/#streampipes.client.config.StreamPipesClientConfig">StreamPipesClientConfig</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>client_config</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Configures the client to connect properly to the StreamPipes instance.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="StreamPipesClientConfig (streampipes.client.config.StreamPipesClientConfig)" href="../config/#streampipes.client.config.StreamPipesClientConfig">StreamPipesClientConfig</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>logging_level</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Influences the log messages emitted by the <code>StreamPipesClient</code>.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="int">int</span></code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code><span title="logging.INFO">INFO</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
<tr>
- <td><code>logging_level</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Influences the log messages emitted by the <code>StreamPipesClient</code>.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>int</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code><span title="logging.INFO">INFO</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesClient (streampipes.client.client.StreamPipesClient)" href="#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.client.client.StreamPipesClient" href="#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.client.client.StreamPipesClient.describe" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">describe</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">describe</span><span class="p">()</span></code>
<a href="#streampipes.client.client.StreamPipesClient.describe" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Prints a short description of the connected StreamPipes instance and the available resources to the console.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code> None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code> None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-<p><strong>Examples:</strong></p>
+<p><span class="doc-section-title">Examples:</span></p>
<p><div class="language-python highlight"><pre><span></span><code><span class="n">client</span><span class="o">.</span><span class="n">describe</span><span class="p">()</span>
</code></pre></div>
Output:
@@ -2805,7 +2791,7 @@
1x DataLakeMeasures
</code></pre></div></p>
- </div>
+ </div>
</div>
@@ -2813,8 +2799,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2823,7 +2808,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2832,7 +2817,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/client/config/index.html b/docs-python/dev/reference/client/config/index.html
index 55ee313..c49ed76 100644
--- a/docs-python/dev/reference/client/config/index.html
+++ b/docs-python/dev/reference/client/config/index.html
@@ -2292,11 +2292,11 @@
<a id="streampipes.client.config"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Configuration class for the StreamPipes client.</p>
-
+
<div class="doc doc-children">
@@ -2312,8 +2312,8 @@
<h2 id="streampipes.client.config.StreamPipesClientConfig" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">StreamPipesClientConfig</span><span class="p">(</span><span class="n">credential_provider</span><span class="p">,</span> <span class="n">host_address</span><span class="p">,</span> <span class="n">https_disabled</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">additional_headers</span><span class="o">=</span><span class="nb">dict</span><span class="p">())</span></code>
-
+ <code class="highlight language-python"><span class="n">StreamPipesClientConfig</span><span class="p">(</span><span class="n">credential_provider</span><span class="p">,</span> <span class="n">host_address</span><span class="p">,</span> <span class="n">https_disabled</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">port</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> <span class="n">additional_headers</span><span class="o">=</span><span class="nb">dict</span><span class="p">())</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-dataclass"><code>dataclass</code></small>
</span>
@@ -2321,116 +2321,114 @@
<a href="#streampipes.client.config.StreamPipesClientConfig" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configure the StreamPipes client in accordance to the actual StreamPipes instance to connect to.</p>
<p>An instance is provided to the <code>StreamPipesClient</code> to configure it properly.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>credential_provider</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Provides the credentials to authenticate with the StreamPipes API.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.client.credential_provider.CredentialProvider" href="../credential_provider/#streampipes.client.credential_provider.CredentialProvider">CredentialProvider</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>host_address</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Host address of the StreamPipes instance to connect to.
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>credential_provider</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Provides the credentials to authenticate with the StreamPipes API.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="CredentialProvider (streampipes.client.credential_provider.CredentialProvider)" href="../credential_provider/#streampipes.client.credential_provider.CredentialProvider">CredentialProvider</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>host_address</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Host address of the StreamPipes instance to connect to.
Should be provided without the protocol/scheme, e.g. as <code>localhost</code> or <code>streampipes.xyz</code>.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>https_disabled</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Determines whether https is used to connect to StreamPipes.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[bool]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>False</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>port</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Specifies the port under which the StreamPipes API is available,
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>https_disabled</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Determines whether https is used to connect to StreamPipes.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="bool">bool</span>]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>False</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>port</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Specifies the port under which the StreamPipes API is available,
e.g., <code>80</code> (with http) or <code>443</code> (with https)</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[int]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>80</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>additional_headers</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Specifies additional HTTP headers that should be sent with each request, e.g., proxy headers</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[<span title="typing.Dict">Dict</span>[str, str]]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>dict()</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="int">int</span>]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>80</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>additional_headers</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Specifies additional HTTP headers that should be sent with each request, e.g., proxy headers</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="str">str</span>]]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code><span title="dict">dict</span>()</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-<p><strong>Examples:</strong></p>
+<p><span class="doc-section-title">Examples:</span></p>
<p>see <a class="autorefs autorefs-internal" href="../client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></p>
-
+
<div class="doc doc-children">
@@ -2446,8 +2444,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2456,7 +2453,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2465,7 +2462,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/client/credential_provider/index.html b/docs-python/dev/reference/client/credential_provider/index.html
index 3576355..1f75d12 100644
--- a/docs-python/dev/reference/client/credential_provider/index.html
+++ b/docs-python/dev/reference/client/credential_provider/index.html
@@ -2372,13 +2372,13 @@
<a id="streampipes.client.credential_provider"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Implementation of credential providers.
A credential provider supplies the specified sort of credentials in the appropriate HTTP header format.
The headers are then used by the client to connect to StreamPipes.</p>
-
+
<div class="doc doc-children">
@@ -2394,22 +2394,22 @@
<h2 id="streampipes.client.credential_provider.CredentialProvider" class="doc doc-heading">
- <code>CredentialProvider</code>
+ <code>CredentialProvider</code>
<a href="#streampipes.client.credential_provider.CredentialProvider" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="abc.ABC">ABC</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="abc.ABC">ABC</span></code></p>
-
+
<p>Abstract implementation of a credential provider.
Must be inherited by all credential providers.</p>
-
+
<div class="doc doc-children">
@@ -2421,85 +2421,81 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.client.credential_provider.CredentialProvider.make_headers" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">make_headers</span><span class="p">(</span><span class="n">http_headers</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">make_headers</span><span class="p">(</span><span class="n">http_headers</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
<a href="#streampipes.client.credential_provider.CredentialProvider.make_headers" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates the HTTP headers for the specific credential provider.</p>
<p>Concrete authentication headers must be defined in the implementation of a credential provider.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>http_headers</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Additional HTTP headers the generated headers are extended by.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[<span title="typing.Dict">Dict</span>[str, str]]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>None</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>http_headers</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Additional HTTP headers the generated headers are extended by.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="str">str</span>]]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>https_headers</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Dictionary with header information as string key-value pairs. <br>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>https_headers</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Dictionary with header information as string key-value pairs. <br>
Contains all pairs given as parameter plus the header pairs for authentication
determined by the credential provider.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, str]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2507,8 +2503,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2517,16 +2512,16 @@
<h2 id="streampipes.client.credential_provider.StreamPipesApiKeyCredentials" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">api_key</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">api_key</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
<a href="#streampipes.client.credential_provider.StreamPipesApiKeyCredentials" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.client.credential_provider.CredentialProvider" href="#streampipes.client.credential_provider.CredentialProvider">CredentialProvider</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="CredentialProvider (streampipes.client.credential_provider.CredentialProvider)" href="#streampipes.client.credential_provider.CredentialProvider">CredentialProvider</a></code></p>
-
+
<p>A credential provider that allows authentication via a StreamPipes API Token.</p>
<p>The required token can be generated via the StreamPipes UI (see the description on our <a href="../../../">start-page</a>.</p>
<p>Both parameters can either be passed as arguments or remain unset.
@@ -2537,63 +2532,61 @@
</ul>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>username</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The username to which the API token is granted, e.g., <code>demo-user@streampipes.apche.org</code>.<br>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>username</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The username to which the API token is granted, e.g., <code>demo-user@streampipes.apche.org</code>.<br>
If not passed, the username is retrieved from environment variable <code>SP_USERNAME</code>.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[str]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>None</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>api_key</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The StreamPipes API key as it is displayed in the UI.<br>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>api_key</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The StreamPipes API key as it is displayed in the UI.<br>
If not passed, the api key is retrieved from environment variable <code>SP_API_KEY</code></p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[str]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>None</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-<p><strong>Examples:</strong></p>
+<p><span class="doc-section-title">Examples:</span></p>
<p>see <a class="autorefs autorefs-internal" href="../client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></p>
-
+
<div class="doc doc-children">
@@ -2605,14 +2598,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.client.credential_provider.StreamPipesApiKeyCredentials.from_env" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">from_env</span><span class="p">(</span><span class="n">username_env</span><span class="p">,</span> <span class="n">api_key_env</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">from_env</span><span class="p">(</span><span class="n">username_env</span><span class="p">,</span> <span class="n">api_key_env</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
</span>
@@ -2620,185 +2611,178 @@
<a href="#streampipes.client.credential_provider.StreamPipesApiKeyCredentials.from_env" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>DEPRECATED - use the class constructor instead</p>
<p>Returns an API key provider parameterized via environment variables.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>username_env</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Name of the environment variable that contains the username</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>username_env</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Name of the environment variable that contains the username</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>api_key_env</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Name of the environment variable that contains the API key</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
<tr>
- <td><code>api_key_env</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Name of the environment variable that contains the API key</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesApiKeyCredentials (streampipes.client.credential_provider.StreamPipesApiKeyCredentials)" href="#streampipes.client.credential_provider.StreamPipesApiKeyCredentials">StreamPipesApiKeyCredentials</a></code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.client.credential_provider.StreamPipesApiKeyCredentials" href="#streampipes.client.credential_provider.StreamPipesApiKeyCredentials">StreamPipesApiKeyCredentials</a></code>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><span title="KeyError">KeyError</span></code>
</span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If one of the environment variables is not defined</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code>KeyError</code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If one of the environment variables is not defined</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.client.credential_provider.StreamPipesApiKeyCredentials.make_headers" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">make_headers</span><span class="p">(</span><span class="n">http_headers</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">make_headers</span><span class="p">(</span><span class="n">http_headers</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
<a href="#streampipes.client.credential_provider.StreamPipesApiKeyCredentials.make_headers" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates the HTTP headers for the specific credential provider.</p>
<p>Concrete authentication headers must be defined in the implementation of a credential provider.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>http_headers</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Additional HTTP headers the generated headers are extended by.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[<span title="typing.Dict">Dict</span>[str, str]]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>None</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>http_headers</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Additional HTTP headers the generated headers are extended by.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="str">str</span>]]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>https_headers</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Dictionary with header information as string key-value pairs. <br>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>https_headers</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Dictionary with header information as string key-value pairs. <br>
Contains all pairs given as parameter plus the header pairs for authentication
determined by the credential provider.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, str]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2806,8 +2790,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2816,7 +2799,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2825,7 +2808,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/endpoint/api/data_lake_measure/index.html b/docs-python/dev/reference/endpoint/api/data_lake_measure/index.html
index 0c63fef..55a5f07 100644
--- a/docs-python/dev/reference/endpoint/api/data_lake_measure/index.html
+++ b/docs-python/dev/reference/endpoint/api/data_lake_measure/index.html
@@ -2430,12 +2430,12 @@
<a id="streampipes.endpoint.api.data_lake_measure"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Specific implementation of the StreamPipes API's data lake measure endpoints.
This endpoint allows to consume data stored in StreamPipes' data lake.</p>
-
+
<div class="doc doc-children">
@@ -2451,16 +2451,16 @@
<h2 id="streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">DataLakeMeasureEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">DataLakeMeasureEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.endpoint.endpoint.APIEndpoint" href="../../endpoint/#streampipes.endpoint.endpoint.APIEndpoint">APIEndpoint</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="APIEndpoint (streampipes.endpoint.endpoint.APIEndpoint)" href="../../endpoint/#streampipes.endpoint.endpoint.APIEndpoint">APIEndpoint</a></code></p>
-
+
<p>Implementation of the DataLakeMeasure endpoint.</p>
<p>This endpoint provides an interface to all data stored in the StreamPipes data lake.</p>
<p>Consequently, it allows querying metadata about available data sets (see <code>all()</code> method).
@@ -2469,11 +2469,10 @@
specific data lake measure using the <code>get()</code> method.</p>
-
-<p><strong>Examples:</strong></p>
- <div class="language-python highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<p><span class="doc-section-title">Examples:</span></p>
+ <div class="language-python highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
</code></pre></div>
<div class="language-python highlight"><pre><span></span><code><span class="n">client_config</span> <span class="o">=</span> <span class="n">StreamPipesClientConfig</span><span class="p">(</span>
<span class="n">credential_provider</span><span class="o">=</span><span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="s2">"test-user"</span><span class="p">,</span> <span class="n">api_key</span><span class="o">=</span><span class="s2">"api-key"</span><span class="p">),</span>
@@ -2529,7 +2528,7 @@
find them at <a class="autorefs autorefs-internal" href="#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig">MeasurementGetQueryConfig</a>.</p>
-
+
<div class="doc doc-children">
@@ -2541,275 +2540,260 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.all" class="doc doc-heading">
- <code class="highlight language-python"><span class="nb">all</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="nb">all</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.all" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get all resources of this endpoint provided by the StreamPipes API.</p>
<p>Results are provided as an instance of a <code>ResourceContainer</code> that
allows to handle the returned resources in a comfortable and pythonic way.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>container</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Container element that bundles the returned resources</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../../../model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>container</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Container element that bundles the returned resources</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../../../model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.build_url" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">build_url</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">build_url</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.build_url" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Builds the endpoint's URL of the API path.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>url</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The URL of the endpoint</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>url</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The URL of the endpoint</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.get" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.get" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Queries the specified data lake measure from the API.</p>
<p>By default, the maximum number of returned records is 1000.
This behaviour can be influenced by passing the parameter <code>limit</code> with a different value
(see <a class="autorefs autorefs-internal" href="#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig">MeasurementGetQueryConfig</a>).</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>identifier</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The identifier of the data lake measure to be queried.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>**kwargs</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Keyword arguments can be used to provide additional query parameters.
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>identifier</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The identifier of the data lake measure to be queried.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>**kwargs</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Keyword arguments can be used to provide additional query parameters.
The available query parameters are defined by the
<a class="autorefs autorefs-internal" href="#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig">MeasurementGetQueryConfig</a>.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[<span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>{}</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>measurement</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The specified data lake measure</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.query_result.QueryResult" href="../../../model/resource/query_result/#streampipes.model.resource.query_result.QueryResult">QueryResult</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>{}</code>
+ </span>
</p>
- </td>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>measurement</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The specified data lake measure</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="QueryResult (streampipes.model.resource.query_result.QueryResult)" href="../../../model/resource/query_result/#streampipes.model.resource.query_result.QueryResult">QueryResult</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-<p><strong>Examples:</strong></p>
+<p><span class="doc-section-title">Examples:</span></p>
<p>see directly at <a class="autorefs autorefs-internal" href="#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint">DataLakeMeasureEndpoint</a>.</p>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.post" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">post</span><span class="p">(</span><span class="n">resource</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">post</span><span class="p">(</span><span class="n">resource</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.post" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Allows to post a resource to the StreamPipes API.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>resource</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The resource to be posted.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>resource</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The resource to be posted.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2817,8 +2801,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2827,17 +2810,17 @@
<h2 id="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig" class="doc doc-heading">
- <code>MeasurementGetQueryConfig</code>
+ <code>MeasurementGetQueryConfig</code>
<a href="#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="pydantic.v1.BaseModel">BaseModel</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="pydantic.v1.BaseModel">BaseModel</span></code></p>
-
+
<p>Config class describing the parameters of the <code>get()</code> method for measurements.</p>
<p>This config class is used to validate the provided query parameters for the GET endpoint of measurements.
Additionally, it takes care of the conversion to a proper HTTP query string.
@@ -2845,126 +2828,125 @@
for which <a href="https://docs.pydantic.dev/usage/model_config/#options">Pydantic aliases</a> are used.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.columns">columns</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>A comma separated list of column names (e.g., <code>time,value</code>)<br>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.columns">columns</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>A comma separated list of column names (e.g., <code>time,value</code>)<br>
If provided, the returned data only consists of the given columns.<br>
Please be aware that the column <code>time</code> as an index is always included.</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[<span title="typing.List">List</span>[str]]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.end_date">end_date</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Limits the queried data to only include data that is older than the specified time.
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="typing.List">List</span>[<span title="str">str</span>]]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.end_date">end_date</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Limits the queried data to only include data that is older than the specified time.
In other words, any data that occurred after the end_date will not be included in the query results.</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[<span title="datetime.datetime">datetime</span>]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.limit">limit</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Amount of records returned at maximum (default: <code>1000</code>) <br>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="datetime.datetime">datetime</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.limit">limit</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Amount of records returned at maximum (default: <code>1000</code>) <br>
This needs to be at least <code>1</code></p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[int]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.offset">offset</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Offset to be applied to returned data <br>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="int">int</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.offset">offset</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Offset to be applied to returned data <br>
This needs to be at least <code>0</code></p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[int]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.order">order</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Ordering of query results <br>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="int">int</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.order">order</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Ordering of query results <br>
Allowed values: <code>ASC</code> and <code>DESC</code> (default: <code>ASC</code>)</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[str]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.page_no">page_no</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Page number used for paging operation <br>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.page_no">page_no</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Page number used for paging operation <br>
This needs to be at least <code>1</code></p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[int]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.start_date">start_date</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Limits the queried data to only include data that is newer than the specified time.
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="int">int</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.start_date">start_date</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Limits the queried data to only include data that is newer than the specified time.
In other words, any data that occurred before the start_date will not be included in the query results.</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[<span title="datetime.datetime">datetime</span>]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="datetime.datetime">datetime</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2980,19 +2962,19 @@
<h3 id="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Pydantic Config class</p>
-
+
<div class="doc doc-children">
@@ -3008,60 +2990,56 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.build_query_string" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">build_query_string</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">build_query_string</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.build_query_string" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Builds a HTTP query string for the config.</p>
<p>This method returns an HTTP query string for the invoking config.
It follows the following structure <code>?param1=value1&param2=value2...</code>.
This query string is not an entire URL, instead it needs to appended to an API path.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>query_param_string</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>HTTP query params string (<code>?param1=value1&param2=value2...</code>)</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>query_param_string</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>HTTP query params string (<code>?param1=value1&param2=value2...</code>)</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -3069,8 +3047,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3079,23 +3056,22 @@
<h2 id="streampipes.endpoint.api.data_lake_measure.StreamPipesQueryValidationError" class="doc doc-heading">
- <code>StreamPipesQueryValidationError</code>
+ <code>StreamPipesQueryValidationError</code>
<a href="#streampipes.endpoint.api.data_lake_measure.StreamPipesQueryValidationError" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code>Exception</code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="Exception">Exception</span></code></p>
-
+
<p>A custom exception to be raised when the validation of query parameter
causes an error.</p>
- </div>
-
+ </div>
</div>
@@ -3104,7 +3080,7 @@
</div>
- </div>
+ </div>
</div>
@@ -3113,7 +3089,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/endpoint/api/data_stream/index.html b/docs-python/dev/reference/endpoint/api/data_stream/index.html
index c4e4897..82d02c6 100644
--- a/docs-python/dev/reference/endpoint/api/data_stream/index.html
+++ b/docs-python/dev/reference/endpoint/api/data_stream/index.html
@@ -2362,11 +2362,11 @@
<a id="streampipes.endpoint.api.data_stream"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Specific implementation of the StreamPipes API's data stream endpoints.</p>
-
+
<div class="doc doc-children">
@@ -2382,26 +2382,25 @@
<h2 id="streampipes.endpoint.api.data_stream.DataStreamEndpoint" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">DataStreamEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">DataStreamEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.data_stream.DataStreamEndpoint" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.endpoint.endpoint.APIEndpoint" href="../../endpoint/#streampipes.endpoint.endpoint.APIEndpoint">APIEndpoint</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="APIEndpoint (streampipes.endpoint.endpoint.APIEndpoint)" href="../../endpoint/#streampipes.endpoint.endpoint.APIEndpoint">APIEndpoint</a></code></p>
-
+
<p>Implementation of the DataStream endpoint.</p>
<p>Consequently, it allows querying metadata about available data streams (see <code>all()</code> method).
The metadata is returned as an instance of <a class="autorefs autorefs-internal" href="../../../model/container/data_streams/#streampipes.model.container.data_streams.DataStreams"><code>DataStreams</code></a>.</p>
-
-<p><strong>Examples:</strong></p>
- <div class="language-python highlight"><pre><span></span><code><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<p><span class="doc-section-title">Examples:</span></p>
+ <div class="language-python highlight"><pre><span></span><code><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
<span class="n">client_config</span> <span class="o">=</span> <span class="n">StreamPipesClientConfig</span><span class="p">(</span>
<span class="n">credential_provider</span><span class="o">=</span><span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="s2">"test-user"</span><span class="p">,</span> <span class="n">api_key</span><span class="o">=</span><span class="s2">"api-key"</span><span class="p">),</span>
@@ -2419,7 +2418,7 @@
</code></pre></div></p>
-
+
<div class="doc doc-children">
@@ -2431,247 +2430,233 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_stream.DataStreamEndpoint.all" class="doc doc-heading">
- <code class="highlight language-python"><span class="nb">all</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="nb">all</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.api.data_stream.DataStreamEndpoint.all" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get all resources of this endpoint provided by the StreamPipes API.</p>
<p>Results are provided as an instance of a <code>ResourceContainer</code> that
allows to handle the returned resources in a comfortable and pythonic way.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>container</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Container element that bundles the returned resources</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../../../model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>container</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Container element that bundles the returned resources</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../../../model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_stream.DataStreamEndpoint.build_url" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">build_url</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">build_url</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.api.data_stream.DataStreamEndpoint.build_url" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Builds the endpoint's URL of the API path.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>url</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The URL of the endpoint</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>url</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The URL of the endpoint</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_stream.DataStreamEndpoint.get" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.data_stream.DataStreamEndpoint.get" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Queries the specified resource from the API endpoint.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>identifier</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The identifier of the resource to be queried.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The specified resource as an instance of the corresponding model class.</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>identifier</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The identifier of the resource to be queried.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The specified resource as an instance of the corresponding model class.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.data_stream.DataStreamEndpoint.post" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">post</span><span class="p">(</span><span class="n">resource</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">post</span><span class="p">(</span><span class="n">resource</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.data_stream.DataStreamEndpoint.post" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Allows to post a resource to the StreamPipes API.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>resource</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The resource to be posted.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>resource</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The resource to be posted.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2679,8 +2664,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2689,7 +2673,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2698,7 +2682,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/endpoint/api/version/index.html b/docs-python/dev/reference/endpoint/api/version/index.html
index 5015777..08224b9 100644
--- a/docs-python/dev/reference/endpoint/api/version/index.html
+++ b/docs-python/dev/reference/endpoint/api/version/index.html
@@ -2362,11 +2362,11 @@
<a id="streampipes.endpoint.api.version"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Specific implementation of the StreamPipes API's version endpoint.</p>
-
+
<div class="doc doc-children">
@@ -2382,53 +2382,51 @@
<h2 id="streampipes.endpoint.api.version.VersionEndpoint" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">VersionEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">VersionEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.version.VersionEndpoint" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.endpoint.APIEndpoint" href="../../endpoint/#streampipes.endpoint.endpoint.APIEndpoint">APIEndpoint</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="APIEndpoint (streampipes.endpoint.APIEndpoint)" href="../../endpoint/#streampipes.endpoint.endpoint.APIEndpoint">APIEndpoint</a></code></p>
-
+
<p>Implementation of the Versions endpoint.</p>
<p>This endpoint provides metadata about the StreamPipes version of the connected instance.
It only allows to apply the <code>get()</code> method with an empty string as identifier.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>parent_client</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The instance of <a class="autorefs autorefs-internal" href="../../../client/client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a> the endpoint is attached to.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>StreamPipesClient</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>parent_client</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The instance of <a class="autorefs autorefs-internal" href="../../../client/client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a> the endpoint is attached to.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="StreamPipesClient">StreamPipesClient</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-<p><strong>Examples:</strong></p>
- <div class="language-pycon highlight"><pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<p><span class="doc-section-title">Examples:</span></p>
+ <div class="language-pycon highlight"><pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="gp">>>> </span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
</code></pre></div>
<div class="language-pycon highlight"><pre><span></span><code><span class="gp">>>> </span><span class="n">client_config</span> <span class="o">=</span> <span class="n">StreamPipesClientConfig</span><span class="p">(</span>
<span class="gp">... </span> <span class="n">credential_provider</span><span class="o">=</span><span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="s2">"test-user"</span><span class="p">,</span> <span class="n">api_key</span><span class="o">=</span><span class="s2">"api-key"</span><span class="p">),</span>
@@ -2444,7 +2442,7 @@
</code></pre></div>
-
+
<div class="doc doc-children">
@@ -2456,242 +2454,228 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.version.VersionEndpoint.all" class="doc doc-heading">
- <code class="highlight language-python"><span class="nb">all</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="nb">all</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.api.version.VersionEndpoint.all" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Usually, this method returns information about all resources provided by this endpoint.
However, this endpoint does not support this kind of operation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code>NotImplementedError</code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>This endpoint does not return multiple entries, therefore this method is not available.</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><span title="NotImplementedError">NotImplementedError</span></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>This endpoint does not return multiple entries, therefore this method is not available.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.version.VersionEndpoint.build_url" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">build_url</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">build_url</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.api.version.VersionEndpoint.build_url" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Builds the endpoint's URL of the API path.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>url</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The URL of the endpoint</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>url</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The URL of the endpoint</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.version.VersionEndpoint.get" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.version.VersionEndpoint.get" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Queries the resource from the API endpoint.</p>
<p>For this endpoint only one resource is available.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>identifier</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Not supported by this endpoint, is set to an empty string.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code>ValueError</code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>Non-empty <code>identifier</code> is not supported by this endpoint. Please set <code>identifier</code> to an empty string or <code>None</code>.</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>versions</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The specified resource as an instance of the corresponding model class(<a class="autorefs autorefs-internal" href="../../../model/resource/version/#streampipes.model.resource.version.Version">Version</a>). # noqa: 501</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>identifier</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Not supported by this endpoint, is set to an empty string.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.Version" href="../../../model/resource/version/#streampipes.model.resource.version.Version">Version</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><span title="ValueError">ValueError</span></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>Non-empty <code>identifier</code> is not supported by this endpoint. Please set <code>identifier</code> to an empty string or <code>None</code>.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>versions</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The specified resource as an instance of the corresponding model class(<a class="autorefs autorefs-internal" href="../../../model/resource/version/#streampipes.model.resource.version.Version">Version</a>). # noqa: 501</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Version (streampipes.model.resource.Version)" href="../../../model/resource/version/#streampipes.model.resource.version.Version">Version</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.api.version.VersionEndpoint.post" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">post</span><span class="p">(</span><span class="n">resource</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">post</span><span class="p">(</span><span class="n">resource</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.api.version.VersionEndpoint.post" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Usually, this method allows to create via this endpoint.
Since the data represented by this endpoint is immutable, it does not support this kind of operation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code>NotImplementedError</code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>This endpoint does not allow for POST requests, therefore this method is not available.</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><span title="NotImplementedError">NotImplementedError</span></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>This endpoint does not allow for POST requests, therefore this method is not available.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2699,8 +2683,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2709,7 +2692,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2718,7 +2701,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/endpoint/endpoint/index.html b/docs-python/dev/reference/endpoint/endpoint/index.html
index 35cdda8..6d1f2c6 100644
--- a/docs-python/dev/reference/endpoint/endpoint/index.html
+++ b/docs-python/dev/reference/endpoint/endpoint/index.html
@@ -2428,13 +2428,13 @@
<a id="streampipes.endpoint.endpoint"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>General implementation for an endpoint.
Provided classes and assets are aimed to be used for developing endpoints.
An endpoint provides all options to communicate with a dedicated part of StreamPipes in a handy way.</p>
-
+
<div class="doc doc-children">
@@ -2450,22 +2450,22 @@
<h2 id="streampipes.endpoint.endpoint.APIEndpoint" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">APIEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">APIEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.endpoint.APIEndpoint" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.endpoint.endpoint.Endpoint" href="#streampipes.endpoint.endpoint.Endpoint">Endpoint</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Endpoint (streampipes.endpoint.endpoint.Endpoint)" href="#streampipes.endpoint.endpoint.Endpoint">Endpoint</a></code></p>
-
+
<p>Abstract implementation of an API endpoint.</p>
<p>Serves as template for all endpoints of the StreamPipes API.
By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p>
-
+
<div class="doc doc-children">
@@ -2477,247 +2477,233 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.endpoint.APIEndpoint.all" class="doc doc-heading">
- <code class="highlight language-python"><span class="nb">all</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="nb">all</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.endpoint.APIEndpoint.all" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get all resources of this endpoint provided by the StreamPipes API.</p>
<p>Results are provided as an instance of a <code>ResourceContainer</code> that
allows to handle the returned resources in a comfortable and pythonic way.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>container</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Container element that bundles the returned resources</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../../model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>container</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Container element that bundles the returned resources</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../../model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.endpoint.APIEndpoint.build_url" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">build_url</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">build_url</span><span class="p">()</span></code>
<a href="#streampipes.endpoint.endpoint.APIEndpoint.build_url" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Builds the endpoint's URL of the API path.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>url</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The URL of the endpoint</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>url</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The URL of the endpoint</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.endpoint.APIEndpoint.get" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">get</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.endpoint.APIEndpoint.get" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Queries the specified resource from the API endpoint.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>identifier</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The identifier of the resource to be queried.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The specified resource as an instance of the corresponding model class.</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>identifier</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The identifier of the resource to be queried.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The specified resource as an instance of the corresponding model class.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.endpoint.APIEndpoint.post" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">post</span><span class="p">(</span><span class="n">resource</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">post</span><span class="p">(</span><span class="n">resource</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.endpoint.APIEndpoint.post" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Allows to post a resource to the StreamPipes API.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>resource</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The resource to be posted.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>resource</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The resource to be posted.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../../model/resource/resource/#streampipes.model.resource.resource.Resource">Resource</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2725,8 +2711,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2735,49 +2720,48 @@
<h2 id="streampipes.endpoint.endpoint.Endpoint" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">Endpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">Endpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.endpoint.Endpoint" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="abc.ABC">ABC</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="abc.ABC">ABC</span></code></p>
-
+
<p>Abstract implementation of a StreamPipes endpoint.</p>
<p>Serves as template for all endpoints used for interaction with a StreamPipes instance.
By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>parent_client</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>This parameter expects the instance of <code>StreamPipesClient</code> the endpoint is attached to.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>StreamPipesClient</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>parent_client</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>This parameter expects the instance of <code>StreamPipesClient</code> the endpoint is attached to.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="StreamPipesClient">StreamPipesClient</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2793,8 +2777,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2803,23 +2786,23 @@
<h2 id="streampipes.endpoint.endpoint.MessagingEndpoint" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">MessagingEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">MessagingEndpoint</span><span class="p">(</span><span class="n">parent_client</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.endpoint.MessagingEndpoint" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.endpoint.endpoint.Endpoint" href="#streampipes.endpoint.endpoint.Endpoint">Endpoint</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Endpoint (streampipes.endpoint.endpoint.Endpoint)" href="#streampipes.endpoint.endpoint.Endpoint">Endpoint</a></code></p>
-
+
<p>Abstract implementation of a StreamPipes messaging endpoint.</p>
<p>Serves as template for all endpoints used for interacting with the StreamPipes messaging layer directly.
Therefore, they need to provide the functionality to talk with the broker system running in StreamPipes.
By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p>
-
+
<div class="doc doc-children">
@@ -2834,8 +2817,8 @@
<h3 id="streampipes.endpoint.endpoint.MessagingEndpoint.broker" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">broker</span><span class="p">:</span> <span class="n">Broker</span></code>
-
+ <code class="highlight language-python"><span class="n">broker</span><span class="p">:</span> <span class="n">Broker</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-property"><code>property</code></small>
<small class="doc doc-label doc-label-writable"><code>writable</code></small>
@@ -2844,141 +2827,135 @@
<a href="#streampipes.endpoint.endpoint.MessagingEndpoint.broker" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Defines the broker instance that is used to connect to StreamPipes' messaging layer.</p>
<p>This instance enables the client to authenticate to the broker used in the target StreamPipes instance,
to consume messages from and to write messages to the broker.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.endpoint.exceptions.MessagingEndpointNotConfiguredError" href="../exceptions/#streampipes.endpoint.exceptions.MessagingEndpointNotConfiguredError">MessagingEndpointNotConfiguredError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If the endpoint is used before the broker instance is set via <code>configure()</code></p>
- </div>
- </td>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="MessagingEndpointNotConfiguredError (streampipes.endpoint.exceptions.MessagingEndpointNotConfiguredError)" href="../exceptions/#streampipes.endpoint.exceptions.MessagingEndpointNotConfiguredError">MessagingEndpointNotConfiguredError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If the endpoint is used before the broker instance is set via <code>configure()</code></p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>broker</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The broker instance to be used to communicate with StreamPipes' messaging layer.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.broker.Broker" href="../../functions/broker/broker/#streampipes.functions.broker.broker.Broker">Broker</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>broker</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The broker instance to be used to communicate with StreamPipes' messaging layer.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Broker (streampipes.functions.broker.broker.Broker)" href="../../functions/broker/broker/#streampipes.functions.broker.broker.Broker">Broker</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.endpoint.endpoint.MessagingEndpoint.configure" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">configure</span><span class="p">(</span><span class="n">broker</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">configure</span><span class="p">(</span><span class="n">broker</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.endpoint.MessagingEndpoint.configure" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Configures the message endpoint by setting the broker instance to be used.</p>
<p>This configuration step is required before the endpoint can be actually used.
The based <code>broker</code> instance is passed to an internal property.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>broker</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Broker instance that should be used for this endpoint</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.broker.Broker" href="../../functions/broker/broker/#streampipes.functions.broker.broker.Broker">Broker</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>broker</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Broker instance that should be used for this endpoint</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Broker (streampipes.functions.broker.broker.Broker)" href="../../functions/broker/broker/#streampipes.functions.broker.broker.Broker">Broker</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2986,8 +2963,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2996,7 +2972,7 @@
</div>
- </div>
+ </div>
</div>
@@ -3005,7 +2981,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/endpoint/exceptions/index.html b/docs-python/dev/reference/endpoint/exceptions/index.html
index 88c3c7c..a69b729 100644
--- a/docs-python/dev/reference/endpoint/exceptions/index.html
+++ b/docs-python/dev/reference/endpoint/exceptions/index.html
@@ -2292,11 +2292,11 @@
<a id="streampipes.endpoint.exceptions"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Custom exceptions dedicated to the endpoints module.</p>
-
+
<div class="doc doc-children">
@@ -2312,49 +2312,48 @@
<h2 id="streampipes.endpoint.exceptions.MessagingEndpointNotConfiguredError" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">MessagingEndpointNotConfiguredError</span><span class="p">(</span><span class="n">endpoint_name</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">MessagingEndpointNotConfiguredError</span><span class="p">(</span><span class="n">endpoint_name</span><span class="p">)</span></code>
<a href="#streampipes.endpoint.exceptions.MessagingEndpointNotConfiguredError" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code>Exception</code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="Exception">Exception</span></code></p>
-
+
<p>Exception that indicates that an instance of a messaging endpoint has not been configured.</p>
<p>This error occurs when an instance of a messaging endpoint is used before
the broker instance to be used is configured by passing it to the <code>configure()</code> method.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>endpoint_name</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The name of the endpoint that caused the error</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>endpoint_name</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The name of the endpoint that caused the error</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2370,8 +2369,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2380,7 +2378,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2389,7 +2387,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/function_zoo/river_function/index.html b/docs-python/dev/reference/function_zoo/river_function/index.html
index eab93d3..071eb89 100644
--- a/docs-python/dev/reference/function_zoo/river_function/index.html
+++ b/docs-python/dev/reference/function_zoo/river_function/index.html
@@ -2470,9 +2470,9 @@
<a id="streampipes.function_zoo.river_function"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2488,185 +2488,184 @@
<h2 id="streampipes.function_zoo.river_function.OnlineML" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">OnlineML</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">stream_ids</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">prediction_type</span><span class="o">=</span><span class="n">RuntimeType</span><span class="o">.</span><span class="n">STRING</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">supervised</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">target_label</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">on_start</span><span class="o">=</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">on_event</span><span class="o">=</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">on_stop</span><span class="o">=</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="kc">None</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">OnlineML</span><span class="p">(</span><span class="n">client</span><span class="p">,</span> <span class="n">stream_ids</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">prediction_type</span><span class="o">=</span><span class="n">RuntimeType</span><span class="o">.</span><span class="n">STRING</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">supervised</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">target_label</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">on_start</span><span class="o">=</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">on_event</span><span class="o">=</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">on_stop</span><span class="o">=</span><span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="kc">None</span><span class="p">)</span></code>
<a href="#streampipes.function_zoo.river_function.OnlineML" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Wrapper class to enable an easy usage for Online Machine Learning models of the River library.</p>
<p>It creates a StreamPipesFunction to train a model with the incoming events of a data stream and
creates an output data stream that publishes the prediction to StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>client</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The client for the StreamPipes API.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.client.client.StreamPipesClient" href="../../client/client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>stream_ids</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The ids of the data stream to train the model.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[str]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>model</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The model to train. It meant to be a River model/pipeline,
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>client</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The client for the StreamPipes API.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="StreamPipesClient (streampipes.client.client.StreamPipesClient)" href="../../client/client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>stream_ids</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The ids of the data stream to train the model.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>model</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The model to train. It meant to be a River model/pipeline,
but can be every model with a 'learn_one' and 'predict_one' methode.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Any">Any</span></code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>prediction_type</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The data type of the prediction.
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Any">Any</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>prediction_type</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The data type of the prediction.
Is only needed when you continue to work with the prediction in StreamPipes.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.STRING.value">value</span></code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>supervised</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Define if the model is supervised or unsupervised.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>bool</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>False</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>target_label</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Define the name of the target attribute if the model is supervised.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[str]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>None</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>on_start</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A function to be called when this StreamPipesFunction gets started.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>, <a class="autorefs autorefs-internal" title="streampipes.functions.utils.function_context.FunctionContext" href="../../functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext">FunctionContext</a>], None]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>lambda self, context: None</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>on_event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A function to be called when this StreamPipesFunction receives an event.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>, <span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>], str], None]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>lambda self, event, streamId: None</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>on_stop</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A function to be called when this StreamPipesFunction gets stopped.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>], None]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>lambda self: None</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.STRING">STRING</span>.value</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>supervised</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Define if the model is supervised or unsupervised.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="bool">bool</span></code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>False</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>target_label</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Define the name of the target attribute if the model is supervised.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>on_start</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A function to be called when this StreamPipesFunction gets started.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>, <a class="autorefs autorefs-internal" title="FunctionContext (streampipes.functions.utils.function_context.FunctionContext)" href="../../functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext">FunctionContext</a>], None]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>lambda self, context: None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>on_event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A function to be called when this StreamPipesFunction receives an event.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>, <span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>], <span title="str">str</span>], None]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>lambda self, event, streamId: None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>on_stop</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A function to be called when this StreamPipesFunction gets stopped.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>], None]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>lambda self: None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2678,87 +2677,80 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.OnlineML.set_learning" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">set_learning</span><span class="p">(</span><span class="n">learning</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">set_learning</span><span class="p">(</span><span class="n">learning</span><span class="p">)</span></code>
<a href="#streampipes.function_zoo.river_function.OnlineML.set_learning" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Start or stop the training of the model.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>learning</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Defines if the training should be continued</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>bool</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>learning</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Defines if the training should be continued</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="bool">bool</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.OnlineML.start" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">start</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">start</span><span class="p">()</span></code>
<a href="#streampipes.function_zoo.river_function.OnlineML.start" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Registers the function and starts the training.</p>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.OnlineML.stop" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">stop</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">stop</span><span class="p">()</span></code>
<a href="#streampipes.function_zoo.river_function.OnlineML.stop" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Stops the function and ends the training forever.</p>
- </div>
+ </div>
</div>
@@ -2766,8 +2758,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2776,134 +2767,133 @@
<h2 id="streampipes.function_zoo.river_function.RiverFunction" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">RiverFunction</span><span class="p">(</span><span class="n">function_definition</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">supervised</span><span class="p">,</span> <span class="n">target_label</span><span class="p">,</span> <span class="n">on_start</span><span class="p">,</span> <span class="n">on_event</span><span class="p">,</span> <span class="n">on_stop</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">RiverFunction</span><span class="p">(</span><span class="n">function_definition</span><span class="p">,</span> <span class="n">model</span><span class="p">,</span> <span class="n">supervised</span><span class="p">,</span> <span class="n">target_label</span><span class="p">,</span> <span class="n">on_start</span><span class="p">,</span> <span class="n">on_event</span><span class="p">,</span> <span class="n">on_stop</span><span class="p">)</span></code>
<a href="#streampipes.function_zoo.river_function.RiverFunction" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.functions.streampipes_function.StreamPipesFunction" href="../../functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="StreamPipesFunction (streampipes.functions.streampipes_function.StreamPipesFunction)" href="../../functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a></code></p>
-
+
<p>Implementation of a StreamPipesFunction to enable an easy usage
for Online Machine Learning models of the <a href="https://riverml.xyz/">River library</a>.</p>
<p>The function trains the model with the incoming events and publishes the prediction to an output data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>function_definition</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The function definition which contains the output stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.function_definition.FunctionDefinition" href="../../model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition">FunctionDefinition</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>model</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The model to train. It meant to be a River model/pipeline,
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>function_definition</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The function definition which contains the output stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="FunctionDefinition (streampipes.model.resource.function_definition.FunctionDefinition)" href="../../model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition">FunctionDefinition</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>model</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The model to train. It meant to be a River model/pipeline,
but can be every model with a 'learn_one' and 'predict_one' method.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Any">Any</span></code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>supervised</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Define if the model is supervised or unsupervised.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>bool</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>target_label</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Define the name of the target attribute if the model is supervised.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[str]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>on_start</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A function to be called when this StreamPipesFunction gets started.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>, <a class="autorefs autorefs-internal" title="streampipes.functions.utils.function_context.FunctionContext" href="../../functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext">FunctionContext</a>], None]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>on_event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A function to be called when this StreamPipesFunction receives an event.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>, <span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>], str], None]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>on_stop</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A function to be called when this StreamPipesFunction gets stopped.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>], None]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Any">Any</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>supervised</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Define if the model is supervised or unsupervised.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="bool">bool</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>target_label</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Define the name of the target attribute if the model is supervised.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>on_start</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A function to be called when this StreamPipesFunction gets started.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>, <a class="autorefs autorefs-internal" title="FunctionContext (streampipes.functions.utils.function_context.FunctionContext)" href="../../functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext">FunctionContext</a>], None]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>on_event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A function to be called when this StreamPipesFunction receives an event.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>, <span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>], <span title="str">str</span>], None]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>on_stop</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A function to be called when this StreamPipesFunction gets stopped.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Callable">Callable</span>[[<span title="typing.Any">Any</span>], None]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2915,378 +2905,356 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.RiverFunction.add_output" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">add_output</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">event</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">add_output</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">event</span><span class="p">)</span></code>
<a href="#streampipes.function_zoo.river_function.RiverFunction.add_output" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Send an event via an output data stream to StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>stream_id</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The id of the output data stream</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>stream_id</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The id of the output data stream</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The event which should be sent</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The event which should be sent</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.RiverFunction.getFunctionId" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">getFunctionId</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">getFunctionId</span><span class="p">()</span></code>
<a href="#streampipes.function_zoo.river_function.RiverFunction.getFunctionId" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the id of the function.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>function_id</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Identification object of the StreamPipes function</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.function_definition.FunctionId" href="../../model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionId">FunctionId</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>function_id</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Identification object of the StreamPipes function</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="FunctionId (streampipes.model.resource.function_definition.FunctionId)" href="../../model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionId">FunctionId</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.RiverFunction.onEvent" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">onEvent</span><span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">onEvent</span><span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">)</span></code>
<a href="#streampipes.function_zoo.river_function.RiverFunction.onEvent" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Trains the model with the incoming events and sends the prediction back to StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The incoming event that serves as input for the function</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The incoming event that serves as input for the function</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>streamId</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Identifier of the corresponding data stream</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>streamId</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Identifier of the corresponding data stream</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.RiverFunction.onServiceStarted" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">onServiceStarted</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">onServiceStarted</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
<a href="#streampipes.function_zoo.river_function.RiverFunction.onServiceStarted" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Executes the <code>on_start</code> method of the function.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>context</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The functions' context</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.utils.function_context.FunctionContext" href="../../functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext">FunctionContext</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>context</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The functions' context</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="FunctionContext (streampipes.functions.utils.function_context.FunctionContext)" href="../../functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext">FunctionContext</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.RiverFunction.onServiceStopped" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">onServiceStopped</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">onServiceStopped</span><span class="p">()</span></code>
<a href="#streampipes.function_zoo.river_function.RiverFunction.onServiceStopped" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Executes the <code>on_stop</code> function.</p>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.RiverFunction.requiredStreamIds" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">requiredStreamIds</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">requiredStreamIds</span><span class="p">()</span></code>
<a href="#streampipes.function_zoo.river_function.RiverFunction.requiredStreamIds" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get the ids of the streams needed by the function.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>stream_ids</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>List of the stream ids</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[str]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>stream_ids</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>List of the stream ids</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.function_zoo.river_function.RiverFunction.stop" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">stop</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">stop</span><span class="p">()</span></code>
<a href="#streampipes.function_zoo.river_function.RiverFunction.stop" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Stops the function and disconnects from the output streams.</p>
- </div>
+ </div>
</div>
@@ -3294,8 +3262,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3304,7 +3271,7 @@
</div>
- </div>
+ </div>
</div>
@@ -3313,7 +3280,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/broker/index.html b/docs-python/dev/reference/functions/broker/broker/index.html
index ffa38d8..249d7d1 100644
--- a/docs-python/dev/reference/functions/broker/broker/index.html
+++ b/docs-python/dev/reference/functions/broker/broker/index.html
@@ -2334,9 +2334,9 @@
<a id="streampipes.functions.broker.broker"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2352,22 +2352,22 @@
<h2 id="streampipes.functions.broker.broker.Broker" class="doc doc-heading">
- <code>Broker</code>
+ <code>Broker</code>
<a href="#streampipes.functions.broker.broker.Broker" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="abc.ABC">ABC</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="abc.ABC">ABC</span></code></p>
-
+
<p>Abstract implementation of a broker for consumer and publisher.</p>
<p>It contains the basic logic to connect to a data stream.</p>
-
+
<div class="doc doc-children">
@@ -2379,14 +2379,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.broker.Broker.connect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2394,74 +2392,70 @@
<a href="#streampipes.functions.broker.broker.Broker.connect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Connects to the broker running in StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Contains the meta information (resources) for a data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Contains the meta information (resources) for a data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.broker.Broker.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-async"><code>async</code></small>
@@ -2470,36 +2464,35 @@
<a href="#streampipes.functions.broker.broker.Broker.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Closes the connection to the server.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2507,8 +2500,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2517,7 +2509,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2526,7 +2518,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/broker_handler/index.html b/docs-python/dev/reference/functions/broker/broker_handler/index.html
index e68c63e..204efdf 100644
--- a/docs-python/dev/reference/functions/broker/broker_handler/index.html
+++ b/docs-python/dev/reference/functions/broker/broker_handler/index.html
@@ -2336,9 +2336,9 @@
<a id="streampipes.functions.broker.broker_handler"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2354,21 +2354,21 @@
<h2 id="streampipes.functions.broker.broker_handler.SupportedBroker" class="doc doc-heading">
- <code>SupportedBroker</code>
+ <code>SupportedBroker</code>
<a href="#streampipes.functions.broker.broker_handler.SupportedBroker" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="enum.Enum">Enum</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="enum.Enum">Enum</span></code></p>
-
+
<p>Enum for the supported brokers.</p>
-
+
<div class="doc doc-children">
@@ -2384,8 +2384,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2394,20 +2393,20 @@
<h2 id="streampipes.functions.broker.broker_handler.UnsupportedBrokerError" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">UnsupportedBrokerError</span><span class="p">(</span><span class="n">broker_name</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">UnsupportedBrokerError</span><span class="p">(</span><span class="n">broker_name</span><span class="p">)</span></code>
<a href="#streampipes.functions.broker.broker_handler.UnsupportedBrokerError" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code>Exception</code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="Exception">Exception</span></code></p>
-
+
<p>Exception if a broker isn't implemented yet.</p>
-
+
<div class="doc doc-children">
@@ -2423,209 +2422,198 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h2 id="streampipes.functions.broker.broker_handler.get_broker" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get_broker</span><span class="p">(</span><span class="n">data_stream</span><span class="p">,</span> <span class="n">is_publisher</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">get_broker</span><span class="p">(</span><span class="n">data_stream</span><span class="p">,</span> <span class="n">is_publisher</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
<a href="#streampipes.functions.broker.broker_handler.get_broker" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Derive the broker for the given data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Data stream instance from which the broker is inferred</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>broker</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The corresponding broker instance derived from data stream.</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Data stream instance from which the broker is inferred</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Broker" href="../broker/#streampipes.functions.broker.broker.Broker">Broker</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.broker_handler.UnsupportedBrokerError" href="#streampipes.functions.broker.broker_handler.UnsupportedBrokerError">UnsupportedBrokerError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>Is raised when the given data stream belongs to a broker that is currently not supported by StreamPipes Python.</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>broker</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The corresponding broker instance derived from data stream.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Broker (streampipes.functions.broker.Broker)" href="../broker/#streampipes.functions.broker.broker.Broker">Broker</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="UnsupportedBrokerError (streampipes.functions.broker.broker_handler.UnsupportedBrokerError)" href="#streampipes.functions.broker.broker_handler.UnsupportedBrokerError">UnsupportedBrokerError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>Is raised when the given data stream belongs to a broker that is currently not supported by StreamPipes Python.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h2 id="streampipes.functions.broker.broker_handler.get_broker_description" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get_broker_description</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">get_broker_description</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
<a href="#streampipes.functions.broker.broker_handler.get_broker_description" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Derive the decription of the broker for the given data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Data stream instance from which the broker is inferred</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>broker</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The corresponding broker description derived from data stream.</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Data stream instance from which the broker is inferred</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.broker_handler.SupportedBroker" href="#streampipes.functions.broker.broker_handler.SupportedBroker">SupportedBroker</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.broker_handler.UnsupportedBrokerError" href="#streampipes.functions.broker.broker_handler.UnsupportedBrokerError">UnsupportedBrokerError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>Is raised when the given data stream belongs to a broker that is currently not supported by StreamPipes Python.</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>broker</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The corresponding broker description derived from data stream.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="SupportedBroker (streampipes.functions.broker.broker_handler.SupportedBroker)" href="#streampipes.functions.broker.broker_handler.SupportedBroker">SupportedBroker</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="UnsupportedBrokerError (streampipes.functions.broker.broker_handler.UnsupportedBrokerError)" href="#streampipes.functions.broker.broker_handler.UnsupportedBrokerError">UnsupportedBrokerError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>Is raised when the given data stream belongs to a broker that is currently not supported by StreamPipes Python.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
@@ -2633,7 +2621,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2642,7 +2630,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/consumer/index.html b/docs-python/dev/reference/functions/broker/consumer/index.html
index c4b443c..4addb00 100644
--- a/docs-python/dev/reference/functions/broker/consumer/index.html
+++ b/docs-python/dev/reference/functions/broker/consumer/index.html
@@ -2348,9 +2348,9 @@
<a id="streampipes.functions.broker.consumer"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2366,22 +2366,22 @@
<h2 id="streampipes.functions.broker.consumer.Consumer" class="doc doc-heading">
- <code>Consumer</code>
+ <code>Consumer</code>
<a href="#streampipes.functions.broker.consumer.Consumer" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Broker" href="../broker/#streampipes.functions.broker.broker.Broker">Broker</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Broker (streampipes.functions.broker.Broker)" href="../broker/#streampipes.functions.broker.broker.Broker">Broker</a></code></p>
-
+
<p>Abstract implementation a consumer for a broker.</p>
<p>A consumer allows to subscribe to a data stream.</p>
-
+
<div class="doc doc-children">
@@ -2393,14 +2393,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.consumer.Consumer.connect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2408,74 +2406,70 @@
<a href="#streampipes.functions.broker.consumer.Consumer.connect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Connects to the broker running in StreamPipes and creates a subscription.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Contains the meta information (resources) for a data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Contains the meta information (resources) for a data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.consumer.Consumer.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-async"><code>async</code></small>
@@ -2484,47 +2478,44 @@
<a href="#streampipes.functions.broker.consumer.Consumer.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Closes the connection to the server.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.consumer.Consumer.get_message" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get_message</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">get_message</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
@@ -2532,40 +2523,39 @@
<a href="#streampipes.functions.broker.consumer.Consumer.get_message" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get the published messages of the subscription.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>iterator</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>An async iterator for the messages.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.AsyncIterator">AsyncIterator</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>iterator</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>An async iterator for the messages.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.AsyncIterator">AsyncIterator</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2573,8 +2563,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2583,7 +2572,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2592,7 +2581,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/kafka/kafka_consumer/index.html b/docs-python/dev/reference/functions/broker/kafka/kafka_consumer/index.html
index 9fdb751..edd2de8 100644
--- a/docs-python/dev/reference/functions/broker/kafka/kafka_consumer/index.html
+++ b/docs-python/dev/reference/functions/broker/kafka/kafka_consumer/index.html
@@ -2350,9 +2350,9 @@
<a id="streampipes.functions.broker.kafka.kafka_consumer"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2368,21 +2368,21 @@
<h2 id="streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer" class="doc doc-heading">
- <code>KafkaConsumer</code>
+ <code>KafkaConsumer</code>
<a href="#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Consumer" href="../../consumer/#streampipes.functions.broker.consumer.Consumer">Consumer</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Consumer (streampipes.functions.broker.Consumer)" href="../../consumer/#streampipes.functions.broker.consumer.Consumer">Consumer</a></code></p>
-
+
<p>Implementation of a consumer for Kafka</p>
-
+
<div class="doc doc-children">
@@ -2394,14 +2394,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.connect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2409,74 +2407,70 @@
<a href="#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.connect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Connects to the broker running in StreamPipes and creates a subscription.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Contains the meta information (resources) for a data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Contains the meta information (resources) for a data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2484,84 +2478,80 @@
<a href="#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Closes the connection to the server.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.get_message" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get_message</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">get_message</span><span class="p">()</span></code>
<a href="#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.get_message" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get the published messages of the subscription.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>iterator</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>An async iterator for the messages.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.AsyncIterator">AsyncIterator</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>iterator</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>An async iterator for the messages.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.AsyncIterator">AsyncIterator</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2569,8 +2559,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2579,7 +2568,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2588,7 +2577,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/kafka/kafka_message_fetcher/index.html b/docs-python/dev/reference/functions/broker/kafka/kafka_message_fetcher/index.html
index f46d570..da64459 100644
--- a/docs-python/dev/reference/functions/broker/kafka/kafka_message_fetcher/index.html
+++ b/docs-python/dev/reference/functions/broker/kafka/kafka_message_fetcher/index.html
@@ -2310,9 +2310,9 @@
<a id="streampipes.functions.broker.kafka.kafka_message_fetcher"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2328,41 +2328,40 @@
<h2 id="streampipes.functions.broker.kafka.kafka_message_fetcher.KafkaMessage" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">KafkaMessage</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">KafkaMessage</span><span class="p">(</span><span class="n">data</span><span class="p">)</span></code>
<a href="#streampipes.functions.broker.kafka.kafka_message_fetcher.KafkaMessage" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>An internal representation of a Kafka message</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The received Kafka message as byte array</p>
- </div>
- <p>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The received Kafka message as byte array</p>
+ </div>
+ <p>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2378,8 +2377,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2388,45 +2386,44 @@
<h2 id="streampipes.functions.broker.kafka.kafka_message_fetcher.KafkaMessageFetcher" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">KafkaMessageFetcher</span><span class="p">(</span><span class="n">consumer</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">KafkaMessageFetcher</span><span class="p">(</span><span class="n">consumer</span><span class="p">)</span></code>
<a href="#streampipes.functions.broker.kafka.kafka_message_fetcher.KafkaMessageFetcher" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Fetches the next message from Kafka</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>consumer</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The Kafka consumer</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="confluent_kafka.Consumer">Consumer</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>consumer</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The Kafka consumer</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="confluent_kafka.Consumer">Consumer</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2442,8 +2439,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2452,7 +2448,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2461,7 +2457,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/kafka/kafka_publisher/index.html b/docs-python/dev/reference/functions/broker/kafka/kafka_publisher/index.html
index d461745..83452c5 100644
--- a/docs-python/dev/reference/functions/broker/kafka/kafka_publisher/index.html
+++ b/docs-python/dev/reference/functions/broker/kafka/kafka_publisher/index.html
@@ -2350,9 +2350,9 @@
<a id="streampipes.functions.broker.kafka.kafka_publisher"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2368,21 +2368,21 @@
<h2 id="streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher" class="doc doc-heading">
- <code>KafkaPublisher</code>
+ <code>KafkaPublisher</code>
<a href="#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Publisher" href="../../publisher/#streampipes.functions.broker.publisher.Publisher">Publisher</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Publisher (streampipes.functions.broker.Publisher)" href="../../publisher/#streampipes.functions.broker.publisher.Publisher">Publisher</a></code></p>
-
+
<p>Implementation of a publisher for Kafka</p>
-
+
<div class="doc doc-children">
@@ -2394,14 +2394,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.connect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2409,74 +2407,70 @@
<a href="#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.connect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Connects to the broker running in StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Contains the meta information (resources) for a data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Contains the meta information (resources) for a data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2484,47 +2478,44 @@
<a href="#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Closes the connection to the server.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.publish_event" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">publish_event</span><span class="p">(</span><span class="n">event</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">publish_event</span><span class="p">(</span><span class="n">event</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2532,63 +2523,61 @@
<a href="#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.publish_event" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Publish an event to a connected data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The event to be published.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The event to be published.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2596,8 +2585,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2606,7 +2594,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2615,7 +2603,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/nats/nats_consumer/index.html b/docs-python/dev/reference/functions/broker/nats/nats_consumer/index.html
index b17cec0..7353552 100644
--- a/docs-python/dev/reference/functions/broker/nats/nats_consumer/index.html
+++ b/docs-python/dev/reference/functions/broker/nats/nats_consumer/index.html
@@ -2350,9 +2350,9 @@
<a id="streampipes.functions.broker.nats.nats_consumer"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2368,21 +2368,21 @@
<h2 id="streampipes.functions.broker.nats.nats_consumer.NatsConsumer" class="doc doc-heading">
- <code>NatsConsumer</code>
+ <code>NatsConsumer</code>
<a href="#streampipes.functions.broker.nats.nats_consumer.NatsConsumer" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Consumer" href="../../consumer/#streampipes.functions.broker.consumer.Consumer">Consumer</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Consumer (streampipes.functions.broker.Consumer)" href="../../consumer/#streampipes.functions.broker.consumer.Consumer">Consumer</a></code></p>
-
+
<p>Implementation of a consumer for NATS</p>
-
+
<div class="doc doc-children">
@@ -2394,14 +2394,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.nats.nats_consumer.NatsConsumer.connect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2409,74 +2407,70 @@
<a href="#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.connect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Connects to the broker running in StreamPipes and creates a subscription.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Contains the meta information (resources) for a data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Contains the meta information (resources) for a data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.nats.nats_consumer.NatsConsumer.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2484,84 +2478,80 @@
<a href="#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Closes the connection to the server.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.nats.nats_consumer.NatsConsumer.get_message" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get_message</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">get_message</span><span class="p">()</span></code>
<a href="#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.get_message" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get the published messages of the subscription.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>message_iterator</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>An async iterator for the messages.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.AsyncIterator">AsyncIterator</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>message_iterator</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>An async iterator for the messages.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.AsyncIterator">AsyncIterator</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2569,8 +2559,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2579,7 +2568,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2588,7 +2577,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/nats/nats_publisher/index.html b/docs-python/dev/reference/functions/broker/nats/nats_publisher/index.html
index e6c7d94..f61d71e 100644
--- a/docs-python/dev/reference/functions/broker/nats/nats_publisher/index.html
+++ b/docs-python/dev/reference/functions/broker/nats/nats_publisher/index.html
@@ -2350,9 +2350,9 @@
<a id="streampipes.functions.broker.nats.nats_publisher"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2368,21 +2368,21 @@
<h2 id="streampipes.functions.broker.nats.nats_publisher.NatsPublisher" class="doc doc-heading">
- <code>NatsPublisher</code>
+ <code>NatsPublisher</code>
<a href="#streampipes.functions.broker.nats.nats_publisher.NatsPublisher" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Publisher" href="../../publisher/#streampipes.functions.broker.publisher.Publisher">Publisher</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Publisher (streampipes.functions.broker.Publisher)" href="../../publisher/#streampipes.functions.broker.publisher.Publisher">Publisher</a></code></p>
-
+
<p>Implementation of a publisher for NATS</p>
-
+
<div class="doc doc-children">
@@ -2394,14 +2394,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.nats.nats_publisher.NatsPublisher.connect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2409,74 +2407,70 @@
<a href="#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.connect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Connects to the broker running in StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Contains the meta information (resources) for a data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Contains the meta information (resources) for a data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.nats.nats_publisher.NatsPublisher.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2484,47 +2478,44 @@
<a href="#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Closes the connection to the server.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.nats.nats_publisher.NatsPublisher.publish_event" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">publish_event</span><span class="p">(</span><span class="n">event</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">publish_event</span><span class="p">(</span><span class="n">event</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2532,63 +2523,61 @@
<a href="#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.publish_event" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Publish an event to a connected data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The event to be published.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The event to be published.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2596,8 +2585,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2606,7 +2594,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2615,7 +2603,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/output_collector/index.html b/docs-python/dev/reference/functions/broker/output_collector/index.html
index 7eaa5aa..2089be2 100644
--- a/docs-python/dev/reference/functions/broker/output_collector/index.html
+++ b/docs-python/dev/reference/functions/broker/output_collector/index.html
@@ -2334,9 +2334,9 @@
<a id="streampipes.functions.broker.output_collector"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2352,73 +2352,71 @@
<h2 id="streampipes.functions.broker.output_collector.OutputCollector" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">OutputCollector</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">OutputCollector</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
<a href="#streampipes.functions.broker.output_collector.OutputCollector" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Collector for output events. The events are published to an output data stream.
Therefore, the output collector establishes a connection to the broker.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The output data stream that will receive the events.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The output data stream that will receive the events.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.functions.broker.output_collector.OutputCollector.publisher">publisher</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>The publisher instance that sends the data to StreamPipes</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Publisher" href="../publisher/#streampipes.functions.broker.publisher.Publisher">Publisher</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.broker.output_collector.OutputCollector.publisher">publisher</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>The publisher instance that sends the data to StreamPipes</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Publisher (streampipes.functions.broker.Publisher)" href="../publisher/#streampipes.functions.broker.publisher.Publisher">Publisher</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2430,118 +2428,111 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.output_collector.OutputCollector.collect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">collect</span><span class="p">(</span><span class="n">event</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">collect</span><span class="p">(</span><span class="n">event</span><span class="p">)</span></code>
<a href="#streampipes.functions.broker.output_collector.OutputCollector.collect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Publishes an event to the output stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The event to be published.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The event to be published.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.output_collector.OutputCollector.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
<a href="#streampipes.functions.broker.output_collector.OutputCollector.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Disconnects the broker of the output collector.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2549,8 +2540,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2559,7 +2549,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2568,7 +2558,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/broker/publisher/index.html b/docs-python/dev/reference/functions/broker/publisher/index.html
index 981b7e5..7825ff0 100644
--- a/docs-python/dev/reference/functions/broker/publisher/index.html
+++ b/docs-python/dev/reference/functions/broker/publisher/index.html
@@ -2348,9 +2348,9 @@
<a id="streampipes.functions.broker.publisher"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2366,22 +2366,22 @@
<h2 id="streampipes.functions.broker.publisher.Publisher" class="doc doc-heading">
- <code>Publisher</code>
+ <code>Publisher</code>
<a href="#streampipes.functions.broker.publisher.Publisher" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Broker" href="../broker/#streampipes.functions.broker.broker.Broker">Broker</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Broker (streampipes.functions.broker.Broker)" href="../broker/#streampipes.functions.broker.broker.Broker">Broker</a></code></p>
-
+
<p>Abstract implementation of a publisher for a broker.</p>
<p>A publisher allows to publish events to a data stream.</p>
-
+
<div class="doc doc-children">
@@ -2393,14 +2393,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.publisher.Publisher.connect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">connect</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
</span>
@@ -2408,74 +2406,70 @@
<a href="#streampipes.functions.broker.publisher.Publisher.connect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Connects to the broker running in StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Contains the meta information (resources) for a data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Contains the meta information (resources) for a data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.publisher.Publisher.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-async"><code>async</code></small>
@@ -2484,47 +2478,44 @@
<a href="#streampipes.functions.broker.publisher.Publisher.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Closes the connection to the server.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.broker.publisher.Publisher.publish_event" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">publish_event</span><span class="p">(</span><span class="n">event</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">publish_event</span><span class="p">(</span><span class="n">event</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
<small class="doc doc-label doc-label-async"><code>async</code></small>
@@ -2533,63 +2524,61 @@
<a href="#streampipes.functions.broker.publisher.Publisher.publish_event" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Publish an event to a connected data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The event to be published.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The event to be published.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2597,8 +2586,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2607,7 +2595,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2616,7 +2604,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/function_handler/index.html b/docs-python/dev/reference/functions/function_handler/index.html
index 1cce8db..cdfc440 100644
--- a/docs-python/dev/reference/functions/function_handler/index.html
+++ b/docs-python/dev/reference/functions/function_handler/index.html
@@ -2346,9 +2346,9 @@
<a id="streampipes.functions.function_handler"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2364,102 +2364,100 @@
<h2 id="streampipes.functions.function_handler.FunctionHandler" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">FunctionHandler</span><span class="p">(</span><span class="n">registration</span><span class="p">,</span> <span class="n">client</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">FunctionHandler</span><span class="p">(</span><span class="n">registration</span><span class="p">,</span> <span class="n">client</span><span class="p">)</span></code>
<a href="#streampipes.functions.function_handler.FunctionHandler" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>The function handler manages the StreamPipes Functions.</p>
<p>It controls the connection to the brokers, starts the functions, manages the broadcast of the live data
and is able to stop the connection to the brokers and functions.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>registration</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The registration, that contains the StreamPipesFunctions.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.registration.Registration" href="../registration/#streampipes.functions.registration.Registration">Registration</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>registration</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The registration, that contains the StreamPipesFunctions.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Registration (streampipes.functions.registration.Registration)" href="../registration/#streampipes.functions.registration.Registration">Registration</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>client</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The client to interact with the API.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="StreamPipesClient (streampipes.client.client.StreamPipesClient)" href="../../client/client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
<tr>
- <td><code>client</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The client to interact with the API.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.client.client.StreamPipesClient" href="../../client/client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.function_handler.FunctionHandler.stream_contexts">stream_contexts</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Map of all data stream contexts</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <a class="autorefs autorefs-internal" title="DataStreamContext (streampipes.functions.utils.data_stream_context.DataStreamContext)" href="../utils/data_stream_context/#streampipes.functions.utils.data_stream_context.DataStreamContext">DataStreamContext</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.function_handler.FunctionHandler.brokers">brokers</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>List of all registered brokers</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="Broker (streampipes.functions.broker.Broker)" href="../broker/broker/#streampipes.functions.broker.broker.Broker">Broker</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><code><span title="streampipes.functions.function_handler.FunctionHandler.stream_contexts">stream_contexts</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Map of all data stream contexts</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <a class="autorefs autorefs-internal" title="streampipes.functions.utils.data_stream_context.DataStreamContext" href="../utils/data_stream_context/#streampipes.functions.utils.data_stream_context.DataStreamContext">DataStreamContext</a>]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.functions.function_handler.FunctionHandler.brokers">brokers</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>List of all registered brokers</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="streampipes.functions.broker.Broker" href="../broker/broker/#streampipes.functions.broker.broker.Broker">Broker</a>]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
<div class="doc doc-children">
@@ -2471,160 +2469,150 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.function_handler.FunctionHandler.disconnect" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">disconnect</span><span class="p">()</span></code>
<a href="#streampipes.functions.function_handler.FunctionHandler.disconnect" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Disconnects from the brokers and stops all functions.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.function_handler.FunctionHandler.force_stop_functions" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">force_stop_functions</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">force_stop_functions</span><span class="p">()</span></code>
<a href="#streampipes.functions.function_handler.FunctionHandler.force_stop_functions" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Stops the StreamPipesFunctions when the event loop was stopped without stopping the functions.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">WARNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-warns-annotation">
+ <code><span title="UserWarning">UserWarning</span></code>
</span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-warns-details">
+ <div class="doc-md-description">
+ <p>If there is a running event loop and the functions should be stopped by disconnecting from the broker.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>WARNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-warns-annotation">
- <code>UserWarning</code>
- </span>
- </td>
- <td class="doc-warns-details">
- <div class="doc-md-description">
- <p>If there is a running event loop and the functions should be stopped by disconnecting from the broker.</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.function_handler.FunctionHandler.initializeFunctions" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">initializeFunctions</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">initializeFunctions</span><span class="p">()</span></code>
<a href="#streampipes.functions.function_handler.FunctionHandler.initializeFunctions" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates the context for every data stream and starts the event loop to manage the StreamPipes Functions.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2632,8 +2620,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2642,7 +2629,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2651,7 +2638,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/registration/index.html b/docs-python/dev/reference/functions/registration/index.html
index 4b4107b..3129e67 100644
--- a/docs-python/dev/reference/functions/registration/index.html
+++ b/docs-python/dev/reference/functions/registration/index.html
@@ -2332,9 +2332,9 @@
<a id="streampipes.functions.registration"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2350,45 +2350,44 @@
<h2 id="streampipes.functions.registration.Registration" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">Registration</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">Registration</span><span class="p">()</span></code>
<a href="#streampipes.functions.registration.Registration" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Manages the existing StreamPipesFunctions and registers them.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.functions.registration.Registration.functions">functions</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>List of all registered StreamPipesFunction</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="streampipes.functions.streampipes_function.StreamPipesFunction" href="../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.registration.Registration.functions">functions</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>List of all registered StreamPipesFunction</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="StreamPipesFunction (streampipes.functions.streampipes_function.StreamPipesFunction)" href="../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2400,127 +2399,120 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.registration.Registration.getFunctions" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">getFunctions</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">getFunctions</span><span class="p">()</span></code>
<a href="#streampipes.functions.registration.Registration.getFunctions" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get all registered functions.</p>
<p>This method exists to be consistent with the Java client.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>functions</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>List of all registered functions.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="streampipes.functions.streampipes_function.StreamPipesFunction" href="../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>functions</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>List of all registered functions.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="StreamPipesFunction (streampipes.functions.streampipes_function.StreamPipesFunction)" href="../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.registration.Registration.register" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">register</span><span class="p">(</span><span class="n">streampipes_function</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">register</span><span class="p">(</span><span class="n">streampipes_function</span><span class="p">)</span></code>
<a href="#streampipes.functions.registration.Registration.register" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Registers a new function.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>streampipes_function</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The function to register.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.streampipes_function.StreamPipesFunction" href="../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>self</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The updated Registration instance</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>streampipes_function</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The function to register.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.registration.Registration" href="#streampipes.functions.registration.Registration">Registration</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="StreamPipesFunction (streampipes.functions.streampipes_function.StreamPipesFunction)" href="../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a></code>
+ </span>
</p>
- </td>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>self</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The updated Registration instance</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Registration (streampipes.functions.registration.Registration)" href="#streampipes.functions.registration.Registration">Registration</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2528,8 +2520,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2538,7 +2529,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2547,7 +2538,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:19">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/streampipes_function/index.html b/docs-python/dev/reference/functions/streampipes_function/index.html
index 04cb04d..d3ef0fd 100644
--- a/docs-python/dev/reference/functions/streampipes_function/index.html
+++ b/docs-python/dev/reference/functions/streampipes_function/index.html
@@ -2402,9 +2402,9 @@
<a id="streampipes.functions.streampipes_function"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2420,81 +2420,79 @@
<h2 id="streampipes.functions.streampipes_function.StreamPipesFunction" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">StreamPipesFunction</span><span class="p">(</span><span class="n">function_definition</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">StreamPipesFunction</span><span class="p">(</span><span class="n">function_definition</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
<a href="#streampipes.functions.streampipes_function.StreamPipesFunction" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="abc.ABC">ABC</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="abc.ABC">ABC</span></code></p>
-
+
<p>Abstract implementation of a StreamPipesFunction.</p>
<p>A StreamPipesFunction allows users to get the data of a StreamPipes data streams easily.
It makes it possible to work with the live data in python and enables to use the powerful
data analytics libraries there.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>function_definition</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The definition of the function that contains metadata about the connected function</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Optional">Optional</span>[<a class="autorefs autorefs-internal" title="streampipes.model.resource.FunctionDefinition" href="../../model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition">FunctionDefinition</a>]</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>None</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>function_definition</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The definition of the function that contains metadata about the connected function</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Optional">Optional</span>[<a class="autorefs autorefs-internal" title="FunctionDefinition (streampipes.model.resource.FunctionDefinition)" href="../../model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition">FunctionDefinition</a>]</code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.functions.streampipes_function.StreamPipesFunction.output_collectors">output_collectors</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>List of all output collectors which are created based on the provided function definitions.</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <a class="autorefs autorefs-internal" title="streampipes.functions.broker.output_collector.OutputCollector" href="../broker/output_collector/#streampipes.functions.broker.output_collector.OutputCollector">OutputCollector</a>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.streampipes_function.StreamPipesFunction.output_collectors">output_collectors</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>List of all output collectors which are created based on the provided function definitions.</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <a class="autorefs autorefs-internal" title="OutputCollector (streampipes.functions.broker.output_collector.OutputCollector)" href="../broker/output_collector/#streampipes.functions.broker.output_collector.OutputCollector">OutputCollector</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2506,147 +2504,138 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.streampipes_function.StreamPipesFunction.add_output" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">add_output</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">event</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">add_output</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">event</span><span class="p">)</span></code>
<a href="#streampipes.functions.streampipes_function.StreamPipesFunction.add_output" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Send an event via an output data stream to StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>stream_id</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The id of the output data stream</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>stream_id</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The id of the output data stream</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The event which should be sent</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The event which should be sent</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.streampipes_function.StreamPipesFunction.getFunctionId" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">getFunctionId</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">getFunctionId</span><span class="p">()</span></code>
<a href="#streampipes.functions.streampipes_function.StreamPipesFunction.getFunctionId" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the id of the function.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>function_id</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Identification object of the StreamPipes function</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.function_definition.FunctionId" href="../../model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionId">FunctionId</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>function_id</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Identification object of the StreamPipes function</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="FunctionId (streampipes.model.resource.function_definition.FunctionId)" href="../../model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionId">FunctionId</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.streampipes_function.StreamPipesFunction.onEvent" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">onEvent</span><span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">onEvent</span><span class="p">(</span><span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
@@ -2654,88 +2643,84 @@
<a href="#streampipes.functions.streampipes_function.StreamPipesFunction.onEvent" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Is called for every event of a data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>event</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The received event from the data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Any">Any</span>]</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>event</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The received event from the data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>streamId</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The id of the data stream which the event belongs to.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>streamId</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The id of the data stream which the event belongs to.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.streampipes_function.StreamPipesFunction.onServiceStarted" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">onServiceStarted</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">onServiceStarted</span><span class="p">(</span><span class="n">context</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
@@ -2743,74 +2728,70 @@
<a href="#streampipes.functions.streampipes_function.StreamPipesFunction.onServiceStarted" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Is called when the function is started.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>context</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The context in which the function is started.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.utils.function_context.FunctionContext" href="../utils/function_context/#streampipes.functions.utils.function_context.FunctionContext">FunctionContext</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>context</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The context in which the function is started.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="FunctionContext (streampipes.functions.utils.function_context.FunctionContext)" href="../utils/function_context/#streampipes.functions.utils.function_context.FunctionContext">FunctionContext</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.streampipes_function.StreamPipesFunction.onServiceStopped" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">onServiceStopped</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">onServiceStopped</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
@@ -2818,103 +2799,97 @@
<a href="#streampipes.functions.streampipes_function.StreamPipesFunction.onServiceStopped" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Is called when the function is stopped.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.streampipes_function.StreamPipesFunction.requiredStreamIds" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">requiredStreamIds</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">requiredStreamIds</span><span class="p">()</span></code>
<a href="#streampipes.functions.streampipes_function.StreamPipesFunction.requiredStreamIds" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get the ids of the streams needed by the function.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>stream_ids</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>List of the stream ids</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[str]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>stream_ids</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>List of the stream ids</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.streampipes_function.StreamPipesFunction.stop" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">stop</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">stop</span><span class="p">()</span></code>
<a href="#streampipes.functions.streampipes_function.StreamPipesFunction.stop" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Stops the function and disconnects from the output streams.</p>
- </div>
+ </div>
</div>
@@ -2922,8 +2897,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2932,7 +2906,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2941,7 +2915,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/utils/async_iter_handler/index.html b/docs-python/dev/reference/functions/utils/async_iter_handler/index.html
index 64fedc7..d4b59fa 100644
--- a/docs-python/dev/reference/functions/utils/async_iter_handler/index.html
+++ b/docs-python/dev/reference/functions/utils/async_iter_handler/index.html
@@ -2334,9 +2334,9 @@
<a id="streampipes.functions.utils.async_iter_handler"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2352,19 +2352,19 @@
<h2 id="streampipes.functions.utils.async_iter_handler.AsyncIterHandler" class="doc doc-heading">
- <code>AsyncIterHandler</code>
+ <code>AsyncIterHandler</code>
<a href="#streampipes.functions.utils.async_iter_handler.AsyncIterHandler" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Handles asynchronous iterators to get every message after another in parallel.</p>
-
+
<div class="doc doc-children">
@@ -2376,14 +2376,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.utils.async_iter_handler.AsyncIterHandler.anext" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">anext</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">anext</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">message</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
<small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small>
@@ -2392,92 +2390,88 @@
<a href="#streampipes.functions.utils.async_iter_handler.AsyncIterHandler.anext" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Gets the next message from an AsyncIterator.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>stream_id</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The id of the data stream which the message belongs to.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>message</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>An asynchronous iterator that contains the messages.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.AsyncIterator">AsyncIterator</span></code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>result</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Tuple of the stream id und next message or <code>("stop", None)</code> if no message is left.</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>stream_id</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The id of the data stream which the message belongs to.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Tuple">Tuple</span>[str, Optional[<span title="typing.Any">Any</span>]]</code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>message</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>An asynchronous iterator that contains the messages.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.AsyncIterator">AsyncIterator</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>result</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Tuple of the stream id und next message or <code>("stop", None)</code> if no message is left.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Tuple">Tuple</span>[<span title="str">str</span>, <span title="Optional">Optional</span>[<span title="typing.Any">Any</span>]]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.utils.async_iter_handler.AsyncIterHandler.combine_async_messages" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">combine_async_messages</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">combine_async_messages</span><span class="p">(</span><span class="n">messages</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-async"><code>async</code></small>
<small class="doc doc-label doc-label-staticmethod"><code>staticmethod</code></small>
@@ -2486,67 +2480,65 @@
<a href="#streampipes.functions.utils.async_iter_handler.AsyncIterHandler.combine_async_messages" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Continuously gets the next published message from multiple AsyncIterators in parallel.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>messages</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A dictionary with an asynchronous iterator for every stream id.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <span title="typing.AsyncIterator">AsyncIterator</span>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>YIELDS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>message</code>
- </td>
- <td class="doc-yields-details">
- <div class="doc-md-description">
- <p>Description of the anonymous integer return value.</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>messages</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A dictionary with an asynchronous iterator for every stream id.</p>
+ </div>
<p>
- <span class="doc-yields-annotation">
- <b>TYPE::</b>
- <code><span title="typing.Tuple">Tuple</span>[str, <span title="typing.Any">Any</span>]</code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="typing.AsyncIterator">AsyncIterator</span>]</code>
+ </span>
</p>
- </td>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">YIELDS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>message</code>
+ </td>
+ <td class="doc-yields-details">
+ <div class="doc-md-description">
+ <p>Description of the anonymous integer return value.</p>
+ </div>
+ <p>
+ <span class="doc-yields-annotation">
+ <b>TYPE::</b>
+ <code><span title="typing.Tuple">Tuple</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2554,8 +2546,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2564,7 +2555,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2573,7 +2564,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/utils/data_stream_context/index.html b/docs-python/dev/reference/functions/utils/data_stream_context/index.html
index 80d498d..18a4bd0 100644
--- a/docs-python/dev/reference/functions/utils/data_stream_context/index.html
+++ b/docs-python/dev/reference/functions/utils/data_stream_context/index.html
@@ -2320,9 +2320,9 @@
<a id="streampipes.functions.utils.data_stream_context"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2338,73 +2338,72 @@
<h2 id="streampipes.functions.utils.data_stream_context.DataStreamContext" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">DataStreamContext</span><span class="p">(</span><span class="n">functions</span><span class="p">,</span> <span class="n">schema</span><span class="p">,</span> <span class="n">broker</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">DataStreamContext</span><span class="p">(</span><span class="n">functions</span><span class="p">,</span> <span class="n">schema</span><span class="p">,</span> <span class="n">broker</span><span class="p">)</span></code>
<a href="#streampipes.functions.utils.data_stream_context.DataStreamContext" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Container for the context of a data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>functions</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>StreamPipes Functions which require the data of this data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="streampipes.functions.streampipes_function.StreamPipesFunction" href="../../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>schema</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The schema of this data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>broker</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The consumer to connect to this data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.broker.Consumer" href="../../broker/consumer/#streampipes.functions.broker.consumer.Consumer">Consumer</a></code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>functions</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>StreamPipes Functions which require the data of this data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="StreamPipesFunction (streampipes.functions.streampipes_function.StreamPipesFunction)" href="../../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>schema</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The schema of this data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>broker</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The consumer to connect to this data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="Consumer (streampipes.functions.broker.Consumer)" href="../../broker/consumer/#streampipes.functions.broker.consumer.Consumer">Consumer</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2416,74 +2415,70 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.utils.data_stream_context.DataStreamContext.add_function" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">add_function</span><span class="p">(</span><span class="n">function</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">add_function</span><span class="p">(</span><span class="n">function</span><span class="p">)</span></code>
<a href="#streampipes.functions.utils.data_stream_context.DataStreamContext.add_function" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Adds a new StreamPipes Function.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>function</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>StreamPipesFunction which requires this data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.functions.streampipes_function.StreamPipesFunction" href="../../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a></code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>function</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>StreamPipesFunction which requires this data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="StreamPipesFunction (streampipes.functions.streampipes_function.StreamPipesFunction)" href="../../streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction">StreamPipesFunction</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2491,8 +2486,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2501,7 +2495,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2510,7 +2504,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/utils/data_stream_generator/index.html b/docs-python/dev/reference/functions/utils/data_stream_generator/index.html
index 0a3ebce..009ec3a 100644
--- a/docs-python/dev/reference/functions/utils/data_stream_generator/index.html
+++ b/docs-python/dev/reference/functions/utils/data_stream_generator/index.html
@@ -2308,9 +2308,9 @@
<a id="streampipes.functions.utils.data_stream_generator"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2326,94 +2326,93 @@
<h2 id="streampipes.functions.utils.data_stream_generator.RuntimeType" class="doc doc-heading">
- <code>RuntimeType</code>
+ <code>RuntimeType</code>
<a href="#streampipes.functions.utils.data_stream_generator.RuntimeType" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="enum.Enum">Enum</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="enum.Enum">Enum</span></code></p>
-
+
<p>Runtime type names for the attributes of a data stream.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.STRING">STRING</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
-
- </div>
- <p>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.BOOLEAN">BOOLEAN</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
-
- </div>
- <p>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.DOUBLE">DOUBLE</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
-
- </div>
- <p>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.FLOAT">FLOAT</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
-
- </div>
- <p>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.INTEGER">INTEGER</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
-
- </div>
- <p>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.LONG">LONG</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
-
- </div>
- <p>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.STRING">STRING</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+
+ </div>
+ <p>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.BOOLEAN">BOOLEAN</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+
+ </div>
+ <p>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.DOUBLE">DOUBLE</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+
+ </div>
+ <p>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.FLOAT">FLOAT</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+
+ </div>
+ <p>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.INTEGER">INTEGER</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+
+ </div>
+ <p>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.functions.utils.data_stream_generator.RuntimeType.LONG">LONG</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+
+ </div>
+ <p>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2429,116 +2428,111 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h2 id="streampipes.functions.utils.data_stream_generator.create_data_stream" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">create_data_stream</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">attributes</span><span class="p">,</span> <span class="n">stream_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">broker</span><span class="o">=</span><span class="n">SupportedBroker</span><span class="o">.</span><span class="n">NATS</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">create_data_stream</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">attributes</span><span class="p">,</span> <span class="n">stream_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">broker</span><span class="o">=</span><span class="n">SupportedBroker</span><span class="o">.</span><span class="n">NATS</span><span class="p">)</span></code>
<a href="#streampipes.functions.utils.data_stream_generator.create_data_stream" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates a data stream</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>name</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Name of the data stream to be shown at the UI.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>attributes</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Name and types of the attributes.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, str]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>stream_id</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The id of this data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>None</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>data_stream</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The created data stream</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>name</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Name of the data stream to be shown at the UI.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>attributes</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Name and types of the attributes.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>stream_id</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The id of this data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>None</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>data_stream</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The created data stream</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
@@ -2546,7 +2540,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2555,7 +2549,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/functions/utils/function_context/index.html b/docs-python/dev/reference/functions/utils/function_context/index.html
index 2c3eebc..d46f57a 100644
--- a/docs-python/dev/reference/functions/utils/function_context/index.html
+++ b/docs-python/dev/reference/functions/utils/function_context/index.html
@@ -2320,9 +2320,9 @@
<a id="streampipes.functions.utils.function_context"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2338,87 +2338,86 @@
<h2 id="streampipes.functions.utils.function_context.FunctionContext" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">FunctionContext</span><span class="p">(</span><span class="n">function_id</span><span class="p">,</span> <span class="n">schema</span><span class="p">,</span> <span class="n">client</span><span class="p">,</span> <span class="n">streams</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">FunctionContext</span><span class="p">(</span><span class="n">function_id</span><span class="p">,</span> <span class="n">schema</span><span class="p">,</span> <span class="n">client</span><span class="p">,</span> <span class="n">streams</span><span class="p">)</span></code>
<a href="#streampipes.functions.utils.function_context.FunctionContext" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Container for the context of a StreamPipesFunction.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>function_id</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The id of this function.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>schema</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A dictionary which contains the schema of a data stream for each stream id.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a>]</code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>client</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The client to interact with the API.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.client.client.StreamPipesClient" href="../../../client/client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>streams</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The ids of the streams needed by this function.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[str]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>function_id</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The id of this function.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>schema</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A dictionary which contains the schema of a data stream for each stream id.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>client</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The client to interact with the API.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="StreamPipesClient (streampipes.client.client.StreamPipesClient)" href="../../../client/client/#streampipes.client.client.StreamPipesClient">StreamPipesClient</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>streams</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The ids of the streams needed by this function.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2430,88 +2429,84 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.functions.utils.function_context.FunctionContext.add_data_stream_schema" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">add_data_stream_schema</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">data_stream</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">add_data_stream_schema</span><span class="p">(</span><span class="n">stream_id</span><span class="p">,</span> <span class="n">data_stream</span><span class="p">)</span></code>
<a href="#streampipes.functions.utils.function_context.FunctionContext.add_data_stream_schema" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Adds a new data stream for a new stream id.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>stream_id</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The id of the data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>stream_id</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The id of the data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The schema of the data stream.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code>None</code>
</span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The schema of the data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../../../model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-returns-annotation">
- <code>None</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
-
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
@@ -2519,8 +2514,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2529,7 +2523,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2538,7 +2532,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/common/index.html b/docs-python/dev/reference/model/common/index.html
index 8fb2c25..1883c26 100644
--- a/docs-python/dev/reference/model/common/index.html
+++ b/docs-python/dev/reference/model/common/index.html
@@ -2772,11 +2772,11 @@
<a id="streampipes.model.common"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Classes of the StreamPipes data model that are commonly shared.</p>
-
+
<div class="doc doc-children">
@@ -2792,21 +2792,21 @@
<h2 id="streampipes.model.common.ApplicationLink" class="doc doc-heading">
- <code>ApplicationLink</code>
+ <code>ApplicationLink</code>
<a href="#streampipes.model.common.ApplicationLink" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of an <code>ApplicationLink</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -2822,20 +2822,20 @@
<h3 id="streampipes.model.common.ApplicationLink.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.ApplicationLink.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2851,8 +2851,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2861,8 +2860,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2871,21 +2869,21 @@
<h2 id="streampipes.model.common.BaseElement" class="doc doc-heading">
- <code>BaseElement</code>
+ <code>BaseElement</code>
<a href="#streampipes.model.common.BaseElement" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Structure of a basic element in the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -2901,20 +2899,20 @@
<h3 id="streampipes.model.common.BaseElement.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.BaseElement.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2930,8 +2928,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2940,8 +2937,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2950,21 +2946,21 @@
<h2 id="streampipes.model.common.BasicModel" class="doc doc-heading">
- <code>BasicModel</code>
+ <code>BasicModel</code>
<a href="#streampipes.model.common.BasicModel" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="pydantic.v1.BaseModel">BaseModel</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="pydantic.v1.BaseModel">BaseModel</span></code></p>
-
+
<p>Basic model class used for the whole Python StreamPipes data model.</p>
-
+
<div class="doc doc-children">
@@ -2980,20 +2976,20 @@
<h3 id="streampipes.model.common.BasicModel.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.BasicModel.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3009,8 +3005,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3019,8 +3014,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3029,21 +3023,21 @@
<h2 id="streampipes.model.common.EventGrounding" class="doc doc-heading">
- <code>EventGrounding</code>
+ <code>EventGrounding</code>
<a href="#streampipes.model.common.EventGrounding" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of an <code>EventGrounding</code> in compliance to with StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3059,20 +3053,20 @@
<h3 id="streampipes.model.common.EventGrounding.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.EventGrounding.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3088,8 +3082,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3098,8 +3091,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3108,21 +3100,21 @@
<h2 id="streampipes.model.common.EventProperty" class="doc doc-heading">
- <code>EventProperty</code>
+ <code>EventProperty</code>
<a href="#streampipes.model.common.EventProperty" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of an <code>EventProperty</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3138,20 +3130,20 @@
<h3 id="streampipes.model.common.EventProperty.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.EventProperty.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3167,8 +3159,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3177,8 +3168,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3187,21 +3177,21 @@
<h2 id="streampipes.model.common.EventSchema" class="doc doc-heading">
- <code>EventSchema</code>
+ <code>EventSchema</code>
<a href="#streampipes.model.common.EventSchema" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of an <code>EventSchema</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3217,20 +3207,20 @@
<h3 id="streampipes.model.common.EventSchema.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.EventSchema.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3246,8 +3236,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3256,8 +3245,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3266,21 +3254,21 @@
<h2 id="streampipes.model.common.MeasurementCapability" class="doc doc-heading">
- <code>MeasurementCapability</code>
+ <code>MeasurementCapability</code>
<a href="#streampipes.model.common.MeasurementCapability" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of a <code>MeasurementCapability</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3296,20 +3284,20 @@
<h3 id="streampipes.model.common.MeasurementCapability.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.MeasurementCapability.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3325,8 +3313,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3335,8 +3322,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3345,21 +3331,21 @@
<h2 id="streampipes.model.common.MeasurementObject" class="doc doc-heading">
- <code>MeasurementObject</code>
+ <code>MeasurementObject</code>
<a href="#streampipes.model.common.MeasurementObject" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of a <code>MeasurementObject</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3375,20 +3361,20 @@
<h3 id="streampipes.model.common.MeasurementObject.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.MeasurementObject.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3404,8 +3390,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3414,8 +3399,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3424,21 +3408,21 @@
<h2 id="streampipes.model.common.TopicDefinition" class="doc doc-heading">
- <code>TopicDefinition</code>
+ <code>TopicDefinition</code>
<a href="#streampipes.model.common.TopicDefinition" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of a <code>TopicDefinition</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3454,20 +3438,20 @@
<h3 id="streampipes.model.common.TopicDefinition.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.TopicDefinition.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3483,8 +3467,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3493,8 +3476,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3503,21 +3485,21 @@
<h2 id="streampipes.model.common.TransportFormat" class="doc doc-heading">
- <code>TransportFormat</code>
+ <code>TransportFormat</code>
<a href="#streampipes.model.common.TransportFormat" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of a <code>TransportFormat</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3533,20 +3515,20 @@
<h3 id="streampipes.model.common.TransportFormat.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.TransportFormat.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3562,8 +3544,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3572,8 +3553,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3582,21 +3562,21 @@
<h2 id="streampipes.model.common.TransportProtocol" class="doc doc-heading">
- <code>TransportProtocol</code>
+ <code>TransportProtocol</code>
<a href="#streampipes.model.common.TransportProtocol" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of a <code>TransportProtocol</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3612,20 +3592,20 @@
<h3 id="streampipes.model.common.TransportProtocol.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.TransportProtocol.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3641,8 +3621,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3651,8 +3630,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3661,21 +3639,21 @@
<h2 id="streampipes.model.common.ValueSpecification" class="doc doc-heading">
- <code>ValueSpecification</code>
+ <code>ValueSpecification</code>
<a href="#streampipes.model.common.ValueSpecification" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Data model of an <code>ValueSpecification</code> in compliance with the StreamPipes Backend.</p>
-
+
<div class="doc doc-children">
@@ -3691,20 +3669,20 @@
<h3 id="streampipes.model.common.ValueSpecification.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.common.ValueSpecification.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -3720,8 +3698,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3730,84 +3707,79 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h2 id="streampipes.model.common.random_letters" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">random_letters</span><span class="p">(</span><span class="n">n</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">random_letters</span><span class="p">(</span><span class="n">n</span><span class="p">)</span></code>
<a href="#streampipes.model.common.random_letters" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Generates a string consisting of random letters.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>n</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>number of letters</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>int</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>rand_str</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>String consisting of <code>n</code> random letters</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>n</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>number of letters</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="int">int</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>rand_str</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>String consisting of <code>n</code> random letters</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
@@ -3815,7 +3787,7 @@
</div>
- </div>
+ </div>
</div>
@@ -3824,7 +3796,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/container/data_lake_measures/index.html b/docs-python/dev/reference/model/container/data_lake_measures/index.html
index 6640b9b..5ac0b8c 100644
--- a/docs-python/dev/reference/model/container/data_lake_measures/index.html
+++ b/docs-python/dev/reference/model/container/data_lake_measures/index.html
@@ -2362,11 +2362,11 @@
<a id="streampipes.model.container.data_lake_measures"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Implementation of a resource container for the data lake measures endpoint.</p>
-
+
<div class="doc doc-children">
@@ -2382,23 +2382,23 @@
<h2 id="streampipes.model.container.data_lake_measures.DataLakeMeasures" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">DataLakeMeasures</span><span class="p">(</span><span class="n">resources</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">DataLakeMeasures</span><span class="p">(</span><span class="n">resources</span><span class="p">)</span></code>
<a href="#streampipes.model.container.data_lake_measures.DataLakeMeasures" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code></p>
-
+
<p>Implementation of the resource container for the data lake measures endpoint.</p>
<p>This resource container is a collection of data lake measures returned by the StreamPipes API.
It is capable of parsing the response content directly into a list of queried <code>DataLakeMeasure</code>.
Furthermore, the resource container makes them accessible in a pythonic manner.</p>
-
+
<div class="doc doc-children">
@@ -2410,14 +2410,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.data_lake_measures.DataLakeMeasures.from_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
</span>
@@ -2425,278 +2423,265 @@
<a href="#streampipes.model.container.data_lake_measures.DataLakeMeasures.from_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>json_string</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The JSON string returned from the StreamPipes API.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>container</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Instance of the container derived from the JSON definition</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>json_string</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The JSON string returned from the StreamPipes API.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.StreamPipesDataModelError" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesDataModelError">StreamPipesDataModelError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If a resource cannot be mapped to the corresponding Python data model.</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError">StreamPipesResourceContainerJSONError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>container</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Instance of the container derived from the JSON definition</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesDataModelError (streampipes.model.container.resource_container.StreamPipesDataModelError)" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesDataModelError">StreamPipesDataModelError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If a resource cannot be mapped to the corresponding Python data model.</p>
+ </div>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesResourceContainerJSONError (streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError)" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError">StreamPipesResourceContainerJSONError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.data_lake_measures.DataLakeMeasures.to_dicts" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dicts</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dicts</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
<a href="#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_dicts" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the contained resources as list of dictionaries.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Determines whether the field names are named in Python style (=<code>False</code>) or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Determines whether the field names are named in Python style (=<code>False</code>) or
as originally named by StreamPipes (=<code>True</code>).</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>bool</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>False</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>dictionary_list</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>List of resources in dictionary representation.
-If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, Any]]</code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="bool">bool</span></code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>False</code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>dictionary_list</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>List of resources in dictionary representation.
+If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.data_lake_measures.DataLakeMeasures.to_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_json</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_json</span><span class="p">()</span></code>
<a href="#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource container in the StreamPipes JSON representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code> json_string: str</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>JSON representation of the resource container where key names are equal to
-keys used in the StreamPipes backend</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code> json_string: str</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>JSON representation of the resource container where key names are equal to
+keys used in the StreamPipes backend</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.data_lake_measures.DataLakeMeasures.to_pandas" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
<a href="#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_pandas" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource container in representation of a Pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>resource_container_df</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Representation of the resource container as pandas DataFrame</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="pandas.DataFrame">DataFrame</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource_container_df</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Representation of the resource container as pandas DataFrame</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="pandas.DataFrame">DataFrame</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2704,8 +2689,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2714,7 +2698,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2723,7 +2707,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/container/data_streams/index.html b/docs-python/dev/reference/model/container/data_streams/index.html
index 703a3e5..ae0b4c1 100644
--- a/docs-python/dev/reference/model/container/data_streams/index.html
+++ b/docs-python/dev/reference/model/container/data_streams/index.html
@@ -2362,11 +2362,11 @@
<a id="streampipes.model.container.data_streams"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Implementation of a resource container for the data streams endpoint.</p>
-
+
<div class="doc doc-children">
@@ -2382,23 +2382,23 @@
<h2 id="streampipes.model.container.data_streams.DataStreams" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">DataStreams</span><span class="p">(</span><span class="n">resources</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">DataStreams</span><span class="p">(</span><span class="n">resources</span><span class="p">)</span></code>
<a href="#streampipes.model.container.data_streams.DataStreams" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code></p>
-
+
<p>Implementation of the resource container for the data stream endpoint.</p>
<p>This resource container is a collection of data streams returned by the StreamPipes API.
It is capable of parsing the response content directly into a list of queried <code>DataStream</code>.
Furthermore, the resource container makes them accessible in a pythonic manner.</p>
-
+
<div class="doc doc-children">
@@ -2410,14 +2410,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.data_streams.DataStreams.from_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
</span>
@@ -2425,278 +2423,265 @@
<a href="#streampipes.model.container.data_streams.DataStreams.from_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>json_string</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The JSON string returned from the StreamPipes API.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>container</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Instance of the container derived from the JSON definition</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>json_string</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The JSON string returned from the StreamPipes API.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.StreamPipesDataModelError" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesDataModelError">StreamPipesDataModelError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If a resource cannot be mapped to the corresponding Python data model.</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError">StreamPipesResourceContainerJSONError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>container</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Instance of the container derived from the JSON definition</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesDataModelError (streampipes.model.container.resource_container.StreamPipesDataModelError)" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesDataModelError">StreamPipesDataModelError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If a resource cannot be mapped to the corresponding Python data model.</p>
+ </div>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesResourceContainerJSONError (streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError)" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError">StreamPipesResourceContainerJSONError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.data_streams.DataStreams.to_dicts" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dicts</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dicts</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
<a href="#streampipes.model.container.data_streams.DataStreams.to_dicts" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the contained resources as list of dictionaries.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Determines whether the field names are named in Python style (=<code>False</code>) or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Determines whether the field names are named in Python style (=<code>False</code>) or
as originally named by StreamPipes (=<code>True</code>).</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>bool</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>False</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>dictionary_list</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>List of resources in dictionary representation.
-If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, Any]]</code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="bool">bool</span></code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>False</code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>dictionary_list</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>List of resources in dictionary representation.
+If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.data_streams.DataStreams.to_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_json</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_json</span><span class="p">()</span></code>
<a href="#streampipes.model.container.data_streams.DataStreams.to_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource container in the StreamPipes JSON representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code> json_string: str</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>JSON representation of the resource container where key names are equal to
-keys used in the StreamPipes backend</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code> json_string: str</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>JSON representation of the resource container where key names are equal to
+keys used in the StreamPipes backend</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.data_streams.DataStreams.to_pandas" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
<a href="#streampipes.model.container.data_streams.DataStreams.to_pandas" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource container in representation of a Pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>resource_container_df</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Representation of the resource container as pandas DataFrame</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="pandas.DataFrame">DataFrame</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource_container_df</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Representation of the resource container as pandas DataFrame</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="pandas.DataFrame">DataFrame</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2704,8 +2689,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2714,7 +2698,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2723,7 +2707,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/container/resource_container/index.html b/docs-python/dev/reference/model/container/resource_container/index.html
index d0a1745..d5cdc2c 100644
--- a/docs-python/dev/reference/model/container/resource_container/index.html
+++ b/docs-python/dev/reference/model/container/resource_container/index.html
@@ -2390,14 +2390,14 @@
<a id="streampipes.model.container.resource_container"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>General and abstract implementation for a resource container.</p>
<p>A resource container is a collection of resources returned by the StreamPipes API.
It is capable of parsing the response content directly into a list of queried resources.
Furthermore, the resource container makes them accessible in a pythonic manner.</p>
-
+
<div class="doc doc-children">
@@ -2413,50 +2413,49 @@
<h2 id="streampipes.model.container.resource_container.ResourceContainer" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">ResourceContainer</span><span class="p">(</span><span class="n">resources</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">ResourceContainer</span><span class="p">(</span><span class="n">resources</span><span class="p">)</span></code>
<a href="#streampipes.model.container.resource_container.ResourceContainer" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="abc.ABC">ABC</span></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="abc.ABC">ABC</span></code></p>
-
+
<p>General and abstract implementation for a resource container.</p>
<p>A resource container is a collection of resources returned by the StreamPipes API.
It is capable of parsing the response content directly into a list of queried resources.
Furthermore, the resource container makes them accessible in a pythonic manner.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>resources</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A list of resources to be contained in the <code>ResourceContainer</code>.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../../resource/resource/#streampipes.model.resource.resource.Resource">Resource</a>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>resources</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A list of resources to be contained in the <code>ResourceContainer</code>.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../../resource/resource/#streampipes.model.resource.resource.Resource">Resource</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2468,14 +2467,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.resource_container.ResourceContainer.from_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
</span>
@@ -2483,278 +2480,265 @@
<a href="#streampipes.model.container.resource_container.ResourceContainer.from_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>json_string</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The JSON string returned from the StreamPipes API.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>container</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Instance of the container derived from the JSON definition</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>json_string</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The JSON string returned from the StreamPipes API.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.StreamPipesDataModelError" href="#streampipes.model.container.resource_container.StreamPipesDataModelError">StreamPipesDataModelError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If a resource cannot be mapped to the corresponding Python data model.</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError" href="#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError">StreamPipesResourceContainerJSONError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>container</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Instance of the container derived from the JSON definition</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesDataModelError (streampipes.model.container.resource_container.StreamPipesDataModelError)" href="#streampipes.model.container.resource_container.StreamPipesDataModelError">StreamPipesDataModelError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If a resource cannot be mapped to the corresponding Python data model.</p>
+ </div>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesResourceContainerJSONError (streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError)" href="#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError">StreamPipesResourceContainerJSONError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.resource_container.ResourceContainer.to_dicts" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dicts</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dicts</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
<a href="#streampipes.model.container.resource_container.ResourceContainer.to_dicts" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the contained resources as list of dictionaries.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Determines whether the field names are named in Python style (=<code>False</code>) or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Determines whether the field names are named in Python style (=<code>False</code>) or
as originally named by StreamPipes (=<code>True</code>).</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>bool</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>False</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>dictionary_list</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>List of resources in dictionary representation.
-If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, Any]]</code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="bool">bool</span></code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>False</code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>dictionary_list</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>List of resources in dictionary representation.
+If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.resource_container.ResourceContainer.to_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_json</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_json</span><span class="p">()</span></code>
<a href="#streampipes.model.container.resource_container.ResourceContainer.to_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource container in the StreamPipes JSON representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code> json_string: str</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>JSON representation of the resource container where key names are equal to
-keys used in the StreamPipes backend</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code> json_string: str</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>JSON representation of the resource container where key names are equal to
+keys used in the StreamPipes backend</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.resource_container.ResourceContainer.to_pandas" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
<a href="#streampipes.model.container.resource_container.ResourceContainer.to_pandas" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource container in representation of a Pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>resource_container_df</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Representation of the resource container as pandas DataFrame</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="pandas.DataFrame">DataFrame</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource_container_df</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Representation of the resource container as pandas DataFrame</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="pandas.DataFrame">DataFrame</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2762,8 +2746,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2772,48 +2755,47 @@
<h2 id="streampipes.model.container.resource_container.StreamPipesDataModelError" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">StreamPipesDataModelError</span><span class="p">(</span><span class="n">validation_error</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">StreamPipesDataModelError</span><span class="p">(</span><span class="n">validation_error</span><span class="p">)</span></code>
<a href="#streampipes.model.container.resource_container.StreamPipesDataModelError" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code>Exception</code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="Exception">Exception</span></code></p>
-
+
<p>A custom exception to be raised when a validation error occurs
during the parsing of StreamPipes API responses.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>validation_error</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The validation error thrown by Pydantic during parsing.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="pydantic.v1.ValidationError">ValidationError</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>validation_error</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The validation error thrown by Pydantic during parsing.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="pydantic.v1.ValidationError">ValidationError</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2829,8 +2811,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2839,62 +2820,61 @@
<h2 id="streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">StreamPipesResourceContainerJSONError</span><span class="p">(</span><span class="n">container_name</span><span class="p">,</span> <span class="n">json_string</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">StreamPipesResourceContainerJSONError</span><span class="p">(</span><span class="n">container_name</span><span class="p">,</span> <span class="n">json_string</span><span class="p">)</span></code>
<a href="#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code>Exception</code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="Exception">Exception</span></code></p>
-
+
<p>A custom exception to be raised when the returned JSON string
does not suit to the structure of resource container.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>container_name</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The class name of the resource container where the invalid data structure was detected.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code>json_string</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The JSON string that has been tried to parse.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>container_name</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The class name of the resource container where the invalid data structure was detected.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code>json_string</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The JSON string that has been tried to parse.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2910,8 +2890,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2920,7 +2899,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2929,7 +2908,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/container/versions/index.html b/docs-python/dev/reference/model/container/versions/index.html
index 813170b..bf834a8 100644
--- a/docs-python/dev/reference/model/container/versions/index.html
+++ b/docs-python/dev/reference/model/container/versions/index.html
@@ -2362,11 +2362,11 @@
<a id="streampipes.model.container.versions"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>Implementation of a resource container for the versions endpoint.</p>
-
+
<div class="doc doc-children">
@@ -2382,50 +2382,49 @@
<h2 id="streampipes.model.container.versions.Versions" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">Versions</span><span class="p">(</span><span class="n">resources</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">Versions</span><span class="p">(</span><span class="n">resources</span><span class="p">)</span></code>
<a href="#streampipes.model.container.versions.Versions" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code></p>
-
+
<p>Implementation of the resource container for the versions endpoint.</p>
<p>This resource container is a collection of versions returned by the StreamPipes API.
It is capable of parsing the response content directly into a list of queried <code>Version</code>.
Furthermore, the resource container makes them accessible in a pythonic manner.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>resources</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>A list of resources (<a class="autorefs autorefs-internal" href="../../resource/version/#streampipes.model.resource.version.Version">Version</a>) to be contained in the <code>ResourceContainer</code>.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../../resource/resource/#streampipes.model.resource.resource.Resource">Resource</a>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>resources</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>A list of resources (<a class="autorefs autorefs-internal" href="../../resource/version/#streampipes.model.resource.version.Version">Version</a>) to be contained in the <code>ResourceContainer</code>.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../../resource/resource/#streampipes.model.resource.resource.Resource">Resource</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2437,14 +2436,12 @@
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.versions.Versions.from_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
</span>
@@ -2452,278 +2449,265 @@
<a href="#streampipes.model.container.versions.Versions.from_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>json_string</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The JSON string returned from the StreamPipes API.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>container</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Instance of the container derived from the JSON definition</p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>json_string</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The JSON string returned from the StreamPipes API.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.ResourceContainer" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.StreamPipesDataModelError" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesDataModelError">StreamPipesDataModelError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If a resource cannot be mapped to the corresponding Python data model.</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError">StreamPipesResourceContainerJSONError</a></code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>container</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Instance of the container derived from the JSON definition</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="ResourceContainer (streampipes.model.container.resource_container.ResourceContainer)" href="../resource_container/#streampipes.model.container.resource_container.ResourceContainer">ResourceContainer</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesDataModelError (streampipes.model.container.resource_container.StreamPipesDataModelError)" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesDataModelError">StreamPipesDataModelError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If a resource cannot be mapped to the corresponding Python data model.</p>
+ </div>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><a class="autorefs autorefs-internal" title="StreamPipesResourceContainerJSONError (streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError)" href="../resource_container/#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError">StreamPipesResourceContainerJSONError</a></code>
+ </span>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.versions.Versions.to_dicts" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dicts</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dicts</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span></code>
<a href="#streampipes.model.container.versions.Versions.to_dicts" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the contained resources as list of dictionaries.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Determines whether the field names are named in Python style (=<code>False</code>) or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Determines whether the field names are named in Python style (=<code>False</code>) or
as originally named by StreamPipes (=<code>True</code>).</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>bool</code>
- </span>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>False</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>dictionary_list</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>List of resources in dictionary representation.
-If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, Any]]</code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="bool">bool</span></code>
+ </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>False</code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>dictionary_list</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>List of resources in dictionary representation.
+If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.versions.Versions.to_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_json</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_json</span><span class="p">()</span></code>
<a href="#streampipes.model.container.versions.Versions.to_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource container in the StreamPipes JSON representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code> json_string: str</code>
- </span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>JSON representation of the resource container where key names are equal to
-keys used in the StreamPipes backend</p>
- </div>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code> json_string: str</code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>JSON representation of the resource container where key names are equal to
+keys used in the StreamPipes backend</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.container.versions.Versions.to_pandas" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
<a href="#streampipes.model.container.versions.Versions.to_pandas" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource container in representation of a Pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>resource_container_df</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Representation of the resource container as pandas DataFrame</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="pandas.DataFrame">DataFrame</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource_container_df</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Representation of the resource container as pandas DataFrame</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="pandas.DataFrame">DataFrame</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2731,8 +2715,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2741,7 +2724,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2750,7 +2733,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/resource/data_lake_measure/index.html b/docs-python/dev/reference/model/resource/data_lake_measure/index.html
index 2bb168a..af09cbc 100644
--- a/docs-python/dev/reference/model/resource/data_lake_measure/index.html
+++ b/docs-python/dev/reference/model/resource/data_lake_measure/index.html
@@ -2348,9 +2348,9 @@
<a id="streampipes.model.resource.data_lake_measure"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2366,17 +2366,17 @@
<h2 id="streampipes.model.resource.data_lake_measure.DataLakeMeasure" class="doc doc-heading">
- <code>DataLakeMeasure</code>
+ <code>DataLakeMeasure</code>
<a href="#streampipes.model.resource.data_lake_measure.DataLakeMeasure" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
-
+
<p>Implementation of a resource for data lake measures.</p>
<p>This resource defines the data model used by resource container (<code>model.container.DataLakeMeasures</code>).
It inherits from Pydantic's BaseModel to get all its superpowers,
@@ -2384,7 +2384,7 @@
the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>
-
+
<div class="doc doc-children">
@@ -2400,20 +2400,20 @@
<h3 id="streampipes.model.resource.data_lake_measure.DataLakeMeasure.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.resource.data_lake_measure.DataLakeMeasure.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2429,25 +2429,22 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.data_lake_measure.DataLakeMeasure.convert_to_pandas_representation" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.data_lake_measure.DataLakeMeasure.convert_to_pandas_representation" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the dictionary representation of a data lake measure
to be used when creating a pandas Dataframe.</p>
<p>It excludes the following fields: <code>element_id</code>, <code>event_schema</code>, <code>schema_version</code>.
@@ -2455,112 +2452,107 @@
is returned with the column name <code>num_event_properties</code>.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>pandas_repr</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Pandas representation of the resource as a dictionary, which is then used by the respource container
-to create a data frame from a collection of resources.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>Dict[str, Any]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>pandas_repr</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Pandas representation of the resource as a dictionary, which is then used by the respource container
+to create a data frame from a collection of resources.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.data_lake_measure.DataLakeMeasure.to_dict" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.data_lake_measure.DataLakeMeasure.to_dict" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource in dictionary representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Indicates if the dictionary keys are in python representation or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Indicates if the dictionary keys are in python representation or
equally named to the StreamPipes backend</p>
- </div>
- <p>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>True</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The resource as dictionary representation</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, Any]</code>
- </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>True</code>
+ </span>
</p>
- </td>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The resource as dictionary representation</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2568,8 +2560,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2578,7 +2569,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2587,7 +2578,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/resource/data_series/index.html b/docs-python/dev/reference/model/resource/data_series/index.html
index ed44d5d..a2bf73d 100644
--- a/docs-python/dev/reference/model/resource/data_series/index.html
+++ b/docs-python/dev/reference/model/resource/data_series/index.html
@@ -2376,9 +2376,9 @@
<a id="streampipes.model.resource.data_series"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2394,23 +2394,24 @@
<h2 id="streampipes.model.resource.data_series.DataSeries" class="doc doc-heading">
- <code>DataSeries</code>
+ <code>DataSeries</code>
<a href="#streampipes.model.resource.data_series.DataSeries" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
-
+
<p>Implementation of a resource for data series.
This resource defines the data model used by its resource container(<code>model.container.DataLakeMeasures</code>).
It inherits from Pydantic's BaseModel to get all its superpowers,
which are used to parse, validate the API response and to easily switch between
the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>
+
<details class="note" open>
<summary>Notes</summary>
<div class="language-text highlight"><pre><span></span><code>This class will only exist temporarily in it its current appearance since
@@ -2418,7 +2419,7 @@
</code></pre></div>
</details>
-
+
<div class="doc doc-children">
@@ -2434,20 +2435,20 @@
<h3 id="streampipes.model.resource.data_series.DataSeries.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.resource.data_series.DataSeries.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2463,70 +2464,64 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.data_series.DataSeries.convert_to_pandas_representation" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.data_series.DataSeries.convert_to_pandas_representation" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the dictionary representation of a data lake series
to be used when creating a pandas Dataframe.</p>
<p>It contains only the "header rows" (the column names) and "rows" that contain the actual data.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>pandas_repr</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Dictionary with the keys <code>headers</code> and <code>rows</code></p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>dict[str, <span title="typing.Any">Any</span>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>pandas_repr</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Dictionary with the keys <code>headers</code> and <code>rows</code></p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="dict">dict</span>[<span title="str">str</span>, <span title="typing.Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.data_series.DataSeries.from_json" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
-
+ <code class="highlight language-python"><span class="n">from_json</span><span class="p">(</span><span class="n">json_string</span><span class="p">)</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-classmethod"><code>classmethod</code></small>
</span>
@@ -2534,216 +2529,206 @@
<a href="#streampipes.model.resource.data_series.DataSeries.from_json" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Creates an instance of <code>DataSeries</code> from a given JSON string.</p>
<p>This method is used by the resource container to parse the JSON response of
the StreamPipes API.
Currently, it only supports data lake series that consist of exactly one series of data.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>json_string</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The JSON string the data lake series should be created on.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code>str</code>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>json_string</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The JSON string the data lake series should be created on.</p>
+ </div>
+ <p>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code><a class="autorefs autorefs-internal" title="DataSeries (streampipes.model.resource.data_series.DataSeries)" href="#streampipes.model.resource.data_series.DataSeries">DataSeries</a></code>
</span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Instance of <code>DataSeries</code> that is created based on the given JSON string.</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_series.DataSeries" href="#streampipes.model.resource.data_series.DataSeries">DataSeries</a></code>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><span title="StreamPipesUnsupportedDataLakeSeries">StreamPipesUnsupportedDataLakeSeries</span></code>
</span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Instance of <code>DataSeries</code> that is created based on the given JSON string.</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code>StreamPipesUnsupportedDataLakeSeries</code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If the data lake series returned by the StreamPipes API cannot be parsed
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If the data lake series returned by the StreamPipes API cannot be parsed
with the current version of the Python client.</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.data_series.DataSeries.to_dict" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.data_series.DataSeries.to_dict" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource in dictionary representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Indicates if the dictionary keys are in python representation or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Indicates if the dictionary keys are in python representation or
equally named to the StreamPipes backend</p>
- </div>
- <p>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>True</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The resource as dictionary representation</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, Any]</code>
- </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>True</code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The resource as dictionary representation</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.data_series.DataSeries.to_pandas" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.data_series.DataSeries.to_pandas" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the data lake series in representation of a Pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>pd</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The data lake series in form of a pandas dataframe</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="pandas.DataFrame">DataFrame</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>pd</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The data lake series in form of a pandas dataframe</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="pandas.DataFrame">DataFrame</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2751,8 +2736,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2761,7 +2745,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2770,7 +2754,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/resource/data_stream/index.html b/docs-python/dev/reference/model/resource/data_stream/index.html
index 7208162..5a61ea5 100644
--- a/docs-python/dev/reference/model/resource/data_stream/index.html
+++ b/docs-python/dev/reference/model/resource/data_stream/index.html
@@ -2348,9 +2348,9 @@
<a id="streampipes.model.resource.data_stream"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2366,16 +2366,16 @@
<h2 id="streampipes.model.resource.data_stream.DataStream" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">DataStream</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">DataStream</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.data_stream.DataStream" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
-
+
<p>Implementation of a resource for data streams.</p>
<p>This resource defines the data model used by resource container (<code>model.container.DataStreams</code>).
It inherits from Pydantic's BaseModel to get all its superpowers,
@@ -2383,7 +2383,7 @@
the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>
-
+
<div class="doc doc-children">
@@ -2399,20 +2399,20 @@
<h3 id="streampipes.model.resource.data_stream.DataStream.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.resource.data_stream.DataStream.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2428,134 +2428,126 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.data_stream.DataStream.convert_to_pandas_representation" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.data_stream.DataStream.convert_to_pandas_representation" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the dictionary representation of a data stream to be used when creating a pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>pandas_repr</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Pandas representation of the resource as a dictionary, which is then used by the respource container
-to create a data frame from a collection of resources.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>Dict[str, Any]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>pandas_repr</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Pandas representation of the resource as a dictionary, which is then used by the respource container
+to create a data frame from a collection of resources.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.data_stream.DataStream.to_dict" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.data_stream.DataStream.to_dict" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource in dictionary representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Indicates if the dictionary keys are in python representation or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Indicates if the dictionary keys are in python representation or
equally named to the StreamPipes backend</p>
- </div>
- <p>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>True</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The resource as dictionary representation</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code>Dict[str, Any]</code>
- </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>True</code>
+ </span>
</p>
- </td>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The resource as dictionary representation</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2563,8 +2555,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2573,7 +2564,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2582,7 +2573,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/resource/exceptions/index.html b/docs-python/dev/reference/model/resource/exceptions/index.html
index 48aebb3..e2d1eb6 100644
--- a/docs-python/dev/reference/model/resource/exceptions/index.html
+++ b/docs-python/dev/reference/model/resource/exceptions/index.html
@@ -2294,9 +2294,9 @@
<a id="streampipes.model.resource.exceptions"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2312,21 +2312,21 @@
<h2 id="streampipes.model.resource.exceptions.StreamPipesUnsupportedDataSeries" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">StreamPipesUnsupportedDataSeries</span><span class="p">(</span><span class="n">reason</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">StreamPipesUnsupportedDataSeries</span><span class="p">(</span><span class="n">reason</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.exceptions.StreamPipesUnsupportedDataSeries" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code>Exception</code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="Exception">Exception</span></code></p>
-
+
<p>Exception to be raised when the returned data lake series
cannot be parsed with the current implementation of the resource.</p>
-
+
<div class="doc doc-children">
@@ -2342,8 +2342,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2352,7 +2351,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2361,7 +2360,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/resource/function_definition/index.html b/docs-python/dev/reference/model/resource/function_definition/index.html
index 8be048a..7288d0f 100644
--- a/docs-python/dev/reference/model/resource/function_definition/index.html
+++ b/docs-python/dev/reference/model/resource/function_definition/index.html
@@ -2430,9 +2430,9 @@
<a id="streampipes.model.resource.function_definition"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2448,78 +2448,77 @@
<h2 id="streampipes.model.resource.function_definition.FunctionDefinition" class="doc doc-heading">
- <code>FunctionDefinition</code>
+ <code>FunctionDefinition</code>
<a href="#streampipes.model.resource.function_definition.FunctionDefinition" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
-
+
<p>Configuration for a StreamPipes Function.</p>
<p>This class maps to the <code>FunctionDefinition</code> class in the StreamPipes model.
It contains all metadata that are required to register a function at the StreamPipes backend.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.model.resource.function_definition.FunctionDefinition.consumed_streams">consumed_streams</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>List of data streams the function is consuming from</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[str]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code><span title="streampipes.model.resource.function_definition.FunctionDefinition.function_id">function_id</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>identifier object of a StreamPipes function</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.function_definition.FunctionId" href="#streampipes.model.resource.function_definition.FunctionId">FunctionId</a></code>
- </span>
- </p>
- </td>
- </tr>
- <tr>
- <td><code><span title="streampipes.model.resource.function_definition.FunctionDefinition.output_data_streams">output_data_streams</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>Map off all output data streams added to the function definition</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a>]</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.model.resource.function_definition.FunctionDefinition.consumed_streams">consumed_streams</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>List of data streams the function is consuming from</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.model.resource.function_definition.FunctionDefinition.function_id">function_id</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>identifier object of a StreamPipes function</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="FunctionId (streampipes.model.resource.function_definition.FunctionId)" href="#streampipes.model.resource.function_definition.FunctionId">FunctionId</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.model.resource.function_definition.FunctionDefinition.output_data_streams">output_data_streams</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>Map off all output data streams added to the function definition</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2535,20 +2534,20 @@
<h3 id="streampipes.model.resource.function_definition.FunctionDefinition.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.resource.function_definition.FunctionDefinition.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2564,306 +2563,288 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.function_definition.FunctionDefinition.add_output_data_stream" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">add_output_data_stream</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">add_output_data_stream</span><span class="p">(</span><span class="n">data_stream</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.function_definition.FunctionDefinition.add_output_data_stream" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Adds an output data stream to the function which makes it possible to write data back to StreamPipes.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>data_stream</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>The schema of the output data stream.</p>
- </div>
- <p>
- <span class="doc-param-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>self</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Instance of the function definition that is extended by the provided <code>DataStream</code></p>
- </div>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>data_stream</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>The schema of the output data stream.</p>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.function_definition.FunctionDefinition" href="#streampipes.model.resource.function_definition.FunctionDefinition">FunctionDefinition</a></code>
- </span>
+ <span class="doc-param-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a></code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>self</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Instance of the function definition that is extended by the provided <code>DataStream</code></p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><a class="autorefs autorefs-internal" title="FunctionDefinition (streampipes.model.resource.function_definition.FunctionDefinition)" href="#streampipes.model.resource.function_definition.FunctionDefinition">FunctionDefinition</a></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.function_definition.FunctionDefinition.convert_to_pandas_representation" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.function_definition.FunctionDefinition.convert_to_pandas_representation" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the dictionary representation of a function definition
to be used when creating a pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>pandas_repr</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Pandas representation of the resource as a dictionary, which is then used by the respource container
-to create a data frame from a collection of resources.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, Any]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>pandas_repr</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Pandas representation of the resource as a dictionary, which is then used by the respource container
+to create a data frame from a collection of resources.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.function_definition.FunctionDefinition.get_output_data_streams" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get_output_data_streams</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">get_output_data_streams</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.function_definition.FunctionDefinition.get_output_data_streams" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get the output data streams of the function.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>output_streams</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Dictionary with every known stream id and the related output stream.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, <a class="autorefs autorefs-internal" title="streampipes.model.resource.data_stream.DataStream" href="../data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a>]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>output_streams</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Dictionary with every known stream id and the related output stream.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <a class="autorefs autorefs-internal" title="DataStream (streampipes.model.resource.data_stream.DataStream)" href="../data_stream/#streampipes.model.resource.data_stream.DataStream">DataStream</a>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.function_definition.FunctionDefinition.get_output_stream_ids" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">get_output_stream_ids</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">get_output_stream_ids</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.function_definition.FunctionDefinition.get_output_stream_ids" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Get the stream ids of the output data streams.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>output_stream_ids</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>List of all stream ids</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.List">List</span>[str]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>output_stream_ids</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>List of all stream ids</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.List">List</span>[<span title="str">str</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.function_definition.FunctionDefinition.to_dict" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.function_definition.FunctionDefinition.to_dict" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource in dictionary representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Indicates if the dictionary keys are in python representation or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Indicates if the dictionary keys are in python representation or
equally named to the StreamPipes backend</p>
- </div>
- <p>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>True</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The resource as dictionary representation</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, Any]</code>
- </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>True</code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The resource as dictionary representation</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
@@ -2871,8 +2852,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2881,63 +2861,62 @@
<h2 id="streampipes.model.resource.function_definition.FunctionId" class="doc doc-heading">
- <code>FunctionId</code>
+ <code>FunctionId</code>
<a href="#streampipes.model.resource.function_definition.FunctionId" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="../../common/#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="../../common/#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>Identification object for a StreamPipes function.</p>
<p>Maps to the <code>FunctionId</code> class defined in the StreamPipes model.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.model.resource.function_definition.FunctionId.id">id</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>unique identifier of the function instance</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- <tr>
- <td><code><span title="streampipes.model.resource.function_definition.FunctionId.version">version</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>version of the corresponding function</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code>int</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.model.resource.function_definition.FunctionId.id">id</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>unique identifier of the function instance</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.model.resource.function_definition.FunctionId.version">version</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>version of the corresponding function</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="int">int</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2953,20 +2932,20 @@
<h3 id="streampipes.model.resource.function_definition.FunctionId.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.resource.function_definition.FunctionId.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2982,8 +2961,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2992,8 +2970,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -3002,7 +2979,7 @@
</div>
- </div>
+ </div>
</div>
@@ -3011,7 +2988,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/resource/query_result/index.html b/docs-python/dev/reference/model/resource/query_result/index.html
index 463859b..28c611a 100644
--- a/docs-python/dev/reference/model/resource/query_result/index.html
+++ b/docs-python/dev/reference/model/resource/query_result/index.html
@@ -2362,9 +2362,9 @@
<a id="streampipes.model.resource.query_result"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2380,17 +2380,17 @@
<h2 id="streampipes.model.resource.query_result.QueryResult" class="doc doc-heading">
- <code>QueryResult</code>
+ <code>QueryResult</code>
<a href="#streampipes.model.resource.query_result.QueryResult" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
-
+
<p>Implementation of a resource for query result.
This resource defines the data model used by its resource container(<code>model.container.DataLakeMeasures</code>).
It inherits from Pydantic's BaseModel to get all its superpowers,
@@ -2398,7 +2398,7 @@
the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>
-
+
<div class="doc doc-children">
@@ -2414,20 +2414,20 @@
<h3 id="streampipes.model.resource.query_result.QueryResult.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.resource.query_result.QueryResult.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2443,204 +2443,192 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.query_result.QueryResult.convert_to_pandas_representation" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.query_result.QueryResult.convert_to_pandas_representation" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the dictionary representation of a data lake series
to be used when creating a pandas Dataframe.</p>
<p>It contains only the "header rows" (the column names) and "rows" that contain the actual data.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <span class="doc-returns-annotation">
- <code>dict</code>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-returns-annotation">
+ <code><span title="dict">dict</span></code>
+ </span>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Dictionary with the keys <code>headers</code> and <code>rows</code></p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RAISES</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <span class="doc-raises-annotation">
+ <code><span title="StreamPipesUnsupportedDataLakeSeries">StreamPipesUnsupportedDataLakeSeries</span></code>
</span>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Dictionary with the keys <code>headers</code> and <code>rows</code></p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ <td class="doc-raises-details">
+ <div class="doc-md-description">
+ <p>If the query result returned by the StreamPipes API cannot be converted to the pandas representation</p>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
-
- <table>
- <thead>
- <tr>
- <th><b>RAISES</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <span class="doc-raises-annotation">
- <code>StreamPipesUnsupportedDataLakeSeries</code>
- </span>
- </td>
- <td class="doc-raises-details">
- <div class="doc-md-description">
- <p>If the query result returned by the StreamPipes API cannot be converted to the pandas representation</p>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
-
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.query_result.QueryResult.to_dict" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.query_result.QueryResult.to_dict" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource in dictionary representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Indicates if the dictionary keys are in python representation or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Indicates if the dictionary keys are in python representation or
equally named to the StreamPipes backend</p>
- </div>
- <p>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>True</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The resource as dictionary representation</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, Any]</code>
- </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>True</code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The resource as dictionary representation</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.query_result.QueryResult.to_pandas" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">to_pandas</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.query_result.QueryResult.to_pandas" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the data lake series in representation of a Pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>df</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Pandas df containing the query result</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="pandas.DataFrame">DataFrame</span></code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>df</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Pandas df containing the query result</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="pandas.DataFrame">DataFrame</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2648,8 +2636,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2658,7 +2645,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2667,7 +2654,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/resource/resource/index.html b/docs-python/dev/reference/model/resource/resource/index.html
index 9c09352..d273af2 100644
--- a/docs-python/dev/reference/model/resource/resource/index.html
+++ b/docs-python/dev/reference/model/resource/resource/index.html
@@ -2348,12 +2348,12 @@
<a id="streampipes.model.resource.resource"></a>
- <div class="doc doc-contents first">
-
+ <div class="doc doc-contents first">
+
<p>General and abstract implementation for a resource.</p>
<p>A resource defines the data model that is used by a resource container (<code>model.container.resourceContainer</code>).</p>
-
+
<div class="doc doc-children">
@@ -2369,17 +2369,17 @@
<h2 id="streampipes.model.resource.resource.Resource" class="doc doc-heading">
- <code>Resource</code>
+ <code>Resource</code>
<a href="#streampipes.model.resource.resource.Resource" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><span title="abc.ABC">ABC</span></code>, <code><a class="autorefs autorefs-internal" title="streampipes.model.common.BasicModel" href="../../common/#streampipes.model.common.BasicModel">BasicModel</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><span title="abc.ABC">ABC</span></code>, <code><a class="autorefs autorefs-internal" title="BasicModel (streampipes.model.common.BasicModel)" href="../../common/#streampipes.model.common.BasicModel">BasicModel</a></code></p>
-
+
<p>General and abstract implementation for a resource.</p>
<p>A resource defines the data model used by a resource container (<code>model.container.resourceContainer</code>).
It inherits from Pydantic's BaseModel to get all its superpowers,
@@ -2387,7 +2387,7 @@
the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>
-
+
<div class="doc doc-children">
@@ -2403,20 +2403,20 @@
<h3 id="streampipes.model.resource.resource.Resource.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.resource.resource.Resource.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2432,20 +2432,17 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.resource.Resource.convert_to_pandas_representation" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
-
+ <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
+
<span class="doc doc-labels">
<small class="doc doc-label doc-label-abstractmethod"><code>abstractmethod</code></small>
</span>
@@ -2453,117 +2450,112 @@
<a href="#streampipes.model.resource.resource.Resource.convert_to_pandas_representation" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns a dictionary representation to be used when creating a pandas Dataframe.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td>
- <code>pandas_repr</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>Pandas representation of the resource as a dictionary, which is then used by the respource container
-to create a data frame from a collection of resources.</p>
- </div>
- <p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, Any]</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>pandas_repr</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>Pandas representation of the resource as a dictionary, which is then used by the respource container
+to create a data frame from a collection of resources.</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.resource.Resource.to_dict" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.resource.Resource.to_dict" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource in dictionary representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Indicates if the dictionary keys are in python representation or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Indicates if the dictionary keys are in python representation or
equally named to the StreamPipes backend</p>
- </div>
- <p>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>True</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The resource as dictionary representation</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, Any]</code>
- </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>True</code>
+ </span>
</p>
- </td>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The resource as dictionary representation</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+ </div>
</div>
@@ -2571,8 +2563,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2581,7 +2572,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2590,7 +2581,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/reference/model/resource/version/index.html b/docs-python/dev/reference/model/resource/version/index.html
index 5515e90..8e8ba08 100644
--- a/docs-python/dev/reference/model/resource/version/index.html
+++ b/docs-python/dev/reference/model/resource/version/index.html
@@ -2360,9 +2360,9 @@
<a id="streampipes.model.resource.version"></a>
- <div class="doc doc-contents first">
+ <div class="doc doc-contents first">
-
+
<div class="doc doc-children">
@@ -2378,48 +2378,47 @@
<h2 id="streampipes.model.resource.version.Version" class="doc doc-heading">
- <code>Version</code>
+ <code>Version</code>
<a href="#streampipes.model.resource.version.Version" class="headerlink" title="Permanent link">¶</a></h2>
- <div class="doc doc-contents ">
- <p class="doc doc-class-bases">
- Bases: <code><a class="autorefs autorefs-internal" title="streampipes.model.resource.resource.Resource" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
+ <div class="doc doc-contents ">
+ <p class="doc doc-class-bases">
+ Bases: <code><a class="autorefs autorefs-internal" title="Resource (streampipes.model.resource.resource.Resource)" href="../resource/#streampipes.model.resource.resource.Resource">Resource</a></code></p>
-
+
<p>Metadata about the version of the connected StreamPipes server.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>ATTRIBUTE</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code><span title="streampipes.model.resource.version.Version.backend_version">backend_version</span></code></td>
- <td class="doc-attribute-details">
- <div class="doc-md-description">
- <p>version of the StreamPipes backend the client is connected to</p>
- </div>
- <p>
- <span class="doc-attribute-annotation">
- <b>TYPE:</b>
- <code>str</code>
- </span>
- </p>
- </td>
+ <th><span class="doc-section-title">ATTRIBUTE</span></th>
+ <th><span>DESCRIPTION</span></th>
</tr>
- </tbody>
- </table>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code><span title="streampipes.model.resource.version.Version.backend_version">backend_version</span></code></td>
+ <td class="doc-attribute-details">
+ <div class="doc-md-description">
+ <p>version of the StreamPipes backend the client is connected to</p>
+ </div>
+ <p>
+ <span class="doc-attribute-annotation">
+ <b>TYPE:</b>
+ <code><span title="str">str</span></code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
-
+
<div class="doc doc-children">
@@ -2435,20 +2434,20 @@
<h3 id="streampipes.model.resource.version.Version.Config" class="doc doc-heading">
- <code>Config</code>
+ <code>Config</code>
<a href="#streampipes.model.resource.version.Version.Config" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
+ <div class="doc doc-contents ">
-
+
<p>Configuration class for Pydantic.
Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>
-
+
<div class="doc doc-children">
@@ -2464,126 +2463,117 @@
</div>
- </div>
-
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.version.Version.convert_to_pandas_representation" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
+ <code class="highlight language-python"><span class="n">convert_to_pandas_representation</span><span class="p">()</span></code>
<a href="#streampipes.model.resource.version.Version.convert_to_pandas_representation" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the dictionary representation of the version metadata
to be used when creating a pandas Dataframe.</p>
- </div>
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.version.Version.to_dict" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">to_dict</span><span class="p">(</span><span class="n">use_source_names</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.version.Version.to_dict" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Returns the resource in dictionary representation.</p>
-
- <table>
- <thead>
- <tr>
- <th><b>PARAMETER</b></th>
- <th><b> DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
+<table>
+ <thead>
<tr>
- <td><code>use_source_names</code></td>
- <td class="doc-param-details">
- <div class="doc-md-description">
- <p>Indicates if the dictionary keys are in python representation or
+ <th><span class="doc-section-title">PARAMETER</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td><code>use_source_names</code></td>
+ <td class="doc-param-details">
+ <div class="doc-md-description">
+ <p>Indicates if the dictionary keys are in python representation or
equally named to the StreamPipes backend</p>
- </div>
- <p>
- <span class="doc-param-default">
- <b>DEFAULT:</b>
- <code>True</code>
- </span>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
-
-
-
- <table>
- <thead>
- <tr>
- <th><b>RETURNS</b></th>
- <th><b>DESCRIPTION</b></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>
- <code>resource</code>
- </td>
- <td class="doc-returns-details">
- <div class="doc-md-description">
- <p>The resource as dictionary representation</p>
- </div>
+ </div>
<p>
- <span class="doc-returns-annotation">
- <b>TYPE:</b>
- <code><span title="typing.Dict">Dict</span>[str, Any]</code>
- </span>
+ <span class="doc-param-default">
+ <b>DEFAULT:</b>
+ <code>True</code>
+ </span>
</p>
- </td>
- </tr>
- </tbody>
- </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
- </div>
+
+<table>
+ <thead>
+ <tr>
+ <th><span class="doc-section-title">RETURNS</span></th>
+ <th><span>DESCRIPTION</span></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr class="doc-section-item">
+ <td>
+ <code>resource</code>
+ </td>
+ <td class="doc-returns-details">
+ <div class="doc-md-description">
+ <p>The resource as dictionary representation</p>
+ </div>
+ <p>
+ <span class="doc-returns-annotation">
+ <b>TYPE:</b>
+ <code><span title="typing.Dict">Dict</span>[<span title="str">str</span>, <span title="Any">Any</span>]</code>
+ </span>
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ </div>
</div>
-
<div class="doc doc-object doc-function">
-
<h3 id="streampipes.model.resource.version.Version.validate_backend_version" class="doc doc-heading">
- <code class="highlight language-python"><span class="n">validate_backend_version</span><span class="p">(</span><span class="n">backend_version</span><span class="p">)</span></code>
+ <code class="highlight language-python"><span class="n">validate_backend_version</span><span class="p">(</span><span class="n">backend_version</span><span class="p">)</span></code>
<a href="#streampipes.model.resource.version.Version.validate_backend_version" class="headerlink" title="Permanent link">¶</a></h3>
- <div class="doc doc-contents ">
-
+ <div class="doc doc-contents ">
+
<p>Validates the backend version of the StreamPipes.
Sets 'development' if none is returned since this the behavior of StreamPipes backend running
in development mode.</p>
- </div>
+ </div>
</div>
@@ -2591,8 +2581,7 @@
</div>
- </div>
-
+ </div>
</div>
@@ -2601,7 +2590,7 @@
</div>
- </div>
+ </div>
</div>
@@ -2610,7 +2599,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 7, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 26, 2025 02:35:20">July 26, 2025</span>
</small>
diff --git a/docs-python/dev/search/search_index.json b/docs-python/dev/search/search_index.json
index 8bdd3f5..0b33c96 100644
--- a/docs-python/dev/search/search_index.json
+++ b/docs-python/dev/search/search_index.json
@@ -1 +1 @@
-{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"\ud83c\udfe1 Home","text":"StreamPipes is a self-service (Industrial) IoT toolbox to enable non-technical users to connect, analyze and explore IoT data streams. Apache StreamPipes for Python \ud83d\udc0d <p> Apache StreamPipes meets Python! We are working highly motivated on a Python library to interact with StreamPipes. In this way, we would like to unite the power of StreamPipes to easily connect to and read from different data sources, especially in the IoT domain, and the amazing universe of data analytics libraries in Python. </p>"},{"location":"#quickstart","title":"\u26a1\ufe0f Quickstart","text":"<p>As a quick example, we demonstrate how to set up and configure a StreamPipes client. In addition, we will get the available data lake measures out of StreamPipes.</p> <p><pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nconfig = StreamPipesClientConfig(\n credential_provider = StreamPipesApiKeyCredentials(\n username = \"test@streampipes.apache.org\",\n api_key = \"DEMO-KEY\",\n ),\n host_address = \"localhost\",\n https_disabled = True,\n port = 80\n)\n\nclient = StreamPipesClient(client_config=config)\n\n# get all available datat lake measures\nmeasures = client.dataLakeMeasureApi.all()\n\n# get amount of retrieved measures\nlen(measures)\n</code></pre> Output: <pre><code>1\n</code></pre> </p> <pre><code># inspect the data lake measures as pandas dataframe\nmeasures.to_pandas()\n</code></pre> <p>Output: <pre><code>measure_name timestamp_field ... pipeline_is_running num_event_properties\n0 test s0::timestamp ... False 2\n[1 rows x 6 columns]\n</code></pre> Alternatively, you can provide your credentials via environment variables. Simply define your credential provider as follows:</p> <p><pre><code>from streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nStreamPipesApiKeyCredentials()\n</code></pre> This requires to set the following environment variables: <code>SP_API_KEY</code> and <code>SP_USERNAME</code> </p> <p><code>username</code> is always the username that is used to log in into StreamPipes. </p> How to get your StreamPipes API key <p>The <code>api_key</code> can be generated within the UI as demonstrated below: </p> <p></p>"},{"location":"getting-started/developing/","title":"Developing & Contributing","text":""},{"location":"getting-started/developing/#development-guide","title":"\ud83d\udcd6 Development Guide","text":"<p>This document describes how to easily set up your local dev environment to work on StreamPipes Python \ud83d\udc0d. </p>"},{"location":"getting-started/developing/#first-steps","title":"\ud83d\ude80 First Steps","text":"<p>1) Set up your Python environment</p> <p>Create a virtual Python environment using a tool of your choice. To manage dependencies, we use Poetry, so please install poetry in your local environment, e.g. via <pre><code>pip install poetry\n</code></pre></p> <p>Once poetry is installed you can simply finalize your Python environment by running:</p> <pre><code>poetry install --with dev,stubs # install everything that is required for the development\npoetry install --with docs # install everything to work with the documentation\npoetry install --with dev,stubs,docs # install all optional dependencies related to development\n</code></pre> <p></p> <p>2) Install pre-commit hook</p> <p>The pre-commit hook is run before every commit and takes care about code style, linting, type hints, import sorting, etc. It will stop your commit in case the changes do not apply the expected format. Always check to have the recent version of the pre-commit hook installed otherwise the CI build might fail. If you are interested, you can have a deeper look on the underlying library: pre-commit.</p> <p><pre><code>pre-commit install\n</code></pre> The definition of the pre-commit hook can be found in .pre-commit-config.yaml.</p> <p></p>"},{"location":"getting-started/developing/#conventions","title":"\ud83d\udc4f Conventions","text":"<p>Below we list some conventions that we have agreed on for creating StreamPipes Python. Please comply to them when you plan to contribute to this project. If you have any other suggestions or would like to discuss them, we would be happy to hear from you on our mailing list dev@streampipes.apache.org or in our discussions on GitHub.</p> <p>1) Use <code>numpy</code> style for Python docstrings \ud83d\udcc4 Please stick to the <code>numpy</code> style when writing docstrings, as we require this for generating our documentation.</p> <p>2) Provide tests \u2705 We are aiming for broad test coverage for the Python package and have therefore set a requirement of at least 90% unit test coverage. Therefore, please remember to write (unit) tests already during development. If you have problems with writing tests, don't hesitate to ask us for help directly in the PR or even before that via our mailing list (see above).</p> <p>3) Build a similar API as the Java client provides \ud83d\udd04 Whenever possible, please try to develop the API of the Python library the same as the Java client or Java SDK. By doing so, we would like to provide a consistent developer experience and the basis for automated testing in the future.</p>"},{"location":"getting-started/developing/#dependency-management","title":"\ud83d\udce6 Dependency Management","text":"<p>In case you want to add a new dependency to StreamPipes you can use the following command: <pre><code>poetry add <dep-name>\n</code></pre></p> <p>If the dependency is only required for development purpose or the documentation, please stick to one the following: <pre><code>poetry add <dep-name> --group dev\npoetry add <dep-name> --group stubs\npoetry add <dep-name> --group docs\n</code></pre></p> <p>In case you want to regenerate the poetry lock file, e.g., in case you manually updated the <code>pyproject.toml</code>, the following command should be used: <pre><code>poetry lock --no-update\n</code></pre></p> <p>After that, you should install the current version of the poetry lock file to keep your local environment consistent (see command above.)</p>"},{"location":"getting-started/developing/#documentation","title":"\ud83d\udcdaDocumentation","text":"<p>To build our documentation, we use Materials for MkDocs. All files can be found within the <code>docs</code> directory. To pre-view your local version of the documentation, you can use the following command: <pre><code>make livedoc\n</code></pre></p>"},{"location":"getting-started/developing/#roadmap","title":"\ud83d\ude80 Roadmap","text":"<p>Broadly speaking, we plan to expand or add new aspects/functionality to the library where we are focusing on the following:</p> <ul> <li>increase coverage of StreamPipes API \ud83d\udd17</li> <li>build a comprehensive function zoo \ud83d\udc18</li> <li>support more messaging broker \ud83d\udcec</li> <li>possibility to build pipeline elements \ud83d\udd27</li> </ul> <p>In case you want to have a more detailed look on what we are currently planning, have a look at our open issues(more short-term driven).</p> <p>Of course, contributions are always highly appreciated \ud83d\udd2e</p> <p>Stay tuned!</p>"},{"location":"getting-started/developing/#contributing","title":"\ud83d\udc68\u200d\ud83d\udcbb Contributing","text":"<p>Before opening a pull request, review the Get Involved page. It lists information that is required for contributing to StreamPipes.</p> <p>When you contribute code, you affirm that the contribution is your original work and that you license the work to the project under the project's open source license. Whether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project's open source license and warrant that you have the legal authority to do so.</p>"},{"location":"getting-started/first-steps/","title":"First Steps","text":""},{"location":"getting-started/first-steps/#installation","title":"\ud83d\udcda Installation","text":"<p>The StreamPipes Python library is meant to work with Python 3.8 and above. Installation can be done via <code>pip</code>: You can install the latest development version from GitHub, as so:</p> <pre><code>pip install streampipes\n\n# if you want to have the current development state you can also execute\npip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python\n# the corresponding documentation can be found here: https://streampipes.apache.org/docs/docs/python/dev/\n</code></pre>"},{"location":"getting-started/first-steps/#setting-up-streampipes","title":"\u2b06\ufe0f Setting up StreamPipes","text":"<p>When working with the StreamPipes Python library it is inevitable to have a running StreamPipes instance to connect and interact with. In case you don't have a running instance at hand, you can easily set up one on your local machine. Hereby you need to consider that StreamPipes supports different message broker (e.g., Kafka, NATS). We will demonstrate below how you can easily set up StreamPipes for both supported message brokers. </p>"},{"location":"getting-started/first-steps/#start-streampipes-via-docker-compose","title":"\ud83d\udc33 Start StreamPipes via Docker Compose","text":"<p>The easiest and therefore recommend way to get StreamPipes started is by using docker compose. Therefore, you need Docker running. You can check if Docker is ready on your machine by executing. <pre><code>docker ps\n</code></pre> If this results in an output similar to the following, Docker is ready to continue. <pre><code>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n... ... ... ... ... ... ...\n</code></pre> Otherwise, you need to start docker first. Please read the full guide on how to start StreamPipes with <code>docker compose</code> here.</p>"},{"location":"getting-started/first-steps/#setup-streampipes-with-nats-as-message-broker","title":"Setup StreamPipes with NATS as message broker","text":"<p>The following shows how you can set up a StreamPipes instance that uses NATS as messaging layer. So in this scenario, we will go with <code>docker-compose.nats.yml</code>. Thereby, when running locally, we need to add the following port mapping entry to <code>services.nats.ports</code>: <pre><code>- 4222:4222\n</code></pre></p> <p>After this modification is applied, StreamPipes can simply be started with this command: <pre><code>docker-compose -f docker-compose.nats.yml up -d\n</code></pre></p> <p>Once all services are started, you can access StreamPipes via <code>http://localhost</code>.</p>"},{"location":"getting-started/first-steps/#setup-streampipes-with-kafka-as-message-broker","title":"Setup StreamPipes with Kafka as message broker","text":"<p>Alternatively, you can use <code>docker-compose.yml</code> to start StreamPipes with Kafka as messaging layer. When running locally we have to modify <code>services.kafka.environment</code> and add the ports to <code>services.kafka.ports</code>: <pre><code>environment:\nKAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,OUTSIDE:PLAINTEXT\nKAFKA_ADVERTISED_LISTENERS: PLAINTEXT://:9092,OUTSIDE://localhost:9094\nKAFKA_LISTENERS: PLAINTEXT://:9092,OUTSIDE://:9094\n...\nports:\n- 9094:9094\n</code></pre> Then, you need to execute the following command: <pre><code>docker-compose -f docker-compose.yml up -d\n</code></pre></p> <p>Once all services are started, you can access StreamPipes via <code>http://localhost</code>.</p> <p>In case you want to have more control over your StreamPipes setup, you might take a look at our deployment CLI.</p> <p>Have fun discovering StreamPipes and our Python library \ud83d\ude80</p>"},{"location":"getting-started/quickstart/","title":"Quickstart","text":""},{"location":"getting-started/quickstart/#quickstart","title":"\u26a1\ufe0f Quickstart","text":"<p>As a quick example, we demonstrate how to set up and configure a StreamPipes client. In addition, we will get the available data lake measures out of StreamPipes.</p> <p><pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nconfig = StreamPipesClientConfig(\n credential_provider = StreamPipesApiKeyCredentials(\n username = \"test@streampipes.apache.org\",\n api_key = \"DEMO-KEY\",\n ),\n host_address = \"localhost\",\n https_disabled = True,\n port = 80\n)\n\nclient = StreamPipesClient(client_config=config)\n\n# get all available datat lake measures\nmeasures = client.dataLakeMeasureApi.all()\n\n# get amount of retrieved measures\nlen(measures)\n</code></pre> Output: <pre><code>1\n</code></pre> </p> <pre><code># inspect the data lake measures as pandas dataframe\nmeasures.to_pandas()\n</code></pre> <p>Output: <pre><code>measure_name timestamp_field ... pipeline_is_running num_event_properties\n0 test s0::timestamp ... False 2\n[1 rows x 6 columns]\n</code></pre> Alternatively, you can provide your credentials via environment variables. Simply define your credential provider as follows:</p> <p><pre><code>from streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nStreamPipesApiKeyCredentials()\n</code></pre> This requires to set the following environment variables: <code>SP_API_KEY</code> and <code>SP_USERNAME</code> </p> <p><code>username</code> is always the username that is used to log in into StreamPipes. The <code>api_key</code> can be generated within the UI as demonstrated below:</p> <p></p>"},{"location":"reference/client/client/","title":"Client","text":"<p>Implementation of the StreamPipes client. The client is designed as the central point of interaction with the StreamPipes API and provides all functionalities to communicate with the API.</p>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient","title":"<code>StreamPipesClient(client_config, logging_level=logging.INFO)</code>","text":"<p>The client to connect to StreamPipes.</p> <p>This is the central point of contact with StreamPipes and provides all the functionalities to interact with it.</p> <p>The client provides so-called \"endpoints\" each of which refers to an endpoint of the StreamPipes API, e.g. <code>.dataLakeMeasureApi</code>. An endpoint provides the actual methods to interact with StreamPipes API.</p> PARAMETER DESCRIPTION <code>client_config</code> <p>Configures the client to connect properly to the StreamPipes instance.</p> <p> TYPE: <code>StreamPipesClientConfig</code> </p> <code>logging_level</code> <p>Influences the log messages emitted by the <code>StreamPipesClient</code></p> <p> TYPE: <code>Optional[int]</code> DEFAULT: <code>INFO</code> </p> ATTRIBUTE DESCRIPTION <code>dataLakeMeasureApi</code> <p>Instance of the data lake measure endpoint</p> <p> TYPE: <code>DataLakeMeasureEndpoint</code> </p> <code>dataStreamApi</code> <p>Instance of the data stream endpoint</p> <p> TYPE: <code>DataStreamEndpoint</code> </p> RAISES DESCRIPTION <code>AttributeError:</code> <p>In case an invalid configuration of the <code>StreamPipesClientConfig</code> is passed</p> <p>Examples:</p> <pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</code></pre> <pre><code>client_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(\n username=\"test-user\",\n api_key=\"api-key\"\n ),\n host_address=\"localhost\",\n https_disabled=True\n)\n</code></pre> <p>The following way of instantiating a client instance is intended to be consistent with the StreamPipes Java client. <pre><code>client = StreamPipesClient.create(client_config=client_config)\n</code></pre></p> <p>If you prefer a more pythonic way, you can simply write: <pre><code>client = StreamPipesClient(client_config=client_config)\n</code></pre></p> <p>To interact with an endpoint: <pre><code>data_lake_measures = client.dataLakeMeasureApi.all()\n</code></pre></p> <p>To inspect returned data as a pandas dataframe: <pre><code>data_lake_measures.to_pandas()\n#\n# measure_name timestamp_field ... pipeline_is_running num_event_properties\n# 0 test s0::timestamp ... False 2\n# [1 rows x 6 columns]\n</code></pre></p>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient.base_api_path","title":"<code>base_api_path: str</code> <code>property</code>","text":"<p>Constructs the basic API URL from the given <code>client_config</code>.</p> RETURNS DESCRIPTION <code>base_api_path</code> <p>basic API path of the connected StreamPipes instance</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient.http_headers","title":"<code>http_headers: Dict[str, str]</code> <code>property</code>","text":"<p>Returns the HTTP headers used for all requests.</p> <p>The HTTP headers are composed of the authentication headers supplied by the credential provider and additional required headers (currently this is only the application header).</p> RETURNS DESCRIPTION <code>http_headers</code> <p>Header information for HTTP requests as string key-value pairs.</p> <p> TYPE: <code>Dict[str, str]</code> </p>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient.create","title":"<code>create(client_config, logging_level=logging.INFO)</code> <code>classmethod</code>","text":"<p>Returns an instance of the <code>StreamPipesPythonClient</code>.</p> <p>Provides consistency to the StreamPipes Java client.</p> PARAMETER DESCRIPTION <code>client_config</code> <p>Configures the client to connect properly to the StreamPipes instance.</p> <p> TYPE: <code>StreamPipesClientConfig</code> </p> <code>logging_level</code> <p>Influences the log messages emitted by the <code>StreamPipesClient</code>.</p> <p> TYPE: <code>int</code> DEFAULT: <code>INFO</code> </p> RETURNS DESCRIPTION <code>StreamPipesClient</code>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient.describe","title":"<code>describe()</code>","text":"<p>Prints a short description of the connected StreamPipes instance and the available resources to the console.</p> RETURNS DESCRIPTION <code> None</code> <p>Examples:</p> <p><pre><code>client.describe()\n</code></pre> Output: <pre><code>Hi there!\nYou are connected to a StreamPipes instance running at http://localhost:80.\nThe following StreamPipes resources are available with this client:\n6x DataStreams\n1x DataLakeMeasures\n</code></pre></p>"},{"location":"reference/client/config/","title":"Config","text":"<p>Configuration class for the StreamPipes client.</p>"},{"location":"reference/client/config/#streampipes.client.config.StreamPipesClientConfig","title":"<code>StreamPipesClientConfig(credential_provider, host_address, https_disabled=False, port=80, additional_headers=dict())</code> <code>dataclass</code>","text":"<p>Configure the StreamPipes client in accordance to the actual StreamPipes instance to connect to.</p> <p>An instance is provided to the <code>StreamPipesClient</code> to configure it properly.</p> PARAMETER DESCRIPTION <code>credential_provider</code> <p>Provides the credentials to authenticate with the StreamPipes API.</p> <p> TYPE: <code>CredentialProvider</code> </p> <code>host_address</code> <p>Host address of the StreamPipes instance to connect to. Should be provided without the protocol/scheme, e.g. as <code>localhost</code> or <code>streampipes.xyz</code>.</p> <p> TYPE: <code>str</code> </p> <code>https_disabled</code> <p>Determines whether https is used to connect to StreamPipes.</p> <p> TYPE: <code>Optional[bool]</code> DEFAULT: <code>False</code> </p> <code>port</code> <p>Specifies the port under which the StreamPipes API is available, e.g., <code>80</code> (with http) or <code>443</code> (with https)</p> <p> TYPE: <code>Optional[int]</code> DEFAULT: <code>80</code> </p> <code>additional_headers</code> <p>Specifies additional HTTP headers that should be sent with each request, e.g., proxy headers</p> <p> TYPE: <code>Optional[Dict[str, str]]</code> DEFAULT: <code>dict()</code> </p> <p>Examples:</p> <p>see StreamPipesClient</p>"},{"location":"reference/client/credential_provider/","title":"Credential provider","text":"<p>Implementation of credential providers. A credential provider supplies the specified sort of credentials in the appropriate HTTP header format. The headers are then used by the client to connect to StreamPipes.</p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.CredentialProvider","title":"<code>CredentialProvider</code>","text":"<p> Bases: <code>ABC</code></p> <p>Abstract implementation of a credential provider. Must be inherited by all credential providers.</p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.CredentialProvider.make_headers","title":"<code>make_headers(http_headers=None)</code>","text":"<p>Creates the HTTP headers for the specific credential provider.</p> <p>Concrete authentication headers must be defined in the implementation of a credential provider.</p> PARAMETER DESCRIPTION <code>http_headers</code> <p>Additional HTTP headers the generated headers are extended by.</p> <p> TYPE: <code>Optional[Dict[str, str]]</code> DEFAULT: <code>None</code> </p> RETURNS DESCRIPTION <code>https_headers</code> <p>Dictionary with header information as string key-value pairs. Contains all pairs given as parameter plus the header pairs for authentication determined by the credential provider.</p> <p> TYPE: <code>Dict[str, str]</code> </p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.StreamPipesApiKeyCredentials","title":"<code>StreamPipesApiKeyCredentials(username=None, api_key=None)</code>","text":"<p> Bases: <code>CredentialProvider</code></p> <p>A credential provider that allows authentication via a StreamPipes API Token.</p> <p>The required token can be generated via the StreamPipes UI (see the description on our start-page.</p> <p>Both parameters can either be passed as arguments or remain unset. If they are not passed, they are retrieved from environment variables:</p> <ul> <li><code>SP_USERNAME</code> is expected to contain the username</li> <li><code>SP_API_KEY</code> is expected to contain the API key</li> </ul> PARAMETER DESCRIPTION <code>username</code> <p>The username to which the API token is granted, e.g., <code>demo-user@streampipes.apche.org</code>. If not passed, the username is retrieved from environment variable <code>SP_USERNAME</code>.</p> <p> TYPE: <code>Optional[str]</code> DEFAULT: <code>None</code> </p> <code>api_key</code> <p>The StreamPipes API key as it is displayed in the UI. If not passed, the api key is retrieved from environment variable <code>SP_API_KEY</code></p> <p> TYPE: <code>Optional[str]</code> DEFAULT: <code>None</code> </p> <p>Examples:</p> <p>see StreamPipesClient</p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.StreamPipesApiKeyCredentials.from_env","title":"<code>from_env(username_env, api_key_env)</code> <code>classmethod</code>","text":"<p>DEPRECATED - use the class constructor instead</p> <p>Returns an API key provider parameterized via environment variables.</p> PARAMETER DESCRIPTION <code>username_env</code> <p>Name of the environment variable that contains the username</p> <p> TYPE: <code>str</code> </p> <code>api_key_env</code> <p>Name of the environment variable that contains the API key</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>StreamPipesApiKeyCredentials</code> RAISES DESCRIPTION <code>KeyError</code> <p>If one of the environment variables is not defined</p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.StreamPipesApiKeyCredentials.make_headers","title":"<code>make_headers(http_headers=None)</code>","text":"<p>Creates the HTTP headers for the specific credential provider.</p> <p>Concrete authentication headers must be defined in the implementation of a credential provider.</p> PARAMETER DESCRIPTION <code>http_headers</code> <p>Additional HTTP headers the generated headers are extended by.</p> <p> TYPE: <code>Optional[Dict[str, str]]</code> DEFAULT: <code>None</code> </p> RETURNS DESCRIPTION <code>https_headers</code> <p>Dictionary with header information as string key-value pairs. Contains all pairs given as parameter plus the header pairs for authentication determined by the credential provider.</p> <p> TYPE: <code>Dict[str, str]</code> </p>"},{"location":"reference/endpoint/endpoint/","title":"Endpoint","text":"<p>General implementation for an endpoint. Provided classes and assets are aimed to be used for developing endpoints. An endpoint provides all options to communicate with a dedicated part of StreamPipes in a handy way.</p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint","title":"<code>APIEndpoint(parent_client)</code>","text":"<p> Bases: <code>Endpoint</code></p> <p>Abstract implementation of an API endpoint.</p> <p>Serves as template for all endpoints of the StreamPipes API. By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint.all","title":"<code>all()</code>","text":"<p>Get all resources of this endpoint provided by the StreamPipes API.</p> <p>Results are provided as an instance of a <code>ResourceContainer</code> that allows to handle the returned resources in a comfortable and pythonic way.</p> RETURNS DESCRIPTION <code>container</code> <p>Container element that bundles the returned resources</p> <p> TYPE: <code>ResourceContainer</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint.build_url","title":"<code>build_url()</code>","text":"<p>Builds the endpoint's URL of the API path.</p> RETURNS DESCRIPTION <code>url</code> <p>The URL of the endpoint</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint.get","title":"<code>get(identifier, **kwargs)</code>","text":"<p>Queries the specified resource from the API endpoint.</p> PARAMETER DESCRIPTION <code>identifier</code> <p>The identifier of the resource to be queried.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The specified resource as an instance of the corresponding model class.</p> <p> TYPE: <code>Resource</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint.post","title":"<code>post(resource)</code>","text":"<p>Allows to post a resource to the StreamPipes API.</p> PARAMETER DESCRIPTION <code>resource</code> <p>The resource to be posted.</p> <p> TYPE: <code>Resource</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.Endpoint","title":"<code>Endpoint(parent_client)</code>","text":"<p> Bases: <code>ABC</code></p> <p>Abstract implementation of a StreamPipes endpoint.</p> <p>Serves as template for all endpoints used for interaction with a StreamPipes instance. By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p> PARAMETER DESCRIPTION <code>parent_client</code> <p>This parameter expects the instance of <code>StreamPipesClient</code> the endpoint is attached to.</p> <p> TYPE: <code>StreamPipesClient</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.MessagingEndpoint","title":"<code>MessagingEndpoint(parent_client)</code>","text":"<p> Bases: <code>Endpoint</code></p> <p>Abstract implementation of a StreamPipes messaging endpoint.</p> <p>Serves as template for all endpoints used for interacting with the StreamPipes messaging layer directly. Therefore, they need to provide the functionality to talk with the broker system running in StreamPipes. By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.MessagingEndpoint.broker","title":"<code>broker: Broker</code> <code>property</code> <code>writable</code>","text":"<p>Defines the broker instance that is used to connect to StreamPipes' messaging layer.</p> <p>This instance enables the client to authenticate to the broker used in the target StreamPipes instance, to consume messages from and to write messages to the broker.</p> RAISES DESCRIPTION <code>MessagingEndpointNotConfiguredError</code> <p>If the endpoint is used before the broker instance is set via <code>configure()</code></p> RETURNS DESCRIPTION <code>broker</code> <p>The broker instance to be used to communicate with StreamPipes' messaging layer.</p> <p> TYPE: <code>Broker</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.MessagingEndpoint.configure","title":"<code>configure(broker)</code>","text":"<p>Configures the message endpoint by setting the broker instance to be used.</p> <p>This configuration step is required before the endpoint can be actually used. The based <code>broker</code> instance is passed to an internal property.</p> PARAMETER DESCRIPTION <code>broker</code> <p>Broker instance that should be used for this endpoint</p> <p> TYPE: <code>Broker</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/endpoint/exceptions/","title":"Exceptions","text":"<p>Custom exceptions dedicated to the endpoints module.</p>"},{"location":"reference/endpoint/exceptions/#streampipes.endpoint.exceptions.MessagingEndpointNotConfiguredError","title":"<code>MessagingEndpointNotConfiguredError(endpoint_name)</code>","text":"<p> Bases: <code>Exception</code></p> <p>Exception that indicates that an instance of a messaging endpoint has not been configured.</p> <p>This error occurs when an instance of a messaging endpoint is used before the broker instance to be used is configured by passing it to the <code>configure()</code> method.</p> PARAMETER DESCRIPTION <code>endpoint_name</code> <p>The name of the endpoint that caused the error</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/","title":"Data lake measure","text":"<p>Specific implementation of the StreamPipes API's data lake measure endpoints. This endpoint allows to consume data stored in StreamPipes' data lake.</p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint","title":"<code>DataLakeMeasureEndpoint(parent_client)</code>","text":"<p> Bases: <code>APIEndpoint</code></p> <p>Implementation of the DataLakeMeasure endpoint.</p> <p>This endpoint provides an interface to all data stored in the StreamPipes data lake.</p> <p>Consequently, it allows querying metadata about available data sets (see <code>all()</code> method). The metadata is returned as an instance of <code>DataLakeMeasures</code>.</p> <p>In addition, the endpoint provides direct access to the data stored in the data laka by querying a specific data lake measure using the <code>get()</code> method.</p> <p>Examples:</p> <pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</code></pre> <pre><code>client_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(username=\"test-user\", api_key=\"api-key\"),\n host_address=\"localhost\",\n port=8082,\n https_disabled=True\n)\nclient = StreamPipesClient.create(client_config=client_config)\n</code></pre> <p><pre><code># get all existing data lake measures from StreamPipes\ndata_lake_measures = client.dataLakeMeasureApi.all()\n\n# let's take a look how many we got\nlen(data_lake_measures)\n</code></pre> <pre><code>5\n</code></pre></p> <p><pre><code># Retrieve a specific data lake measure as a pandas DataFrame\nflow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\").to_pandas()\nflow_rate_pd\n</code></pre> <pre><code> time density mass_flow sensorId sensor_fault_flags temperature volume_flow\n0 2023-02-24T16:19:41.472Z 50.872730 3.309556 flowrate02 False 44.448483 5.793138\n1 2023-02-24T16:19:41.482Z 47.186588 5.608580 flowrate02 False 40.322033 0.058015\n2 2023-02-24T16:19:41.493Z 46.735321 7.692881 flowrate02 False 49.239639 10.283526\n3 2023-02-24T16:19:41.503Z 40.169796 3.632898 flowrate02 False 49.933754 6.893441\n4 2023-02-24T16:19:41.513Z 49.635124 0.711260 flowrate02 False 50.106617 2.999871\n.. ... ... ... ... ... ... ...\n995 2023-02-24T16:19:52.927Z 50.057495 1.740114 flowrate02 False 46.558231 1.818237\n996 2023-02-24T16:19:52.94Z 41.038895 7.211723 flowrate02 False 48.048622 2.127493\n997 2023-02-24T16:19:52.952Z 45.837013 7.770180 flowrate02 False 48.188026 7.892062\n998 2023-02-24T16:19:52.965Z 43.389065 4.458602 flowrate02 False 48.280899 5.733892\n999 2023-02-24T16:19:52.977Z 44.056030 2.592060 flowrate02 False 47.505951 4.260697\n</code></pre></p> <p>As you can see, the returned amount of rows per default is <code>1000</code>. We can modify this behavior by passing the <code>limit</code> paramter. <pre><code>flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", limit=10).to_pandas()\nlen(flow_rate_pd)\n</code></pre> <pre><code>10\n</code></pre></p> <p>If we are only interested in the values for <code>density</code>, <code>columns</code> allows us to select the columns to be returned: <pre><code>flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", columns='density', limit=3).to_pandas()\nflow_rate_pd\n</code></pre> <pre><code> time density\n0 2023-02-24T16:19:41.472Z 50.872730\n1 2023-02-24T16:19:41.482Z 47.186588\n2 2023-02-24T16:19:41.493Z 46.735321\n</code></pre></p> <p>This is only a subset of the available query parameters, find them at MeasurementGetQueryConfig.</p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.all","title":"<code>all()</code>","text":"<p>Get all resources of this endpoint provided by the StreamPipes API.</p> <p>Results are provided as an instance of a <code>ResourceContainer</code> that allows to handle the returned resources in a comfortable and pythonic way.</p> RETURNS DESCRIPTION <code>container</code> <p>Container element that bundles the returned resources</p> <p> TYPE: <code>ResourceContainer</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.build_url","title":"<code>build_url()</code>","text":"<p>Builds the endpoint's URL of the API path.</p> RETURNS DESCRIPTION <code>url</code> <p>The URL of the endpoint</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.get","title":"<code>get(identifier, **kwargs)</code>","text":"<p>Queries the specified data lake measure from the API.</p> <p>By default, the maximum number of returned records is 1000. This behaviour can be influenced by passing the parameter <code>limit</code> with a different value (see MeasurementGetQueryConfig).</p> PARAMETER DESCRIPTION <code>identifier</code> <p>The identifier of the data lake measure to be queried.</p> <p> TYPE: <code>str</code> </p> <code>**kwargs</code> <p>Keyword arguments can be used to provide additional query parameters. The available query parameters are defined by the MeasurementGetQueryConfig.</p> <p> TYPE: <code>Optional[Dict[str, Any]]</code> DEFAULT: <code>{}</code> </p> RETURNS DESCRIPTION <code>measurement</code> <p>The specified data lake measure</p> <p> TYPE: <code>QueryResult</code> </p> <p>Examples:</p> <p>see directly at DataLakeMeasureEndpoint.</p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.post","title":"<code>post(resource)</code>","text":"<p>Allows to post a resource to the StreamPipes API.</p> PARAMETER DESCRIPTION <code>resource</code> <p>The resource to be posted.</p> <p> TYPE: <code>Resource</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig","title":"<code>MeasurementGetQueryConfig</code>","text":"<p> Bases: <code>BaseModel</code></p> <p>Config class describing the parameters of the <code>get()</code> method for measurements.</p> <p>This config class is used to validate the provided query parameters for the GET endpoint of measurements. Additionally, it takes care of the conversion to a proper HTTP query string. Thereby, parameter names are adapted to the naming of the StreamPipes API, for which Pydantic aliases are used.</p> ATTRIBUTE DESCRIPTION <code>columns</code> <p>A comma separated list of column names (e.g., <code>time,value</code>) If provided, the returned data only consists of the given columns. Please be aware that the column <code>time</code> as an index is always included.</p> <p> TYPE: <code>Optional[List[str]]</code> </p> <code>end_date</code> <p>Limits the queried data to only include data that is older than the specified time. In other words, any data that occurred after the end_date will not be included in the query results.</p> <p> TYPE: <code>Optional[datetime]</code> </p> <code>limit</code> <p>Amount of records returned at maximum (default: <code>1000</code>) This needs to be at least <code>1</code></p> <p> TYPE: <code>Optional[int]</code> </p> <code>offset</code> <p>Offset to be applied to returned data This needs to be at least <code>0</code></p> <p> TYPE: <code>Optional[int]</code> </p> <code>order</code> <p>Ordering of query results Allowed values: <code>ASC</code> and <code>DESC</code> (default: <code>ASC</code>)</p> <p> TYPE: <code>Optional[str]</code> </p> <code>page_no</code> <p>Page number used for paging operation This needs to be at least <code>1</code></p> <p> TYPE: <code>Optional[int]</code> </p> <code>start_date</code> <p>Limits the queried data to only include data that is newer than the specified time. In other words, any data that occurred before the start_date will not be included in the query results.</p> <p> TYPE: <code>Optional[datetime]</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.Config","title":"<code>Config</code>","text":"<p>Pydantic Config class</p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.build_query_string","title":"<code>build_query_string()</code>","text":"<p>Builds a HTTP query string for the config.</p> <p>This method returns an HTTP query string for the invoking config. It follows the following structure <code>?param1=value1&param2=value2...</code>. This query string is not an entire URL, instead it needs to appended to an API path.</p> RETURNS DESCRIPTION <code>query_param_string</code> <p>HTTP query params string (<code>?param1=value1&param2=value2...</code>)</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.StreamPipesQueryValidationError","title":"<code>StreamPipesQueryValidationError</code>","text":"<p> Bases: <code>Exception</code></p> <p>A custom exception to be raised when the validation of query parameter causes an error.</p>"},{"location":"reference/endpoint/api/data_stream/","title":"Data stream","text":"<p>Specific implementation of the StreamPipes API's data stream endpoints.</p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint","title":"<code>DataStreamEndpoint(parent_client)</code>","text":"<p> Bases: <code>APIEndpoint</code></p> <p>Implementation of the DataStream endpoint.</p> <p>Consequently, it allows querying metadata about available data streams (see <code>all()</code> method). The metadata is returned as an instance of <code>DataStreams</code>.</p> <p>Examples:</p> <pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nclient_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(username=\"test-user\", api_key=\"api-key\"),\n host_address=\"localhost\",\n port=8082,\n https_disabled=True\n)\nclient = StreamPipesClient.create(client_config=client_config)\n</code></pre> <p><pre><code># let's get all existing data streams in StreamPipes\ndata_streams = client.dataStreamApi.all()\nlen(data_streams)\n</code></pre> <pre><code>2\n</code></pre></p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint.all","title":"<code>all()</code>","text":"<p>Get all resources of this endpoint provided by the StreamPipes API.</p> <p>Results are provided as an instance of a <code>ResourceContainer</code> that allows to handle the returned resources in a comfortable and pythonic way.</p> RETURNS DESCRIPTION <code>container</code> <p>Container element that bundles the returned resources</p> <p> TYPE: <code>ResourceContainer</code> </p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint.build_url","title":"<code>build_url()</code>","text":"<p>Builds the endpoint's URL of the API path.</p> RETURNS DESCRIPTION <code>url</code> <p>The URL of the endpoint</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint.get","title":"<code>get(identifier, **kwargs)</code>","text":"<p>Queries the specified resource from the API endpoint.</p> PARAMETER DESCRIPTION <code>identifier</code> <p>The identifier of the resource to be queried.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The specified resource as an instance of the corresponding model class.</p> <p> TYPE: <code>Resource</code> </p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint.post","title":"<code>post(resource)</code>","text":"<p>Allows to post a resource to the StreamPipes API.</p> PARAMETER DESCRIPTION <code>resource</code> <p>The resource to be posted.</p> <p> TYPE: <code>Resource</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/endpoint/api/version/","title":"Version","text":"<p>Specific implementation of the StreamPipes API's version endpoint.</p>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint","title":"<code>VersionEndpoint(parent_client)</code>","text":"<p> Bases: <code>APIEndpoint</code></p> <p>Implementation of the Versions endpoint.</p> <p>This endpoint provides metadata about the StreamPipes version of the connected instance. It only allows to apply the <code>get()</code> method with an empty string as identifier.</p> PARAMETER DESCRIPTION <code>parent_client</code> <p>The instance of StreamPipesClient the endpoint is attached to.</p> <p> TYPE: <code>StreamPipesClient</code> </p> <p>Examples:</p> <pre><code>>>> from streampipes.client import StreamPipesClient\n>>> from streampipes.client.config import StreamPipesClientConfig\n>>> from streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</code></pre> <pre><code>>>> client_config = StreamPipesClientConfig(\n... credential_provider=StreamPipesApiKeyCredentials(username=\"test-user\", api_key=\"api-key\"),\n... host_address=\"localhost\",\n... port=8082,\n... https_disabled=True\n... )\n</code></pre> <pre><code>>>> client = StreamPipesClient.create(client_config=client_config)\n</code></pre> <pre><code>>>> client.versionApi.get(identifier=\"\").to_dict(use_source_names=False)\n{'backend_version': '0.92.0-SNAPSHOT'}\n</code></pre>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint.all","title":"<code>all()</code>","text":"<p>Usually, this method returns information about all resources provided by this endpoint. However, this endpoint does not support this kind of operation.</p> RAISES DESCRIPTION <code>NotImplementedError</code> <p>This endpoint does not return multiple entries, therefore this method is not available.</p>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint.build_url","title":"<code>build_url()</code>","text":"<p>Builds the endpoint's URL of the API path.</p> RETURNS DESCRIPTION <code>url</code> <p>The URL of the endpoint</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint.get","title":"<code>get(identifier, **kwargs)</code>","text":"<p>Queries the resource from the API endpoint.</p> <p>For this endpoint only one resource is available.</p> PARAMETER DESCRIPTION <code>identifier</code> <p>Not supported by this endpoint, is set to an empty string.</p> <p> TYPE: <code>str</code> </p> RAISES DESCRIPTION <code>ValueError</code> <p>Non-empty <code>identifier</code> is not supported by this endpoint. Please set <code>identifier</code> to an empty string or <code>None</code>.</p> RETURNS DESCRIPTION <code>versions</code> <p>The specified resource as an instance of the corresponding model class(Version). # noqa: 501</p> <p> TYPE: <code>Version</code> </p>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint.post","title":"<code>post(resource)</code>","text":"<p>Usually, this method allows to create via this endpoint. Since the data represented by this endpoint is immutable, it does not support this kind of operation.</p> RAISES DESCRIPTION <code>NotImplementedError</code> <p>This endpoint does not allow for POST requests, therefore this method is not available.</p>"},{"location":"reference/function_zoo/river_function/","title":"River function","text":""},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.OnlineML","title":"<code>OnlineML(client, stream_ids, model, prediction_type=RuntimeType.STRING.value, supervised=False, target_label=None, on_start=lambda self, context: None, on_event=lambda self, event, streamId: None, on_stop=lambda self: None)</code>","text":"<p>Wrapper class to enable an easy usage for Online Machine Learning models of the River library.</p> <p>It creates a StreamPipesFunction to train a model with the incoming events of a data stream and creates an output data stream that publishes the prediction to StreamPipes.</p> PARAMETER DESCRIPTION <code>client</code> <p>The client for the StreamPipes API.</p> <p> TYPE: <code>StreamPipesClient</code> </p> <code>stream_ids</code> <p>The ids of the data stream to train the model.</p> <p> TYPE: <code>List[str]</code> </p> <code>model</code> <p>The model to train. It meant to be a River model/pipeline, but can be every model with a 'learn_one' and 'predict_one' methode.</p> <p> TYPE: <code>Any</code> </p> <code>prediction_type</code> <p>The data type of the prediction. Is only needed when you continue to work with the prediction in StreamPipes.</p> <p> TYPE: <code>str</code> DEFAULT: <code>value</code> </p> <code>supervised</code> <p>Define if the model is supervised or unsupervised.</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> <code>target_label</code> <p>Define the name of the target attribute if the model is supervised.</p> <p> TYPE: <code>Optional[str]</code> DEFAULT: <code>None</code> </p> <code>on_start</code> <p>A function to be called when this StreamPipesFunction gets started.</p> <p> TYPE: <code>Callable[[Any, FunctionContext], None]</code> DEFAULT: <code>lambda self, context: None</code> </p> <code>on_event</code> <p>A function to be called when this StreamPipesFunction receives an event.</p> <p> TYPE: <code>Callable[[Any, Dict[str, Any], str], None]</code> DEFAULT: <code>lambda self, event, streamId: None</code> </p> <code>on_stop</code> <p>A function to be called when this StreamPipesFunction gets stopped.</p> <p> TYPE: <code>Callable[[Any], None]</code> DEFAULT: <code>lambda self: None</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.OnlineML.set_learning","title":"<code>set_learning(learning)</code>","text":"<p>Start or stop the training of the model.</p> PARAMETER DESCRIPTION <code>learning</code> <p>Defines if the training should be continued</p> <p> TYPE: <code>bool</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.OnlineML.start","title":"<code>start()</code>","text":"<p>Registers the function and starts the training.</p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.OnlineML.stop","title":"<code>stop()</code>","text":"<p>Stops the function and ends the training forever.</p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction","title":"<code>RiverFunction(function_definition, model, supervised, target_label, on_start, on_event, on_stop)</code>","text":"<p> Bases: <code>StreamPipesFunction</code></p> <p>Implementation of a StreamPipesFunction to enable an easy usage for Online Machine Learning models of the River library.</p> <p>The function trains the model with the incoming events and publishes the prediction to an output data stream.</p> PARAMETER DESCRIPTION <code>function_definition</code> <p>The function definition which contains the output stream.</p> <p> TYPE: <code>FunctionDefinition</code> </p> <code>model</code> <p>The model to train. It meant to be a River model/pipeline, but can be every model with a 'learn_one' and 'predict_one' method.</p> <p> TYPE: <code>Any</code> </p> <code>supervised</code> <p>Define if the model is supervised or unsupervised.</p> <p> TYPE: <code>bool</code> </p> <code>target_label</code> <p>Define the name of the target attribute if the model is supervised.</p> <p> TYPE: <code>Optional[str]</code> </p> <code>on_start</code> <p>A function to be called when this StreamPipesFunction gets started.</p> <p> TYPE: <code>Callable[[Any, FunctionContext], None]</code> </p> <code>on_event</code> <p>A function to be called when this StreamPipesFunction receives an event.</p> <p> TYPE: <code>Callable[[Any, Dict[str, Any], str], None]</code> </p> <code>on_stop</code> <p>A function to be called when this StreamPipesFunction gets stopped.</p> <p> TYPE: <code>Callable[[Any], None]</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.add_output","title":"<code>add_output(stream_id, event)</code>","text":"<p>Send an event via an output data stream to StreamPipes.</p> PARAMETER DESCRIPTION <code>stream_id</code> <p>The id of the output data stream</p> <p> TYPE: <code>str</code> </p> <code>event</code> <p>The event which should be sent</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.getFunctionId","title":"<code>getFunctionId()</code>","text":"<p>Returns the id of the function.</p> RETURNS DESCRIPTION <code>function_id</code> <p>Identification object of the StreamPipes function</p> <p> TYPE: <code>FunctionId</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.onEvent","title":"<code>onEvent(event, streamId)</code>","text":"<p>Trains the model with the incoming events and sends the prediction back to StreamPipes.</p> PARAMETER DESCRIPTION <code>event</code> <p>The incoming event that serves as input for the function</p> <p> TYPE: <code>Dict[str, Any]</code> </p> <code>streamId</code> <p>Identifier of the corresponding data stream</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.onServiceStarted","title":"<code>onServiceStarted(context)</code>","text":"<p>Executes the <code>on_start</code> method of the function.</p> PARAMETER DESCRIPTION <code>context</code> <p>The functions' context</p> <p> TYPE: <code>FunctionContext</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.onServiceStopped","title":"<code>onServiceStopped()</code>","text":"<p>Executes the <code>on_stop</code> function.</p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.requiredStreamIds","title":"<code>requiredStreamIds()</code>","text":"<p>Get the ids of the streams needed by the function.</p> RETURNS DESCRIPTION <code>stream_ids</code> <p>List of the stream ids</p> <p> TYPE: <code>List[str]</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.stop","title":"<code>stop()</code>","text":"<p>Stops the function and disconnects from the output streams.</p>"},{"location":"reference/functions/function_handler/","title":"Function handler","text":""},{"location":"reference/functions/function_handler/#streampipes.functions.function_handler.FunctionHandler","title":"<code>FunctionHandler(registration, client)</code>","text":"<p>The function handler manages the StreamPipes Functions.</p> <p>It controls the connection to the brokers, starts the functions, manages the broadcast of the live data and is able to stop the connection to the brokers and functions.</p> PARAMETER DESCRIPTION <code>registration</code> <p>The registration, that contains the StreamPipesFunctions.</p> <p> TYPE: <code>Registration</code> </p> <code>client</code> <p>The client to interact with the API.</p> <p> TYPE: <code>StreamPipesClient</code> </p> ATTRIBUTE DESCRIPTION <code>stream_contexts</code> <p>Map of all data stream contexts</p> <p> TYPE: <code>Dict[str, DataStreamContext]</code> </p> <code>brokers</code> <p>List of all registered brokers</p> <p> TYPE: <code>List[Broker]</code> </p>"},{"location":"reference/functions/function_handler/#streampipes.functions.function_handler.FunctionHandler.disconnect","title":"<code>disconnect()</code>","text":"<p>Disconnects from the brokers and stops all functions.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/function_handler/#streampipes.functions.function_handler.FunctionHandler.force_stop_functions","title":"<code>force_stop_functions()</code>","text":"<p>Stops the StreamPipesFunctions when the event loop was stopped without stopping the functions.</p> RETURNS DESCRIPTION <code>None</code> WARNS DESCRIPTION <code>UserWarning</code> <p>If there is a running event loop and the functions should be stopped by disconnecting from the broker.</p>"},{"location":"reference/functions/function_handler/#streampipes.functions.function_handler.FunctionHandler.initializeFunctions","title":"<code>initializeFunctions()</code>","text":"<p>Creates the context for every data stream and starts the event loop to manage the StreamPipes Functions.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/registration/","title":"Registration","text":""},{"location":"reference/functions/registration/#streampipes.functions.registration.Registration","title":"<code>Registration()</code>","text":"<p>Manages the existing StreamPipesFunctions and registers them.</p> ATTRIBUTE DESCRIPTION <code>functions</code> <p>List of all registered StreamPipesFunction</p> <p> TYPE: <code>List[StreamPipesFunction]</code> </p>"},{"location":"reference/functions/registration/#streampipes.functions.registration.Registration.getFunctions","title":"<code>getFunctions()</code>","text":"<p>Get all registered functions.</p> <p>This method exists to be consistent with the Java client.</p> RETURNS DESCRIPTION <code>functions</code> <p>List of all registered functions.</p> <p> TYPE: <code>List[StreamPipesFunction]</code> </p>"},{"location":"reference/functions/registration/#streampipes.functions.registration.Registration.register","title":"<code>register(streampipes_function)</code>","text":"<p>Registers a new function.</p> PARAMETER DESCRIPTION <code>streampipes_function</code> <p>The function to register.</p> <p> TYPE: <code>StreamPipesFunction</code> </p> RETURNS DESCRIPTION <code>self</code> <p>The updated Registration instance</p> <p> TYPE: <code>Registration</code> </p>"},{"location":"reference/functions/streampipes_function/","title":"Streampipes function","text":""},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction","title":"<code>StreamPipesFunction(function_definition=None)</code>","text":"<p> Bases: <code>ABC</code></p> <p>Abstract implementation of a StreamPipesFunction.</p> <p>A StreamPipesFunction allows users to get the data of a StreamPipes data streams easily. It makes it possible to work with the live data in python and enables to use the powerful data analytics libraries there.</p> PARAMETER DESCRIPTION <code>function_definition</code> <p>The definition of the function that contains metadata about the connected function</p> <p> TYPE: <code>Optional[FunctionDefinition]</code> DEFAULT: <code>None</code> </p> ATTRIBUTE DESCRIPTION <code>output_collectors</code> <p>List of all output collectors which are created based on the provided function definitions.</p> <p> TYPE: <code>Dict[str, OutputCollector]</code> </p>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.add_output","title":"<code>add_output(stream_id, event)</code>","text":"<p>Send an event via an output data stream to StreamPipes.</p> PARAMETER DESCRIPTION <code>stream_id</code> <p>The id of the output data stream</p> <p> TYPE: <code>str</code> </p> <code>event</code> <p>The event which should be sent</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.getFunctionId","title":"<code>getFunctionId()</code>","text":"<p>Returns the id of the function.</p> RETURNS DESCRIPTION <code>function_id</code> <p>Identification object of the StreamPipes function</p> <p> TYPE: <code>FunctionId</code> </p>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.onEvent","title":"<code>onEvent(event, streamId)</code> <code>abstractmethod</code>","text":"<p>Is called for every event of a data stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The received event from the data stream.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> <code>streamId</code> <p>The id of the data stream which the event belongs to.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.onServiceStarted","title":"<code>onServiceStarted(context)</code> <code>abstractmethod</code>","text":"<p>Is called when the function is started.</p> PARAMETER DESCRIPTION <code>context</code> <p>The context in which the function is started.</p> <p> TYPE: <code>FunctionContext</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.onServiceStopped","title":"<code>onServiceStopped()</code> <code>abstractmethod</code>","text":"<p>Is called when the function is stopped.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.requiredStreamIds","title":"<code>requiredStreamIds()</code>","text":"<p>Get the ids of the streams needed by the function.</p> RETURNS DESCRIPTION <code>stream_ids</code> <p>List of the stream ids</p> <p> TYPE: <code>List[str]</code> </p>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.stop","title":"<code>stop()</code>","text":"<p>Stops the function and disconnects from the output streams.</p>"},{"location":"reference/functions/broker/broker/","title":"Broker","text":""},{"location":"reference/functions/broker/broker/#streampipes.functions.broker.broker.Broker","title":"<code>Broker</code>","text":"<p> Bases: <code>ABC</code></p> <p>Abstract implementation of a broker for consumer and publisher.</p> <p>It contains the basic logic to connect to a data stream.</p>"},{"location":"reference/functions/broker/broker/#streampipes.functions.broker.broker.Broker.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/broker/#streampipes.functions.broker.broker.Broker.disconnect","title":"<code>disconnect()</code> <code>abstractmethod</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/broker_handler/","title":"Broker handler","text":""},{"location":"reference/functions/broker/broker_handler/#streampipes.functions.broker.broker_handler.SupportedBroker","title":"<code>SupportedBroker</code>","text":"<p> Bases: <code>Enum</code></p> <p>Enum for the supported brokers.</p>"},{"location":"reference/functions/broker/broker_handler/#streampipes.functions.broker.broker_handler.UnsupportedBrokerError","title":"<code>UnsupportedBrokerError(broker_name)</code>","text":"<p> Bases: <code>Exception</code></p> <p>Exception if a broker isn't implemented yet.</p>"},{"location":"reference/functions/broker/broker_handler/#streampipes.functions.broker.broker_handler.get_broker","title":"<code>get_broker(data_stream, is_publisher=False)</code>","text":"<p>Derive the broker for the given data stream.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Data stream instance from which the broker is inferred</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>broker</code> <p>The corresponding broker instance derived from data stream.</p> <p> TYPE: <code>Broker</code> </p> RAISES DESCRIPTION <code>UnsupportedBrokerError</code> <p>Is raised when the given data stream belongs to a broker that is currently not supported by StreamPipes Python.</p>"},{"location":"reference/functions/broker/broker_handler/#streampipes.functions.broker.broker_handler.get_broker_description","title":"<code>get_broker_description(data_stream)</code>","text":"<p>Derive the decription of the broker for the given data stream.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Data stream instance from which the broker is inferred</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>broker</code> <p>The corresponding broker description derived from data stream.</p> <p> TYPE: <code>SupportedBroker</code> </p> RAISES DESCRIPTION <code>UnsupportedBrokerError</code> <p>Is raised when the given data stream belongs to a broker that is currently not supported by StreamPipes Python.</p>"},{"location":"reference/functions/broker/consumer/","title":"Consumer","text":""},{"location":"reference/functions/broker/consumer/#streampipes.functions.broker.consumer.Consumer","title":"<code>Consumer</code>","text":"<p> Bases: <code>Broker</code></p> <p>Abstract implementation a consumer for a broker.</p> <p>A consumer allows to subscribe to a data stream.</p>"},{"location":"reference/functions/broker/consumer/#streampipes.functions.broker.consumer.Consumer.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes and creates a subscription.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/consumer/#streampipes.functions.broker.consumer.Consumer.disconnect","title":"<code>disconnect()</code> <code>abstractmethod</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/consumer/#streampipes.functions.broker.consumer.Consumer.get_message","title":"<code>get_message()</code> <code>abstractmethod</code>","text":"<p>Get the published messages of the subscription.</p> RETURNS DESCRIPTION <code>iterator</code> <p>An async iterator for the messages.</p> <p> TYPE: <code>AsyncIterator</code> </p>"},{"location":"reference/functions/broker/output_collector/","title":"Output collector","text":""},{"location":"reference/functions/broker/output_collector/#streampipes.functions.broker.output_collector.OutputCollector","title":"<code>OutputCollector(data_stream)</code>","text":"<p>Collector for output events. The events are published to an output data stream. Therefore, the output collector establishes a connection to the broker.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>The output data stream that will receive the events.</p> <p> TYPE: <code>DataStream</code> </p> ATTRIBUTE DESCRIPTION <code>publisher</code> <p>The publisher instance that sends the data to StreamPipes</p> <p> TYPE: <code>Publisher</code> </p>"},{"location":"reference/functions/broker/output_collector/#streampipes.functions.broker.output_collector.OutputCollector.collect","title":"<code>collect(event)</code>","text":"<p>Publishes an event to the output stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The event to be published.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/output_collector/#streampipes.functions.broker.output_collector.OutputCollector.disconnect","title":"<code>disconnect()</code>","text":"<p>Disconnects the broker of the output collector.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/publisher/","title":"Publisher","text":""},{"location":"reference/functions/broker/publisher/#streampipes.functions.broker.publisher.Publisher","title":"<code>Publisher</code>","text":"<p> Bases: <code>Broker</code></p> <p>Abstract implementation of a publisher for a broker.</p> <p>A publisher allows to publish events to a data stream.</p>"},{"location":"reference/functions/broker/publisher/#streampipes.functions.broker.publisher.Publisher.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/publisher/#streampipes.functions.broker.publisher.Publisher.disconnect","title":"<code>disconnect()</code> <code>abstractmethod</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/publisher/#streampipes.functions.broker.publisher.Publisher.publish_event","title":"<code>publish_event(event)</code> <code>abstractmethod</code> <code>async</code>","text":"<p>Publish an event to a connected data stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The event to be published.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_consumer/","title":"Kafka consumer","text":""},{"location":"reference/functions/broker/kafka/kafka_consumer/#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer","title":"<code>KafkaConsumer</code>","text":"<p> Bases: <code>Consumer</code></p> <p>Implementation of a consumer for Kafka</p>"},{"location":"reference/functions/broker/kafka/kafka_consumer/#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes and creates a subscription.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_consumer/#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.disconnect","title":"<code>disconnect()</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_consumer/#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.get_message","title":"<code>get_message()</code>","text":"<p>Get the published messages of the subscription.</p> RETURNS DESCRIPTION <code>iterator</code> <p>An async iterator for the messages.</p> <p> TYPE: <code>AsyncIterator</code> </p>"},{"location":"reference/functions/broker/kafka/kafka_message_fetcher/","title":"Kafka message fetcher","text":""},{"location":"reference/functions/broker/kafka/kafka_message_fetcher/#streampipes.functions.broker.kafka.kafka_message_fetcher.KafkaMessage","title":"<code>KafkaMessage(data)</code>","text":"<p>An internal representation of a Kafka message</p> PARAMETER DESCRIPTION <code>data</code> <p>The received Kafka message as byte array</p> <p> </p>"},{"location":"reference/functions/broker/kafka/kafka_message_fetcher/#streampipes.functions.broker.kafka.kafka_message_fetcher.KafkaMessageFetcher","title":"<code>KafkaMessageFetcher(consumer)</code>","text":"<p>Fetches the next message from Kafka</p> PARAMETER DESCRIPTION <code>consumer</code> <p>The Kafka consumer</p> <p> TYPE: <code>Consumer</code> </p>"},{"location":"reference/functions/broker/kafka/kafka_publisher/","title":"Kafka publisher","text":""},{"location":"reference/functions/broker/kafka/kafka_publisher/#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher","title":"<code>KafkaPublisher</code>","text":"<p> Bases: <code>Publisher</code></p> <p>Implementation of a publisher for Kafka</p>"},{"location":"reference/functions/broker/kafka/kafka_publisher/#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_publisher/#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.disconnect","title":"<code>disconnect()</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_publisher/#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.publish_event","title":"<code>publish_event(event)</code> <code>async</code>","text":"<p>Publish an event to a connected data stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The event to be published.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_consumer/","title":"Nats consumer","text":""},{"location":"reference/functions/broker/nats/nats_consumer/#streampipes.functions.broker.nats.nats_consumer.NatsConsumer","title":"<code>NatsConsumer</code>","text":"<p> Bases: <code>Consumer</code></p> <p>Implementation of a consumer for NATS</p>"},{"location":"reference/functions/broker/nats/nats_consumer/#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes and creates a subscription.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_consumer/#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.disconnect","title":"<code>disconnect()</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_consumer/#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.get_message","title":"<code>get_message()</code>","text":"<p>Get the published messages of the subscription.</p> RETURNS DESCRIPTION <code>message_iterator</code> <p>An async iterator for the messages.</p> <p> TYPE: <code>AsyncIterator</code> </p>"},{"location":"reference/functions/broker/nats/nats_publisher/","title":"Nats publisher","text":""},{"location":"reference/functions/broker/nats/nats_publisher/#streampipes.functions.broker.nats.nats_publisher.NatsPublisher","title":"<code>NatsPublisher</code>","text":"<p> Bases: <code>Publisher</code></p> <p>Implementation of a publisher for NATS</p>"},{"location":"reference/functions/broker/nats/nats_publisher/#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_publisher/#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.disconnect","title":"<code>disconnect()</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_publisher/#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.publish_event","title":"<code>publish_event(event)</code> <code>async</code>","text":"<p>Publish an event to a connected data stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The event to be published.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/utils/async_iter_handler/","title":"Async iter handler","text":""},{"location":"reference/functions/utils/async_iter_handler/#streampipes.functions.utils.async_iter_handler.AsyncIterHandler","title":"<code>AsyncIterHandler</code>","text":"<p>Handles asynchronous iterators to get every message after another in parallel.</p>"},{"location":"reference/functions/utils/async_iter_handler/#streampipes.functions.utils.async_iter_handler.AsyncIterHandler.anext","title":"<code>anext(stream_id, message)</code> <code>async</code> <code>staticmethod</code>","text":"<p>Gets the next message from an AsyncIterator.</p> PARAMETER DESCRIPTION <code>stream_id</code> <p>The id of the data stream which the message belongs to.</p> <p> TYPE: <code>str</code> </p> <code>message</code> <p>An asynchronous iterator that contains the messages.</p> <p> TYPE: <code>AsyncIterator</code> </p> RETURNS DESCRIPTION <code>result</code> <p>Tuple of the stream id und next message or <code>(\"stop\", None)</code> if no message is left.</p> <p> TYPE: <code>Tuple[str, Optional[Any]]</code> </p>"},{"location":"reference/functions/utils/async_iter_handler/#streampipes.functions.utils.async_iter_handler.AsyncIterHandler.combine_async_messages","title":"<code>combine_async_messages(messages)</code> <code>async</code> <code>staticmethod</code>","text":"<p>Continuously gets the next published message from multiple AsyncIterators in parallel.</p> PARAMETER DESCRIPTION <code>messages</code> <p>A dictionary with an asynchronous iterator for every stream id.</p> <p> TYPE: <code>Dict[str, AsyncIterator]</code> </p> YIELDS DESCRIPTION <code>message</code> <p>Description of the anonymous integer return value.</p> <p> TYPE:: <code>Tuple[str, Any]</code> </p>"},{"location":"reference/functions/utils/data_stream_context/","title":"Data stream context","text":""},{"location":"reference/functions/utils/data_stream_context/#streampipes.functions.utils.data_stream_context.DataStreamContext","title":"<code>DataStreamContext(functions, schema, broker)</code>","text":"<p>Container for the context of a data stream.</p> PARAMETER DESCRIPTION <code>functions</code> <p>StreamPipes Functions which require the data of this data stream.</p> <p> TYPE: <code>List[StreamPipesFunction]</code> </p> <code>schema</code> <p>The schema of this data stream.</p> <p> TYPE: <code>DataStream</code> </p> <code>broker</code> <p>The consumer to connect to this data stream.</p> <p> TYPE: <code>Consumer</code> </p>"},{"location":"reference/functions/utils/data_stream_context/#streampipes.functions.utils.data_stream_context.DataStreamContext.add_function","title":"<code>add_function(function)</code>","text":"<p>Adds a new StreamPipes Function.</p> PARAMETER DESCRIPTION <code>function</code> <p>StreamPipesFunction which requires this data stream.</p> <p> TYPE: <code>StreamPipesFunction</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/utils/data_stream_generator/","title":"Data stream generator","text":""},{"location":"reference/functions/utils/data_stream_generator/#streampipes.functions.utils.data_stream_generator.RuntimeType","title":"<code>RuntimeType</code>","text":"<p> Bases: <code>Enum</code></p> <p>Runtime type names for the attributes of a data stream.</p> ATTRIBUTE DESCRIPTION <code>STRING</code> <p> </p> <code>BOOLEAN</code> <p> </p> <code>DOUBLE</code> <p> </p> <code>FLOAT</code> <p> </p> <code>INTEGER</code> <p> </p> <code>LONG</code> <p> </p>"},{"location":"reference/functions/utils/data_stream_generator/#streampipes.functions.utils.data_stream_generator.create_data_stream","title":"<code>create_data_stream(name, attributes, stream_id=None, broker=SupportedBroker.NATS)</code>","text":"<p>Creates a data stream</p> PARAMETER DESCRIPTION <code>name</code> <p>Name of the data stream to be shown at the UI.</p> <p> TYPE: <code>str</code> </p> <code>attributes</code> <p>Name and types of the attributes.</p> <p> TYPE: <code>Dict[str, str]</code> </p> <code>stream_id</code> <p>The id of this data stream.</p> <p> TYPE: <code>str</code> DEFAULT: <code>None</code> </p> RETURNS DESCRIPTION <code>data_stream</code> <p>The created data stream</p> <p> TYPE: <code>DataStream</code> </p>"},{"location":"reference/functions/utils/function_context/","title":"Function context","text":""},{"location":"reference/functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext","title":"<code>FunctionContext(function_id, schema, client, streams)</code>","text":"<p>Container for the context of a StreamPipesFunction.</p> PARAMETER DESCRIPTION <code>function_id</code> <p>The id of this function.</p> <p> TYPE: <code>str</code> </p> <code>schema</code> <p>A dictionary which contains the schema of a data stream for each stream id.</p> <p> TYPE: <code>Dict[str, DataStream]</code> </p> <code>client</code> <p>The client to interact with the API.</p> <p> TYPE: <code>StreamPipesClient</code> </p> <code>streams</code> <p>The ids of the streams needed by this function.</p> <p> TYPE: <code>List[str]</code> </p>"},{"location":"reference/functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext.add_data_stream_schema","title":"<code>add_data_stream_schema(stream_id, data_stream)</code>","text":"<p>Adds a new data stream for a new stream id.</p> PARAMETER DESCRIPTION <code>stream_id</code> <p>The id of the data stream.</p> <p> TYPE: <code>str</code> </p> <code>data_stream</code> <p>The schema of the data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/model/common/","title":"Common","text":"<p>Classes of the StreamPipes data model that are commonly shared.</p>"},{"location":"reference/model/common/#streampipes.model.common.ApplicationLink","title":"<code>ApplicationLink</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>ApplicationLink</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.ApplicationLink.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.BaseElement","title":"<code>BaseElement</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Structure of a basic element in the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.BaseElement.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.BasicModel","title":"<code>BasicModel</code>","text":"<p> Bases: <code>BaseModel</code></p> <p>Basic model class used for the whole Python StreamPipes data model.</p>"},{"location":"reference/model/common/#streampipes.model.common.BasicModel.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.EventGrounding","title":"<code>EventGrounding</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>EventGrounding</code> in compliance to with StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.EventGrounding.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.EventProperty","title":"<code>EventProperty</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>EventProperty</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.EventProperty.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.EventSchema","title":"<code>EventSchema</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>EventSchema</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.EventSchema.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.MeasurementCapability","title":"<code>MeasurementCapability</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>MeasurementCapability</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.MeasurementCapability.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.MeasurementObject","title":"<code>MeasurementObject</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>MeasurementObject</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.MeasurementObject.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.TopicDefinition","title":"<code>TopicDefinition</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>TopicDefinition</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.TopicDefinition.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.TransportFormat","title":"<code>TransportFormat</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>TransportFormat</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.TransportFormat.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.TransportProtocol","title":"<code>TransportProtocol</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>TransportProtocol</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.TransportProtocol.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.ValueSpecification","title":"<code>ValueSpecification</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>ValueSpecification</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.ValueSpecification.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.random_letters","title":"<code>random_letters(n)</code>","text":"<p>Generates a string consisting of random letters.</p> PARAMETER DESCRIPTION <code>n</code> <p>number of letters</p> <p> TYPE: <code>int</code> </p> RETURNS DESCRIPTION <code>rand_str</code> <p>String consisting of <code>n</code> random letters</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/model/container/data_lake_measures/","title":"Data lake measures","text":"<p>Implementation of a resource container for the data lake measures endpoint.</p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures","title":"<code>DataLakeMeasures(resources)</code>","text":"<p> Bases: <code>ResourceContainer</code></p> <p>Implementation of the resource container for the data lake measures endpoint.</p> <p>This resource container is a collection of data lake measures returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried <code>DataLakeMeasure</code>. Furthermore, the resource container makes them accessible in a pythonic manner.</p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string returned from the StreamPipes API.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>container</code> <p>Instance of the container derived from the JSON definition</p> <p> TYPE: <code>ResourceContainer</code> </p> RAISES DESCRIPTION <code>StreamPipesDataModelError</code> <p>If a resource cannot be mapped to the corresponding Python data model.</p> <code>StreamPipesResourceContainerJSONError</code> <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_dicts","title":"<code>to_dicts(use_source_names=False)</code>","text":"<p>Returns the contained resources as list of dictionaries.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Determines whether the field names are named in Python style (=<code>False</code>) or as originally named by StreamPipes (=<code>True</code>).</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> RETURNS DESCRIPTION <code>dictionary_list</code> <p>List of resources in dictionary representation. If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p> <p> TYPE: <code>List[Dict[str, Any]]</code> </p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_json","title":"<code>to_json()</code>","text":"<p>Returns the resource container in the StreamPipes JSON representation.</p> RETURNS DESCRIPTION <code> json_string: str</code> <p>JSON representation of the resource container where key names are equal to keys used in the StreamPipes backend</p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the resource container in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>resource_container_df</code> <p>Representation of the resource container as pandas DataFrame</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/container/data_streams/","title":"Data streams","text":"<p>Implementation of a resource container for the data streams endpoint.</p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams","title":"<code>DataStreams(resources)</code>","text":"<p> Bases: <code>ResourceContainer</code></p> <p>Implementation of the resource container for the data stream endpoint.</p> <p>This resource container is a collection of data streams returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried <code>DataStream</code>. Furthermore, the resource container makes them accessible in a pythonic manner.</p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string returned from the StreamPipes API.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>container</code> <p>Instance of the container derived from the JSON definition</p> <p> TYPE: <code>ResourceContainer</code> </p> RAISES DESCRIPTION <code>StreamPipesDataModelError</code> <p>If a resource cannot be mapped to the corresponding Python data model.</p> <code>StreamPipesResourceContainerJSONError</code> <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams.to_dicts","title":"<code>to_dicts(use_source_names=False)</code>","text":"<p>Returns the contained resources as list of dictionaries.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Determines whether the field names are named in Python style (=<code>False</code>) or as originally named by StreamPipes (=<code>True</code>).</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> RETURNS DESCRIPTION <code>dictionary_list</code> <p>List of resources in dictionary representation. If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p> <p> TYPE: <code>List[Dict[str, Any]]</code> </p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams.to_json","title":"<code>to_json()</code>","text":"<p>Returns the resource container in the StreamPipes JSON representation.</p> RETURNS DESCRIPTION <code> json_string: str</code> <p>JSON representation of the resource container where key names are equal to keys used in the StreamPipes backend</p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the resource container in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>resource_container_df</code> <p>Representation of the resource container as pandas DataFrame</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/container/resource_container/","title":"Resource container","text":"<p>General and abstract implementation for a resource container.</p> <p>A resource container is a collection of resources returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried resources. Furthermore, the resource container makes them accessible in a pythonic manner.</p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer","title":"<code>ResourceContainer(resources)</code>","text":"<p> Bases: <code>ABC</code></p> <p>General and abstract implementation for a resource container.</p> <p>A resource container is a collection of resources returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried resources. Furthermore, the resource container makes them accessible in a pythonic manner.</p> PARAMETER DESCRIPTION <code>resources</code> <p>A list of resources to be contained in the <code>ResourceContainer</code>.</p> <p> TYPE: <code>List[Resource]</code> </p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string returned from the StreamPipes API.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>container</code> <p>Instance of the container derived from the JSON definition</p> <p> TYPE: <code>ResourceContainer</code> </p> RAISES DESCRIPTION <code>StreamPipesDataModelError</code> <p>If a resource cannot be mapped to the corresponding Python data model.</p> <code>StreamPipesResourceContainerJSONError</code> <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer.to_dicts","title":"<code>to_dicts(use_source_names=False)</code>","text":"<p>Returns the contained resources as list of dictionaries.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Determines whether the field names are named in Python style (=<code>False</code>) or as originally named by StreamPipes (=<code>True</code>).</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> RETURNS DESCRIPTION <code>dictionary_list</code> <p>List of resources in dictionary representation. If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p> <p> TYPE: <code>List[Dict[str, Any]]</code> </p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer.to_json","title":"<code>to_json()</code>","text":"<p>Returns the resource container in the StreamPipes JSON representation.</p> RETURNS DESCRIPTION <code> json_string: str</code> <p>JSON representation of the resource container where key names are equal to keys used in the StreamPipes backend</p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the resource container in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>resource_container_df</code> <p>Representation of the resource container as pandas DataFrame</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.StreamPipesDataModelError","title":"<code>StreamPipesDataModelError(validation_error)</code>","text":"<p> Bases: <code>Exception</code></p> <p>A custom exception to be raised when a validation error occurs during the parsing of StreamPipes API responses.</p> PARAMETER DESCRIPTION <code>validation_error</code> <p>The validation error thrown by Pydantic during parsing.</p> <p> TYPE: <code>ValidationError</code> </p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError","title":"<code>StreamPipesResourceContainerJSONError(container_name, json_string)</code>","text":"<p> Bases: <code>Exception</code></p> <p>A custom exception to be raised when the returned JSON string does not suit to the structure of resource container.</p> PARAMETER DESCRIPTION <code>container_name</code> <p>The class name of the resource container where the invalid data structure was detected.</p> <p> TYPE: <code>str</code> </p> <code>json_string</code> <p>The JSON string that has been tried to parse.</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/model/container/versions/","title":"Versions","text":"<p>Implementation of a resource container for the versions endpoint.</p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions","title":"<code>Versions(resources)</code>","text":"<p> Bases: <code>ResourceContainer</code></p> <p>Implementation of the resource container for the versions endpoint.</p> <p>This resource container is a collection of versions returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried <code>Version</code>. Furthermore, the resource container makes them accessible in a pythonic manner.</p> PARAMETER DESCRIPTION <code>resources</code> <p>A list of resources (Version) to be contained in the <code>ResourceContainer</code>.</p> <p> TYPE: <code>List[Resource]</code> </p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string returned from the StreamPipes API.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>container</code> <p>Instance of the container derived from the JSON definition</p> <p> TYPE: <code>ResourceContainer</code> </p> RAISES DESCRIPTION <code>StreamPipesDataModelError</code> <p>If a resource cannot be mapped to the corresponding Python data model.</p> <code>StreamPipesResourceContainerJSONError</code> <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions.to_dicts","title":"<code>to_dicts(use_source_names=False)</code>","text":"<p>Returns the contained resources as list of dictionaries.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Determines whether the field names are named in Python style (=<code>False</code>) or as originally named by StreamPipes (=<code>True</code>).</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> RETURNS DESCRIPTION <code>dictionary_list</code> <p>List of resources in dictionary representation. If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p> <p> TYPE: <code>List[Dict[str, Any]]</code> </p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions.to_json","title":"<code>to_json()</code>","text":"<p>Returns the resource container in the StreamPipes JSON representation.</p> RETURNS DESCRIPTION <code> json_string: str</code> <p>JSON representation of the resource container where key names are equal to keys used in the StreamPipes backend</p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the resource container in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>resource_container_df</code> <p>Representation of the resource container as pandas DataFrame</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/resource/data_lake_measure/","title":"Data lake measure","text":""},{"location":"reference/model/resource/data_lake_measure/#streampipes.model.resource.data_lake_measure.DataLakeMeasure","title":"<code>DataLakeMeasure</code>","text":"<p> Bases: <code>Resource</code></p> <p>Implementation of a resource for data lake measures.</p> <p>This resource defines the data model used by resource container (<code>model.container.DataLakeMeasures</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response, and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>"},{"location":"reference/model/resource/data_lake_measure/#streampipes.model.resource.data_lake_measure.DataLakeMeasure.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/data_lake_measure/#streampipes.model.resource.data_lake_measure.DataLakeMeasure.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a data lake measure to be used when creating a pandas Dataframe.</p> <p>It excludes the following fields: <code>element_id</code>, <code>event_schema</code>, <code>schema_version</code>. Instead of the whole event schema the number of event properties contained is returned with the column name <code>num_event_properties</code>.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Pandas representation of the resource as a dictionary, which is then used by the respource container to create a data frame from a collection of resources.</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_lake_measure/#streampipes.model.resource.data_lake_measure.DataLakeMeasure.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_series/","title":"Data series","text":""},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries","title":"<code>DataSeries</code>","text":"<p> Bases: <code>Resource</code></p> <p>Implementation of a resource for data series. This resource defines the data model used by its resource container(<code>model.container.DataLakeMeasures</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p> Notes <pre><code>This class will only exist temporarily in it its current appearance since\nthere are some inconsistencies in the StreamPipes API.\n</code></pre>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a data lake series to be used when creating a pandas Dataframe.</p> <p>It contains only the \"header rows\" (the column names) and \"rows\" that contain the actual data.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Dictionary with the keys <code>headers</code> and <code>rows</code></p> <p> TYPE: <code>dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates an instance of <code>DataSeries</code> from a given JSON string.</p> <p>This method is used by the resource container to parse the JSON response of the StreamPipes API. Currently, it only supports data lake series that consist of exactly one series of data.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string the data lake series should be created on.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>DataSeries</code> <p>Instance of <code>DataSeries</code> that is created based on the given JSON string.</p> RAISES DESCRIPTION <code>StreamPipesUnsupportedDataLakeSeries</code> <p>If the data lake series returned by the StreamPipes API cannot be parsed with the current version of the Python client.</p>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the data lake series in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>pd</code> <p>The data lake series in form of a pandas dataframe</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/resource/data_stream/","title":"Data stream","text":""},{"location":"reference/model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream","title":"<code>DataStream(**kwargs)</code>","text":"<p> Bases: <code>Resource</code></p> <p>Implementation of a resource for data streams.</p> <p>This resource defines the data model used by resource container (<code>model.container.DataStreams</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>"},{"location":"reference/model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a data stream to be used when creating a pandas Dataframe.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Pandas representation of the resource as a dictionary, which is then used by the respource container to create a data frame from a collection of resources.</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/exceptions/","title":"Exceptions","text":""},{"location":"reference/model/resource/exceptions/#streampipes.model.resource.exceptions.StreamPipesUnsupportedDataSeries","title":"<code>StreamPipesUnsupportedDataSeries(reason=None)</code>","text":"<p> Bases: <code>Exception</code></p> <p>Exception to be raised when the returned data lake series cannot be parsed with the current implementation of the resource.</p>"},{"location":"reference/model/resource/function_definition/","title":"Function definition","text":""},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition","title":"<code>FunctionDefinition</code>","text":"<p> Bases: <code>Resource</code></p> <p>Configuration for a StreamPipes Function.</p> <p>This class maps to the <code>FunctionDefinition</code> class in the StreamPipes model. It contains all metadata that are required to register a function at the StreamPipes backend.</p> ATTRIBUTE DESCRIPTION <code>consumed_streams</code> <p>List of data streams the function is consuming from</p> <p> TYPE: <code>List[str]</code> </p> <code>function_id</code> <p>identifier object of a StreamPipes function</p> <p> TYPE: <code>FunctionId</code> </p> <code>output_data_streams</code> <p>Map off all output data streams added to the function definition</p> <p> TYPE: <code>Dict[str, DataStream]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.add_output_data_stream","title":"<code>add_output_data_stream(data_stream)</code>","text":"<p>Adds an output data stream to the function which makes it possible to write data back to StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>The schema of the output data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>self</code> <p>Instance of the function definition that is extended by the provided <code>DataStream</code></p> <p> TYPE: <code>FunctionDefinition</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a function definition to be used when creating a pandas Dataframe.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Pandas representation of the resource as a dictionary, which is then used by the respource container to create a data frame from a collection of resources.</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.get_output_data_streams","title":"<code>get_output_data_streams()</code>","text":"<p>Get the output data streams of the function.</p> RETURNS DESCRIPTION <code>output_streams</code> <p>Dictionary with every known stream id and the related output stream.</p> <p> TYPE: <code>Dict[str, DataStream]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.get_output_stream_ids","title":"<code>get_output_stream_ids()</code>","text":"<p>Get the stream ids of the output data streams.</p> RETURNS DESCRIPTION <code>output_stream_ids</code> <p>List of all stream ids</p> <p> TYPE: <code>List[str]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionId","title":"<code>FunctionId</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Identification object for a StreamPipes function.</p> <p>Maps to the <code>FunctionId</code> class defined in the StreamPipes model.</p> ATTRIBUTE DESCRIPTION <code>id</code> <p>unique identifier of the function instance</p> <p> TYPE: <code>str</code> </p> <code>version</code> <p>version of the corresponding function</p> <p> TYPE: <code>int</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionId.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/query_result/","title":"Query result","text":""},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult","title":"<code>QueryResult</code>","text":"<p> Bases: <code>Resource</code></p> <p>Implementation of a resource for query result. This resource defines the data model used by its resource container(<code>model.container.DataLakeMeasures</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>"},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a data lake series to be used when creating a pandas Dataframe.</p> <p>It contains only the \"header rows\" (the column names) and \"rows\" that contain the actual data.</p> RETURNS DESCRIPTION <code>dict</code> <p>Dictionary with the keys <code>headers</code> and <code>rows</code></p> RAISES DESCRIPTION <code>StreamPipesUnsupportedDataLakeSeries</code> <p>If the query result returned by the StreamPipes API cannot be converted to the pandas representation</p>"},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the data lake series in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>df</code> <p>Pandas df containing the query result</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/resource/resource/","title":"Resource","text":"<p>General and abstract implementation for a resource.</p> <p>A resource defines the data model that is used by a resource container (<code>model.container.resourceContainer</code>).</p>"},{"location":"reference/model/resource/resource/#streampipes.model.resource.resource.Resource","title":"<code>Resource</code>","text":"<p> Bases: <code>ABC</code>, <code>BasicModel</code></p> <p>General and abstract implementation for a resource.</p> <p>A resource defines the data model used by a resource container (<code>model.container.resourceContainer</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>"},{"location":"reference/model/resource/resource/#streampipes.model.resource.resource.Resource.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/resource/#streampipes.model.resource.resource.Resource.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code> <code>abstractmethod</code>","text":"<p>Returns a dictionary representation to be used when creating a pandas Dataframe.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Pandas representation of the resource as a dictionary, which is then used by the respource container to create a data frame from a collection of resources.</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/resource/#streampipes.model.resource.resource.Resource.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/version/","title":"Version","text":""},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version","title":"<code>Version</code>","text":"<p> Bases: <code>Resource</code></p> <p>Metadata about the version of the connected StreamPipes server.</p> ATTRIBUTE DESCRIPTION <code>backend_version</code> <p>version of the StreamPipes backend the client is connected to</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of the version metadata to be used when creating a pandas Dataframe.</p>"},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version.validate_backend_version","title":"<code>validate_backend_version(backend_version)</code>","text":"<p>Validates the backend version of the StreamPipes. Sets 'development' if none is returned since this the behavior of StreamPipes backend running in development mode.</p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/","title":"Introduction to StreamPipes Python","text":"In\u00a0[\u00a0]: Copied! <pre>%pip install streampipes\n</pre> %pip install streampipes <p>If you want to have the current development state you can also execute:</p> In\u00a0[\u00a0]: Copied! <pre>%pip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python\n</pre> %pip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python <p>The corresponding documentation can be found here. </p> In\u00a0[\u00a0]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials In\u00a0[\u00a0]: Copied! <pre>config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(\n username=\"test@streampipes.apache.org\",\n api_key=\"API-KEY\",\n ),\n host_address=\"localhost\",\n https_disabled=True,\n port=80\n)\n</pre> config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials( username=\"test@streampipes.apache.org\", api_key=\"API-KEY\", ), host_address=\"localhost\", https_disabled=True, port=80 ) <p>Please be aware that connecting to StreamPipes via a <code>https</code> connection is currently not supported by the Python client.</p> <p>Providing secrets like the <code>api_key</code> as plaintext in the source code is an anti-pattern. This is why the StreamPipes client also supports passing the required secrets as environment variables. To do so, you must initialize the credential provider like the following:</p> In\u00a0[\u00a0]: Copied! <pre>StreamPipesApiKeyCredentials()\n</pre> StreamPipesApiKeyCredentials() <p>To ensure that the above code works, you must set the environment variables as expected. This can be done as follows:</p> In\u00a0[\u00a0]: Copied! <pre>import os\nos.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\"\nos.environ[\"SP_API_KEY\"] = \"XXX\"\n</pre> import os os.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\" os.environ[\"SP_API_KEY\"] = \"XXX\" <p>Having the <code>config</code> ready, we can now initialize the actual client.</p> In\u00a0[\u00a0]: Copied! <pre>client = StreamPipesClient(client_config=config)\n</pre> client = StreamPipesClient(client_config=config) <p>That's already it. You can check if everything works out by using the following command:</p> In\u00a0[6]: Copied! <pre>client.describe()\n</pre> client.describe() <pre>2023-02-24 17:05:49,398 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n2023-02-24 17:05:49,457 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n\nHi there!\nYou are connected to a StreamPipes instance running at http://localhost:80.\nThe following StreamPipes resources are available with this client:\n1x DataLakeMeasures\n1x DataStreams\n</pre> <p>This prints you a short textual description of the connected StreamPipes instance to the console.</p> <p>The created <code>client</code> instance serves as the central point of interaction with StreamPipes. You can invoke a variety of commands directly on this object.</p> <p>Are you curious now how you actually can get data out of StreamPipes and make use of it with Python? Then check out the next tutorial on extracting Data from the StreamPipes data lake.</p> <p>Thanks for reading this introductory tutorial. We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/#Introduction-to-StreamPipes-Python","title":"Introduction to StreamPipes Python\u00b6","text":""},{"location":"tutorials/1-introduction-to-streampipes-python-client/#Why-there-is-an-extra-Python-library-for-StreamPipes?","title":"Why there is an extra Python library for StreamPipes?\u00b6","text":"<p>Apache StreamPipes aims to enable non-technical users to connect and analyze IoT data streams. To achieve this, it provides an easy-to-use and convenient user interface that allows one to connect to an IoT data source and create some visual graphs within a few minutes. While this is the primary use case for Apache StreamPipes, it also offers significant value to those interested in data analysis or data science with IoT data, without the need to handle the complexities of extracting data from devices in a suitable format. In this scenario, StreamPipes helps you connect to your data source and extract the data for you. You then can make the data available outside StreamPipes by writing it into an external source, such as a database, Kafka, etc. While this requires another component, you can also extract your data directly from StreamPipes programmatically using the StreamPipes API. For convenience, we also provide you with a StreamPipes client both available for Java and Python. Specifically with StreamPipes Python, we want to address the amazing data analytics and data science community in Python and benefit from the great universe of Python libraries out there.</p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/#How-to-install-StreamPipes-Python?","title":"How to install StreamPipes Python?\u00b6","text":"<p>Simply use the following <code>pip</code> command:</p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/#How-to-prepare-the-tutorials","title":"How to prepare the tutorials\u00b6","text":"<p>In case you want to reproduce the first two tutorials exactly on your end, you need to create a simple pipeline in StreamPipes like demonstrated below.</p> <p></p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/#How-to-configure-the-Python-client","title":"How to configure the Python client\u00b6","text":"<p>In order to access the resources available in StreamPipes, one must be able to authenticate against the backend. For this purpose, the client so far only supports the authentication via an API token that can be generated via the StreamPipes UI, as you can see below.</p> <p></p> <p>Having generated the API token, one can directly start initializing a client instance as follows:</p>"},{"location":"tutorials/2-extracting-data-from-the-streampipes-data-lake/","title":"Extracting Data from the StreamPipes data lake","text":"In\u00a0[1]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials In\u00a0[\u00a0]: Copied! <pre># if you want all necessary dependencies required for this tutorial to be installed,\n# you can simply execute the following command\n%pip install matplotlib streampipes\n</pre> # if you want all necessary dependencies required for this tutorial to be installed, # you can simply execute the following command %pip install matplotlib streampipes In\u00a0[2]: Copied! <pre>import os\nos.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\"\nos.environ[\"SP_API_KEY\"] = \"XXX\"\n</pre> import os os.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\" os.environ[\"SP_API_KEY\"] = \"XXX\" In\u00a0[3]: Copied! <pre>config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(),\n host_address=\"localhost\",\n https_disabled=True,\n port=80\n)\n</pre> config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials(), host_address=\"localhost\", https_disabled=True, port=80 ) In\u00a0[4]: Copied! <pre>client = StreamPipesClient(client_config=config)\n</pre> client = StreamPipesClient(client_config=config) <pre>2023-02-24 17:34:25,860 - streampipes.client.client - [INFO] - [client.py:128] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n</pre> <p>As a first step, we want to get an overview about all data available in the data lake. The data is stored as so-called <code>measures</code>, which refer to a data stream stored in the data lake. For his purpose we use the <code>all()</code> method of the <code>dataLakeMeasure</code> endpoint.</p> In\u00a0[5]: Copied! <pre>data_lake_measures = client.dataLakeMeasureApi.all()\n</pre> data_lake_measures = client.dataLakeMeasureApi.all() <pre>2023-02-24 17:34:25,929 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> <p>So let's see how many measures are available:</p> In\u00a0[6]: Copied! <pre>len(data_lake_measures)\n</pre> len(data_lake_measures) Out[6]: <pre>2</pre> <p>All resources of the StreamPipes Python client support the standard Python expressions. If not, please let us know.</p> In\u00a0[7]: Copied! <pre>data_lake_measures[-1]\n</pre> data_lake_measures[-1] Out[7]: <pre>DataLakeMeasure(element_id='3cb6b5e6f107452483d1fd2ccf4bf9f9', measure_name='test', timestamp_field='s0::timestamp', event_schema=EventSchema(event_properties=[EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:EiFnkL', label='Density', description='Denotes the current density of the fluid', runtime_name='density', required=False, domain_properties=['http://schema.org/Number'], property_scope='MEASUREMENT_PROPERTY', index=5, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#float', measurement_unit=None, value_specification=None), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:ghSkQI', label='Mass Flow', description='Denotes the current mass flow in the sensor', runtime_name='mass_flow', required=False, domain_properties=['http://schema.org/Number'], property_scope='MEASUREMENT_PROPERTY', index=2, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#float', measurement_unit=None, value_specification=None), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:cQAUry', label='Sensor ID', description='The ID of the sensor', runtime_name='sensorId', required=False, domain_properties=['https://streampipes.org/vocabulary/examples/watertank/v1/hasSensorId'], property_scope='DIMENSION_PROPERTY', index=1, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#string', measurement_unit=None, value_specification=None), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:pbPMyL', label='Sensor Fault Flags', description='Any fault flags of the sensors', runtime_name='sensor_fault_flags', required=False, domain_properties=['http://schema.org/Boolean'], property_scope='MEASUREMENT_PROPERTY', index=6, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#boolean', measurement_unit=None, value_specification=None), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:Qmayhw', label='Temperature', description='Denotes the current temperature in degrees celsius', runtime_name='temperature', required=False, domain_properties=['http://schema.org/Number'], property_scope='MEASUREMENT_PROPERTY', index=4, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#float', measurement_unit='http://qudt.org/vocab/unit#DegreeCelsius', value_specification=ValueSpecification(class_name='org.apache.streampipes.model.schema.QuantitativeValue', element_id=None, min_value=0, max_value=100, step=0.1)), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:YQYhjd', label='Volume Flow', description='Denotes the current volume flow', runtime_name='volume_flow', required=False, domain_properties=['http://schema.org/Number'], property_scope='MEASUREMENT_PROPERTY', index=3, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#float', measurement_unit=None, value_specification=None)]), pipeline_id=None, pipeline_name=None, pipeline_is_running=False, schema_version='1.1')</pre> <p>To get a more comprehensive overview, you can take a look at the <code>pandas</code> representation:</p> In\u00a0[8]: Copied! <pre>display(data_lake_measures.to_pandas())\n</pre> display(data_lake_measures.to_pandas()) measure_name timestamp_field pipeline_id pipeline_name pipeline_is_running num_event_properties 0 flow-rate s0::timestamp None None False 6 1 test s0::timestamp None None False 6 <p>So far, we have only retrieved metadata about the available data lake measure. In the following, we will access the actual data of the measure <code>flow-rate</code>.</p> <p>For this purpose, we will use the <code>get()</code> method of the <code>dataLakeMeasure</code> endpoint.</p> In\u00a0[9]: Copied! <pre>flow_rate_measure = client.dataLakeMeasureApi.get(identifier=\"flow-rate\")\n</pre> flow_rate_measure = client.dataLakeMeasureApi.get(identifier=\"flow-rate\") <pre>2023-02-24 17:34:26,020 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> <p>For further processing, the easiest way is to turn the data measure into a <code>pandas DataFrame</code>.</p> In\u00a0[10]: Copied! <pre>flow_rate_pd = flow_rate_measure.to_pandas()\n</pre> flow_rate_pd = flow_rate_measure.to_pandas() <p>Let's see how many data points we got...</p> In\u00a0[11]: Copied! <pre>len(flow_rate_pd)\n</pre> len(flow_rate_pd) Out[11]: <pre>1000</pre> <p>... and get a first overview</p> In\u00a0[12]: Copied! <pre>flow_rate_pd.describe()\n</pre> flow_rate_pd.describe() Out[12]: density mass_flow temperature volume_flow count 1000.000000 1000.000000 1000.000000 1000.000000 mean 45.560337 5.457014 45.480231 5.659558 std 3.201544 3.184959 3.132878 3.122437 min 40.007698 0.004867 40.000992 0.039422 25% 42.819497 2.654101 42.754623 3.021625 50% 45.679264 5.382355 45.435944 5.572553 75% 48.206881 8.183144 48.248473 8.338209 max 50.998310 10.986015 50.964909 10.998676 <p>As a final step, we want to create a plot of both attributes.</p> In\u00a0[13]: Copied! <pre>import matplotlib.pyplot as plt\nflow_rate_pd.plot(y=[\"mass_flow\", \"temperature\"])\nplt.show()\n</pre> import matplotlib.pyplot as plt flow_rate_pd.plot(y=[\"mass_flow\", \"temperature\"]) plt.show() <p>For data lake measurements, the <code>get()</code> method is even more powerful than simply returning all the data for a given data lake measurement. We will look at a selection of these below. The full list of supported parameters can be found in the docs. Let's start by referring to the graph we created above, where we use only two columns of our data lake measurement. If we already know this, we can directly restrict the queried data to a subset of columns by using the <code>columns</code> parameter. <code>columns</code> takes a list of column names as a comma-separated string:</p> In\u00a0[14]: Copied! <pre>flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", columns=\"mass_flow,temperature\").to_pandas()\nflow_rate_pd\n</pre> flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", columns=\"mass_flow,temperature\").to_pandas() flow_rate_pd <pre>2023-02-24 17:34:26,492 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> Out[14]: timestamp mass_flow temperature 0 2023-02-24T16:19:41.472Z 3.309556 44.448483 1 2023-02-24T16:19:41.482Z 5.608580 40.322033 2 2023-02-24T16:19:41.493Z 7.692881 49.239639 3 2023-02-24T16:19:41.503Z 3.632898 49.933754 4 2023-02-24T16:19:41.513Z 0.711260 50.106617 ... ... ... ... 995 2023-02-24T16:19:52.927Z 1.740114 46.558231 996 2023-02-24T16:19:52.94Z 7.211723 48.048622 997 2023-02-24T16:19:52.952Z 7.770180 48.188026 998 2023-02-24T16:19:52.965Z 4.458602 48.280899 999 2023-02-24T16:19:52.977Z 2.592060 47.505951 <p>1000 rows \u00d7 3 columns</p> <p>By default, the client returns only the first one thousand records of a Data Lake measurement. This can be changed by passing a concrete value for the <code>limit</code> parameter:</p> In\u00a0[15]: Copied! <pre>flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", limit=10000).to_pandas()\nlen(flow_rate_pd)\n</pre> flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", limit=10000).to_pandas() len(flow_rate_pd) <pre>2023-02-24 17:34:26,736 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> Out[15]: <pre>9528</pre> <p>If you want your data to be selected by time of occurrence rather than quantity, you can specify your time window by passing the <code>start_date</code> and <code>end_date</code> parameters:</p> In\u00a0[16]: Copied! <pre>from datetime import datetime\nflow_rate_pd = client.dataLakeMeasureApi.get(\n identifier=\"flow-rate\",\n start_date=datetime(year=2023, month=2, day=24, hour=17, minute=21, second=0),\n end_date=datetime(year=2023, month=2, day=24, hour=17, minute=21, second=1),\n ).to_pandas()\nflow_rate_pd.plot(y=[\"mass_flow\", \"temperature\"])\nplt.show()\n</pre> from datetime import datetime flow_rate_pd = client.dataLakeMeasureApi.get( identifier=\"flow-rate\", start_date=datetime(year=2023, month=2, day=24, hour=17, minute=21, second=0), end_date=datetime(year=2023, month=2, day=24, hour=17, minute=21, second=1), ).to_pandas() flow_rate_pd.plot(y=[\"mass_flow\", \"temperature\"]) plt.show() <pre>2023-02-24 17:34:26,899 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> <p>... from this point on, we leave all future processing of the data up to your creativity. Keep in mind: the general syntax used in this tutorial (<code>all()</code>, <code>to_pandas()</code>, <code>get()</code>) applies to all endpoints and associated resources of the StreamPipes Python client.</p> <p>If you get further and create exciting stuff with data extracted from StreamPipes please let us know. We are thrilled to see what you as a community will build with the provided client. Furthermore, don't hesitate to discuss feature requests to extend the current functionality with us.</p> <p>For now, that's all about the StreamPipes client. Read the next tutorial (Getting live data from the StreamPipes data stream) if you are interested in making use of the powerful StreamPipes functions to interact with StreamPipes in an event-based manner.</p> <p>How do you like this tutorial? We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/2-extracting-data-from-the-streampipes-data-lake/#Extracting-Data-from-the-StreamPipes-data-lake","title":"Extracting Data from the StreamPipes data lake\u00b6","text":"<p>In the first tutorial (Introduction to the StreamPipes Python client) we took the first steps with the StreamPipes Python client and learned how to set everything up. Now we are ready to get started and want to retrieve some data out of StreamPipes. In this tutorial, we'll focus on the StreamPipes Data Lake, the component where StreamPipes stores data internally. To get started, we'll use the <code>client</code> instance created in the first tutorial.</p>"},{"location":"tutorials/3-getting-live-data-from-the-streampipes-data-stream/","title":"Getting live data from the StreamPipes data stream","text":"<p>Note As of now we mainly developed the support for StreamPipes functions using NATS as messaging protocol. Consequently, this setup is tested most and should work flawlessly. Visit our first-steps page to see how to start StreamPipes accordingly. Anyhow, you can also use the other brokers that are currently supported in StreamPipes Python. In case you observe any problems, please reach out to us and file us an issue on GitHub.</p> In\u00a0[1]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials In\u00a0[\u00a0]: Copied! <pre># You can install all required libraries for this tutorial with the following command\n%pip install matplotlib ipython streampipes\n</pre> # You can install all required libraries for this tutorial with the following command %pip install matplotlib ipython streampipes In\u00a0[2]: Copied! <pre>import os\n\nos.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\"\nos.environ[\"SP_API_KEY\"] = \"XXX\"\n\n# Use this if you work locally:\nos.environ[\"BROKER-HOST\"] = \"localhost\" \nos.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker. If Kafka is not running on localhost, KAFKA_ADVERTISED_LISTENERS should be adjusted to the external address\n</pre> import os os.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\" os.environ[\"SP_API_KEY\"] = \"XXX\" # Use this if you work locally: os.environ[\"BROKER-HOST\"] = \"localhost\" os.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker. If Kafka is not running on localhost, KAFKA_ADVERTISED_LISTENERS should be adjusted to the external address In\u00a0[3]: Copied! <pre>client_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(),\n host_address=\"localhost\",\n port=80,\n https_disabled=True,\n)\nclient = StreamPipesClient(client_config=client_config)\n</pre> client_config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials(), host_address=\"localhost\", port=80, https_disabled=True, ) client = StreamPipesClient(client_config=client_config) <pre>2022-12-14 10:43:37,664 - streampipes.client.client - [INFO] - [client.py:127] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n</pre> <p>Now we can have a look at the available data streams. We can choose one or more stream to receive the data from and copy their <code>element_id</code>.</p> In\u00a0[4]: Copied! <pre>client.dataStreamApi.all().to_pandas()\n</pre> client.dataStreamApi.all().to_pandas() <pre>2022-12-14 10:43:39,944 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:153] [_make_request] - Successfully retrieved all resources.\n</pre> Out[4]: element_id name description icon_url app_id includes_assets includes_locales internally_managed measurement_object index ... uri dom num_transport_protocols num_measurement_capability num_application_links num_included_assets num_connected_to num_category num_event_properties num_included_locales 0 urn:streampipes.apache.org:eventstream:HHoidJ Test2 None None False False True None 0 ... urn:streampipes.apache.org:eventstream:HHoidJ None 1 0 0 0 0 0 7 0 1 urn:streampipes.apache.org:eventstream:uPDKLI Test None None False False True None 0 ... urn:streampipes.apache.org:eventstream:uPDKLI None 1 0 0 0 0 0 7 0 <p>2 rows \u00d7 21 columns</p> <p>Next we can create a StreamPipesFunction. For this we need to implement the 3 following methods:</p> <ul> <li><code>onServiceStarted</code> is called when the function gets started. There you can use the given meta information of the <code>FunctionContext</code> to initialize the function.</li> <li><code>onEvent</code> is called when ever a new event arrives. The <code>event</code> contains the live data and you can use the <code>streamId</code> to identify a stream if the function is connected to multiple data streams.</li> <li><code>onServiceStopped</code> is called when the function gets stopped.</li> </ul> <p>For this tutorial we just create a function that saves every new event in a <code>pandas DataFrame</code> and plots the first column of the <code>DataFrame</code> when the function gets stopped.</p> <p>(If you want to use the same structure as in Java you can overwrite the <code>getFunctionId</code> and <code>requiredStreamIds</code> methods instead of using the <code>FunctionDefinition</code>)</p> In\u00a0[5]: Copied! <pre>from typing import Dict, Any\nimport pandas as pd\nfrom datetime import datetime\nimport matplotlib.pyplot as plt\nfrom streampipes.functions.function_handler import FunctionHandler\nfrom streampipes.functions.registration import Registration\nfrom streampipes.functions.streampipes_function import StreamPipesFunction\nfrom streampipes.functions.utils.function_context import FunctionContext\nfrom streampipes.model.resource.function_definition import FunctionDefinition, FunctionId\n\nclass ExampleFunction(StreamPipesFunction):\n def __init__(self, function_definition: FunctionDefinition) -> None:\n super().__init__(function_definition)\n # Create the Dataframe to save the live data\n self.df = pd.DataFrame()\n\n def onServiceStarted(self, context: FunctionContext):\n # Get the name of the timestamp field\n for event_property in context.schema[context.streams[0]].event_schema.event_properties:\n if event_property.property_scope == \"HEADER_PROPERTY\":\n self.timestamp = event_property.runtime_name\n\n def onEvent(self, event: Dict[str, Any], streamId: str):\n # Convert the unix timestamp to datetime\n event[self.timestamp] = datetime.fromtimestamp(event[self.timestamp] / 1000)\n # Add every value of the event to the DataFrame\n self.df = pd.concat(\n [self.df, pd.DataFrame({key: [event[key]] for key in event.keys()}).set_index(self.timestamp)]\n )\n\n def onServiceStopped(self):\n # Plot the first column of the Dataframe\n plt.figure(figsize=(10, 5))\n plt.xlabel(self.timestamp)\n plt.ylabel(self.df.columns[0])\n plt.plot(self.df.iloc[:, 0])\n plt.show()\n</pre> from typing import Dict, Any import pandas as pd from datetime import datetime import matplotlib.pyplot as plt from streampipes.functions.function_handler import FunctionHandler from streampipes.functions.registration import Registration from streampipes.functions.streampipes_function import StreamPipesFunction from streampipes.functions.utils.function_context import FunctionContext from streampipes.model.resource.function_definition import FunctionDefinition, FunctionId class ExampleFunction(StreamPipesFunction): def __init__(self, function_definition: FunctionDefinition) -> None: super().__init__(function_definition) # Create the Dataframe to save the live data self.df = pd.DataFrame() def onServiceStarted(self, context: FunctionContext): # Get the name of the timestamp field for event_property in context.schema[context.streams[0]].event_schema.event_properties: if event_property.property_scope == \"HEADER_PROPERTY\": self.timestamp = event_property.runtime_name def onEvent(self, event: Dict[str, Any], streamId: str): # Convert the unix timestamp to datetime event[self.timestamp] = datetime.fromtimestamp(event[self.timestamp] / 1000) # Add every value of the event to the DataFrame self.df = pd.concat( [self.df, pd.DataFrame({key: [event[key]] for key in event.keys()}).set_index(self.timestamp)] ) def onServiceStopped(self): # Plot the first column of the Dataframe plt.figure(figsize=(10, 5)) plt.xlabel(self.timestamp) plt.ylabel(self.df.columns[0]) plt.plot(self.df.iloc[:, 0]) plt.show() <p>Now we can start the function. First we create an instance of the <code>ExampleFunction</code> and insert the <code>element_id</code> of the stream which data we want to consume. Then we have to register this function and we can start all functions by initializing the <code>FunctionHandler</code>. (it's also possible to register multiple functions with <code>.register(...).register(...)</code>)</p> In\u00a0[6]: Copied! <pre>example_function = ExampleFunction(\n FunctionDefinition(\n function_id=FunctionId(id=\"example-function\"),\n consumed_streams=[\"urn:streampipes.apache.org:eventstream:uPDKLI\"]\n )\n)\n\nregistration = Registration()\nregistration.register(example_function)\n\nfunction_handler = FunctionHandler(registration, client)\nfunction_handler.initializeFunctions()\n</pre> example_function = ExampleFunction( FunctionDefinition( function_id=FunctionId(id=\"example-function\"), consumed_streams=[\"urn:streampipes.apache.org:eventstream:uPDKLI\"] ) ) registration = Registration() registration.register(example_function) function_handler = FunctionHandler(registration, client) function_handler.initializeFunctions() <pre>2022-12-14 10:43:42,810 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:153] [_make_request] - Successfully retrieved all resources.\n2022-12-14 10:43:42,812 - streampipes.functions.function_handler - [INFO] - [function_handler.py:82] [initializeFunctions] - Using NatsBroker for <__main__.ExampleFunction object at 0x000001F2EF298D90>\n</pre> <p>The <code>DataFrame</code> of the <code>ExampleFunction</code> gets updated whenever a new event arrives. Let's test this by executing the cell below.</p> In\u00a0[7]: Copied! <pre>import asyncio\nfrom asyncio.exceptions import CancelledError\nfrom IPython.display import clear_output\n\nwhile True:\n clear_output(wait=True)\n display(example_function.df)\n try:\n await asyncio.sleep(1)\n except CancelledError:\n break\n</pre> import asyncio from asyncio.exceptions import CancelledError from IPython.display import clear_output while True: clear_output(wait=True) display(example_function.df) try: await asyncio.sleep(1) except CancelledError: break mass_flow density volume_flow sensor_fault_flags temperature sensorId timestamp 2022-12-14 10:43:43.357 10.955496 47.546290 1.001985 False 44.993413 flowrate02 2022-12-14 10:43:44.371 6.499040 44.392069 2.034402 False 41.232352 flowrate02 2022-12-14 10:43:45.382 10.168300 41.192146 9.724287 False 46.812779 flowrate02 2022-12-14 10:43:46.395 10.849059 50.086308 5.832691 False 45.860412 flowrate02 2022-12-14 10:43:47.410 3.081855 47.254246 8.860531 False 50.505801 flowrate02 ... ... ... ... ... ... ... 2022-12-14 10:44:43.920 1.803572 41.978894 10.294002 False 47.820239 flowrate02 2022-12-14 10:44:44.932 1.967062 42.212883 3.237440 False 49.047258 flowrate02 2022-12-14 10:44:45.934 4.457819 47.561256 0.315024 False 40.223413 flowrate02 2022-12-14 10:44:46.949 8.745343 46.346891 7.439090 False 41.982529 flowrate02 2022-12-14 10:44:47.950 5.828744 47.679720 6.307405 False 42.100354 flowrate02 <p>65 rows \u00d7 6 columns</p> <p>The <code>while</code> loop just displays the the <code>DataFrame</code> every second until the cell is stopped. We could achieve the same result manually by executing <code>example_function.df</code> repeatedly.</p> <p>You can stop the functions whenever you want by executing the command below.</p> In\u00a0[\u00a0]: Copied! <pre>function_handler.disconnect()\n</pre> function_handler.disconnect() <pre>2022-12-14 10:44:53,309 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:67] [disconnect] - Stopped connection to stream: urn:streampipes.apache.org:eventstream:uPDKLI\n</pre> <p>That's enough for this tutorial. Now you can try to write your own <code>StreamPipesFunction</code>. All you need to do is creating a new class, implementing the 4 required methods and registering the function.</p> <p>Want to see more exciting use cases you can achieve with StreamPipes functions in Python? Then don't hesitate and jump to our next tutorial on applying online machine learning algorithms to StreamPipes data streams with River.</p> <p>How do you like this tutorial? We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/3-getting-live-data-from-the-streampipes-data-stream/#Getting-live-data-from-the-StreamPipes-data-stream","title":"Getting live data from the StreamPipes data stream\u00b6","text":"<p>In the last tutorial (Extracting Data from the StreamPipes data lake) we learned how to extract the stored data from a StreamPipes data lake. This tutorial is about the StreamPipes data stream and shows how to get the live data from StreamPipes into Python. Therefore, we first create the <code>client</code> instance as before.</p>"},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/","title":"Using Online Machine Learning on a StreamPipes data stream","text":"In\u00a0[1]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials In\u00a0[\u00a0]: Copied! <pre># you can install all required dependencies for this tutorial by executing the following command\n%pip install river streampipes\n</pre> # you can install all required dependencies for this tutorial by executing the following command %pip install river streampipes In\u00a0[2]: Copied! <pre>import os\n\nos.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\"\nos.environ[\"SP_API_KEY\"] = \"XXX\"\n\n# Use this if you work locally:\nos.environ[\"BROKER-HOST\"] = \"localhost\" \nos.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker\n</pre> import os os.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\" os.environ[\"SP_API_KEY\"] = \"XXX\" # Use this if you work locally: os.environ[\"BROKER-HOST\"] = \"localhost\" os.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker In\u00a0[3]: Copied! <pre>client_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(),\n host_address=\"localhost\",\n port=80,\n https_disabled=True,\n)\nclient = StreamPipesClient(client_config=client_config)\n</pre> client_config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials(), host_address=\"localhost\", port=80, https_disabled=True, ) client = StreamPipesClient(client_config=client_config) <pre>2023-01-27 16:04:24,784 - streampipes.client.client - [INFO] - [client.py:128] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n</pre> In\u00a0[4]: Copied! <pre>client.dataStreamApi.all().to_pandas()\n</pre> client.dataStreamApi.all().to_pandas() <pre>2023-01-27 16:04:28,212 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:163] [_make_request] - Successfully retrieved all resources.\n</pre> Out[4]: element_id name description icon_url app_id includes_assets includes_locales internally_managed measurement_object index ... dom rev num_transport_protocols num_measurement_capability num_application_links num_included_assets num_connected_to num_category num_event_properties num_included_locales 0 sp:spdatastream:xboBFK Test None None False False True None 0 ... None 5-558c861debc745e1ebae29a266a8bdb9 1 0 0 0 0 0 7 0 1 urn:streampipes.apache.org:eventstream:Wgyrse Test File None None False False True None 0 ... None 4-66548b6b84287011b7cec0876ef82baf 1 0 0 0 0 0 2 0 <p>2 rows \u00d7 22 columns</p> In\u00a0[5]: Copied! <pre>from river import cluster, compose, preprocessing\nfrom streampipes.function_zoo.river_function import OnlineML\nfrom streampipes.functions.utils.data_stream_generator import RuntimeType\n\nk_means = compose.Pipeline(\n (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")),\n (\"scale\", preprocessing.StandardScaler()),\n (\"k_means\", cluster.KMeans(n_clusters=2)),\n)\n\nclustering = OnlineML(\n client=client, stream_ids=[\"sp:spdatastream:xboBFK\"], model=k_means, prediction_type=RuntimeType.INTEGER.value\n)\nclustering.start()\n</pre> from river import cluster, compose, preprocessing from streampipes.function_zoo.river_function import OnlineML from streampipes.functions.utils.data_stream_generator import RuntimeType k_means = compose.Pipeline( (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")), (\"scale\", preprocessing.StandardScaler()), (\"k_means\", cluster.KMeans(n_clusters=2)), ) clustering = OnlineML( client=client, stream_ids=[\"sp:spdatastream:xboBFK\"], model=k_means, prediction_type=RuntimeType.INTEGER.value ) clustering.start() <pre>2023-01-27 16:04:35,599 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:163] [_make_request] - Successfully retrieved all resources.\n2023-01-27 16:04:35,599 - streampipes.functions.function_handler - [INFO] - [function_handler.py:64] [initializeFunctions] - Create output data stream \"sp:spdatastream:cwKPoo\" for the function \"65cf8b86-bcdf-433e-a1c7-3e920eab55d0\"\n2023-01-27 16:04:37,766 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:163] [_make_request] - Successfully retrieved all resources.\n2023-01-27 16:04:37,767 - streampipes.functions.function_handler - [INFO] - [function_handler.py:78] [initializeFunctions] - Using NatsBroker for RiverFunction\n</pre> <pre>2023-01-27 16:04:37,791 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:48] [_makeConnection] - Connected to NATS at localhost:4222\n2023-01-27 16:04:37,791 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:48] [_makeConnection] - Connected to NATS at localhost:4222\n2023-01-27 16:04:37,792 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:58] [createSubscription] - Subscribed to stream: sp:spdatastream:xboBFK\n</pre> In\u00a0[6]: Copied! <pre>clustering.set_learning(False)\n</pre> clustering.set_learning(False) In\u00a0[\u00a0]: Copied! <pre>clustering.stop()\n</pre> clustering.stop() <pre>2023-01-27 16:04:57,303 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:82] [disconnect] - Stopped connection to stream: sp:spdatastream:xboBFK\n2023-01-27 16:04:57,304 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:82] [disconnect] - Stopped connection to stream: sp:spdatastream:cwKPoo\n</pre> In\u00a0[\u00a0]: Copied! <pre>import pickle\nfrom river import compose, tree\nfrom streampipes.function_zoo.river_function import OnlineML\nfrom streampipes.functions.utils.data_stream_generator import RuntimeType\n\nhoeffding_tree = compose.Pipeline(\n (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")),\n (\"hoeffding_tree\", tree.HoeffdingTreeRegressor(grace_period=5)),\n)\n\n\ndef draw_tree(self, event, streamId):\n\"\"\"Draw the tree and save the image.\"\"\"\n if self.learning:\n if self.model[1].n_nodes != None:\n self.model[1].draw().render(\"hoeffding_tree\", format=\"png\", cleanup=True)\n\n\ndef save_model(self):\n\"\"\"Save the trained model.\"\"\"\n with open(\"hoeffding_tree.pkl\", \"wb\") as f:\n pickle.dump(self.model, f)\n\n\nregressor = OnlineML(\n client=client,\n stream_ids=[\"sp:spdatastream:xboBFK\"],\n model=hoeffding_tree,\n prediction_type=RuntimeType.FLOAT.value,\n supervised=True,\n target_label=\"temperature\",\n on_event=draw_tree,\n on_stop=save_model,\n)\nregressor.start()\n</pre> import pickle from river import compose, tree from streampipes.function_zoo.river_function import OnlineML from streampipes.functions.utils.data_stream_generator import RuntimeType hoeffding_tree = compose.Pipeline( (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")), (\"hoeffding_tree\", tree.HoeffdingTreeRegressor(grace_period=5)), ) def draw_tree(self, event, streamId): \"\"\"Draw the tree and save the image.\"\"\" if self.learning: if self.model[1].n_nodes != None: self.model[1].draw().render(\"hoeffding_tree\", format=\"png\", cleanup=True) def save_model(self): \"\"\"Save the trained model.\"\"\" with open(\"hoeffding_tree.pkl\", \"wb\") as f: pickle.dump(self.model, f) regressor = OnlineML( client=client, stream_ids=[\"sp:spdatastream:xboBFK\"], model=hoeffding_tree, prediction_type=RuntimeType.FLOAT.value, supervised=True, target_label=\"temperature\", on_event=draw_tree, on_stop=save_model, ) regressor.start() In\u00a0[9]: Copied! <pre>regressor.set_learning(False)\n</pre> regressor.set_learning(False) In\u00a0[\u00a0]: Copied! <pre>regressor.stop()\n</pre> regressor.stop() In\u00a0[\u00a0]: Copied! <pre>import pickle\nfrom river import compose, tree\nfrom streampipes.function_zoo.river_function import OnlineML\nfrom streampipes.functions.utils.data_stream_generator import RuntimeType\n\ndecision_tree = compose.Pipeline(\n (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")),\n (\"decision_tree\", tree.ExtremelyFastDecisionTreeClassifier(grace_period=5)),\n)\n\n\ndef draw_tree(self, event, streamId):\n\"\"\"Draw the tree and save the image.\"\"\"\n if self.learning:\n if self.model[1].n_nodes != None:\n self.model[1].draw().render(\"decicion_tree\", format=\"png\", cleanup=True)\n\n\ndef save_model(self):\n\"\"\"Save the trained model.\"\"\"\n with open(\"decision_tree.pkl\", \"wb\") as f:\n pickle.dump(self.model, f)\n\n\nclassifier = OnlineML(\n client=client,\n stream_ids=[\"sp:spdatastream:xboBFK\"],\n model=decision_tree,\n prediction_type=RuntimeType.BOOLEAN.value,\n supervised=True,\n target_label=\"sensor_fault_flags\",\n on_event=draw_tree,\n on_stop=save_model,\n)\nclassifier.start()\n</pre> import pickle from river import compose, tree from streampipes.function_zoo.river_function import OnlineML from streampipes.functions.utils.data_stream_generator import RuntimeType decision_tree = compose.Pipeline( (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")), (\"decision_tree\", tree.ExtremelyFastDecisionTreeClassifier(grace_period=5)), ) def draw_tree(self, event, streamId): \"\"\"Draw the tree and save the image.\"\"\" if self.learning: if self.model[1].n_nodes != None: self.model[1].draw().render(\"decicion_tree\", format=\"png\", cleanup=True) def save_model(self): \"\"\"Save the trained model.\"\"\" with open(\"decision_tree.pkl\", \"wb\") as f: pickle.dump(self.model, f) classifier = OnlineML( client=client, stream_ids=[\"sp:spdatastream:xboBFK\"], model=decision_tree, prediction_type=RuntimeType.BOOLEAN.value, supervised=True, target_label=\"sensor_fault_flags\", on_event=draw_tree, on_stop=save_model, ) classifier.start() In\u00a0[12]: Copied! <pre>classifier.set_learning(False)\n</pre> classifier.set_learning(False) In\u00a0[\u00a0]: Copied! <pre>classifier.stop()\n</pre> classifier.stop() <p>That's already it! Isn't it truly easy to apply Online ML with StreamPipes and River? Please go ahead and apply it to your own use cases. We would be happy to hear about them!</p> <p>Want to see more exciting use cases you can achieve with StreamPipes functions in Python? Then don\u2019t hesitate and jump to our next tutorial on using interoperable machine learning algorithm models with StreamPipes Python and ONNX.</p> <p>How do you like this tutorial? We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#Using-Online-Machine-Learning-on-a-StreamPipes-data-stream","title":"Using Online Machine Learning on a StreamPipes data stream\u00b6","text":"<p>The last tutorial (Getting live data from the StreamPipes data stream) showed how we can connect to a data stream, and it would be possible to use Online Machine Learning with this approach and train a model with the incoming events at the <code>onEvent</code> method. However, the StreamPipes client also provides an easier way to do this with the use of the River library for Online Machine Learning. We will have a look at this now.</p>"},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#How-to-use-Online-Machine-Learning-with-StreamPipes","title":"How to use Online Machine Learning with StreamPipes\u00b6","text":"<p>After we configured the client as usual, we can start with the new part. The approach is straight forward and you can start with the ML part in just 3 steps:</p> <ol> <li>Create a pipeline with River and insert the preprocessing steps and model of your choice.</li> <li>Configure the <code>OnlineML</code> wrapper to fit to your model and insert the client and required data stream ids.</li> <li>Start the wrapper and let the learning begin.</li> </ol> <p>A StreamPipesFunction is then started, which trains the model for each new event. It also creates an output data stream which will send the prediction of the model back to StreamPipes. This output stream can be seen when creating a new pipeline and can be used like every other data source. So you can use it in a pipeline and save the predictions in a Data Lake. You can also stop and start the training with the method <code>set_learning</code>. To stop the whole function use the <code>stop</code> methode and if you want to delete the output stream entirely, you can go to the <code>Pipeline Element Installer</code> in StreamPipes and uninstall it.</p> <p>Now let's take a look at some examples. If you want to execute the examples below you have to create an adapter for the <code>Machine Data Simulator</code>, select the <code>flowrate</code> sensor and insert the stream id of this stream.</p>"},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#KMeans","title":"KMeans\u00b6","text":""},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#HoeffdingTreeRegressor","title":"HoeffdingTreeRegressor\u00b6","text":""},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#DecisionTreeClassifier","title":"DecisionTreeClassifier\u00b6","text":""},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/","title":"Applying Interoperable Machine Learning in StreamPipes","text":"In\u00a0[\u00a0]: Copied! <pre>%pip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python\n%pip install scikit-learn==1.4.0 skl2onnx==1.16.0 onnxruntime==1.17.1 matplotlib==3.8.3\n</pre> %pip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python %pip install scikit-learn==1.4.0 skl2onnx==1.16.0 onnxruntime==1.17.1 matplotlib==3.8.3 In\u00a0[8]: Copied! <pre>import os\nfrom streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nos.environ[\"BROKER-HOST\"] = \"localhost\"\nos.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker\n\nconfig = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(\n username=\"admin@streampipes.apache.org\",\n api_key=\"TOKEN\",\n ),\n host_address=\"localhost\",\n https_disabled=True,\n port=80\n)\n\nclient = StreamPipesClient(client_config=config)\n</pre> import os from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials os.environ[\"BROKER-HOST\"] = \"localhost\" os.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials( username=\"admin@streampipes.apache.org\", api_key=\"TOKEN\", ), host_address=\"localhost\", https_disabled=True, port=80 ) client = StreamPipesClient(client_config=config) <pre>2024-03-26 10:21:38,538 - streampipes.client.client - [INFO] - [client.py:198] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n2024-03-26 10:21:38,632 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-03-26 10:21:38,634 - streampipes.client.client - [INFO] - [client.py:171] [_get_server_version] - The StreamPipes version was successfully retrieved from the backend: 0.95.0. By means of that, authentication via the provided credentials is also tested successfully.\n</pre> <p>The main objective of this tutorial is to demonstrate how to make predictions with an existing and pre-trained ML model using a StreamPipes function and ONNX. Therefore, you can skip the following sections on use case and model training if you already have an existing ONNX model and are only interested in applying it using StreamPipes.</p> In\u00a0[9]: Copied! <pre>flowrate_df = client.dataLakeMeasureApi.get(\"flow-rate\").to_pandas()\nX = flowrate_df[\"volume_flow\"].values.reshape(-1, 1).astype(\"float32\")\n</pre> flowrate_df = client.dataLakeMeasureApi.get(\"flow-rate\").to_pandas() X = flowrate_df[\"volume_flow\"].values.reshape(-1, 1).astype(\"float32\") <pre>2024-03-26 10:21:48,582 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n</pre> <p>Let's fit the model to the data:</p> In\u00a0[14]: Copied! <pre>from sklearn.ensemble import IsolationForest\n\nmodel = IsolationForest(contamination=0.01)\nmodel.fit(X)\n</pre> from sklearn.ensemble import IsolationForest model = IsolationForest(contamination=0.01) model.fit(X) Out[14]: <pre>IsolationForest(contamination=0.01)</pre>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.\u00a0\u00a0IsolationForest?Documentation for IsolationForestiFitted<pre>IsolationForest(contamination=0.01)</pre> <p>The <code>contamination</code> parameter models the proportion of outliers in the data. See the scikit-learn documentation for more information.</p> <p>Before we convert the model to an ONNX representation, let's do a quick visual analysis of the model results:</p> In\u00a0[15]: Copied! <pre>import matplotlib.pyplot as plt\n\nflowrate_df[\"anomaly\"] = model.predict(X)\n\nfig, ax = plt.subplots(figsize=(10, 6))\nanomalies = flowrate_df.loc[flowrate_df[\"anomaly\"] == -1, [\"volume_flow\"]]\nax.plot(flowrate_df.index, flowrate_df['volume_flow'], color='black', label='volume_flow')\nax.scatter(anomalies.index, anomalies['volume_flow'], color='red', label='Anomaly')\nplt.legend()\nplt.show()\n</pre> import matplotlib.pyplot as plt flowrate_df[\"anomaly\"] = model.predict(X) fig, ax = plt.subplots(figsize=(10, 6)) anomalies = flowrate_df.loc[flowrate_df[\"anomaly\"] == -1, [\"volume_flow\"]] ax.plot(flowrate_df.index, flowrate_df['volume_flow'], color='black', label='volume_flow') ax.scatter(anomalies.index, anomalies['volume_flow'], color='red', label='Anomaly') plt.legend() plt.show() <p>Okay, that looks quite reasonable so lets covert the model to an ONNX representation so that we can make use of it later.</p> In\u00a0[16]: Copied! <pre>from onnxconverter_common import FloatTensorType\nfrom skl2onnx import to_onnx\n\nmodel_onnx = to_onnx(\n model,\n initial_types=[('input', FloatTensorType([None, X.shape[1]]))],\n target_opset={'ai.onnx.ml': 3, 'ai.onnx': 15, '': 15}\n)\n\nwith open(\"isolation_forest.onnx\", \"wb\") as f:\n f.write(model_onnx.SerializeToString())\n</pre> from onnxconverter_common import FloatTensorType from skl2onnx import to_onnx model_onnx = to_onnx( model, initial_types=[('input', FloatTensorType([None, X.shape[1]]))], target_opset={'ai.onnx.ml': 3, 'ai.onnx': 15, '': 15} ) with open(\"isolation_forest.onnx\", \"wb\") as f: f.write(model_onnx.SerializeToString()) In\u00a0[23]: Copied! <pre>import numpy as np\nimport onnxruntime as rt\n\nfrom streampipes.functions.broker.broker_handler import get_broker_description\nfrom streampipes.functions.streampipes_function import StreamPipesFunction\nfrom streampipes.functions.utils.data_stream_generator import create_data_stream, RuntimeType\nfrom streampipes.functions.utils.function_context import FunctionContext\nfrom streampipes.model.resource import FunctionDefinition, DataStream\n\nfrom typing import Dict, Any, List\n\n\nclass ONNXFunction(StreamPipesFunction):\n\n def __init__(self, feature_names: list[str], input_stream: DataStream):\n output_stream = create_data_stream(\n name=\"flowrate-prediction\",\n attributes={\n \"is_anomaly\": RuntimeType.BOOLEAN.value\n },\n broker=get_broker_description(input_stream)\n )\n\n function_definition = FunctionDefinition(\n consumed_streams=[input_stream.element_id]\n ).add_output_data_stream(output_stream)\n\n self.feature_names = feature_names\n self.input_name = None\n self.output_name = None\n self.session = None\n\n super().__init__(function_definition=function_definition)\n\n def onServiceStarted(self, context: FunctionContext) -> None:\n self.session = rt.InferenceSession(\n path_or_bytes=\"isolation_forest.onnx\",\n providers=rt.get_available_providers(),\n )\n self.input_name = self.session.get_inputs()[0].name\n self.output_name = self.session.get_outputs()[0].name\n\n def onEvent(self, event: Dict[str, Any], streamId: str) -> None:\n feature_vector = []\n for feature in self.feature_names:\n feature_vector.append(event[feature])\n\n prediction = self.session.run(\n [self.output_name],\n {self.input_name: np.expand_dims(np.array(feature_vector), axis=0).astype(\"float32\")}\n )[0]\n\n output = {\n \"is_anomaly\": int(prediction[0]) == -1\n }\n\n self.add_output(\n stream_id=self.function_definition.get_output_stream_ids()[0],\n event=output\n )\n\n def onServiceStopped(self) -> None:\n pass\n</pre> import numpy as np import onnxruntime as rt from streampipes.functions.broker.broker_handler import get_broker_description from streampipes.functions.streampipes_function import StreamPipesFunction from streampipes.functions.utils.data_stream_generator import create_data_stream, RuntimeType from streampipes.functions.utils.function_context import FunctionContext from streampipes.model.resource import FunctionDefinition, DataStream from typing import Dict, Any, List class ONNXFunction(StreamPipesFunction): def __init__(self, feature_names: list[str], input_stream: DataStream): output_stream = create_data_stream( name=\"flowrate-prediction\", attributes={ \"is_anomaly\": RuntimeType.BOOLEAN.value }, broker=get_broker_description(input_stream) ) function_definition = FunctionDefinition( consumed_streams=[input_stream.element_id] ).add_output_data_stream(output_stream) self.feature_names = feature_names self.input_name = None self.output_name = None self.session = None super().__init__(function_definition=function_definition) def onServiceStarted(self, context: FunctionContext) -> None: self.session = rt.InferenceSession( path_or_bytes=\"isolation_forest.onnx\", providers=rt.get_available_providers(), ) self.input_name = self.session.get_inputs()[0].name self.output_name = self.session.get_outputs()[0].name def onEvent(self, event: Dict[str, Any], streamId: str) -> None: feature_vector = [] for feature in self.feature_names: feature_vector.append(event[feature]) prediction = self.session.run( [self.output_name], {self.input_name: np.expand_dims(np.array(feature_vector), axis=0).astype(\"float32\")} )[0] output = { \"is_anomaly\": int(prediction[0]) == -1 } self.add_output( stream_id=self.function_definition.get_output_stream_ids()[0], event=output ) def onServiceStopped(self) -> None: pass <p>Let's dive a little deeper into the different parts of the function</p> <ul> <li><p><code>__init__</code>: First, we need to take care of the data stream that is required to send the predictions from our function to StreamPipes. Thus, we create a dedicated output data stream which we need to provide with the attributes our event will consist of (a timestamp attribute is always added automatically). This output data stream needs to be registered at the function definition which is to be passed to the parent class. Lastly, we need to define some instance variables that are mainly required for the ONNX runtime.</p> </li> <li><p><code>onServiceStarted</code>: Here we prepare the ONNX runtime session by creating an <code>InferenceSession</code> and retrieving the corresponding configuration parameters.</p> </li> <li><p><code>onEvent</code>: Following the parameter names specified by <code>self.feature_names</code>, we extract all feature values from the current event. Subsequently, the corresponding feature vector is transmitted to the ONNX runtime session. The resulting prediction is then converted into our output event, where a value of <code>-1</code> signifies an anomaly. Finally, the generated output event is forwarded to StreamPipes.</p> </li> </ul> <p>Having the function code in place, we can start the function with the following:</p> In\u00a0[25]: Copied! <pre>from streampipes.functions.registration import Registration\nfrom streampipes.functions.function_handler import FunctionHandler\n\nstream = [\n stream\n for stream\n in client.dataStreamApi.all()\n if stream.name == \"flow-rate\"\n][0]\n\nfunction = ONNXFunction(\n feature_names=[\"volume_flow\"],\n input_stream=stream\n)\n\nregistration = Registration()\nregistration.register(function)\nfunction_handler = FunctionHandler(registration, client)\nfunction_handler.initializeFunctions()\n</pre> from streampipes.functions.registration import Registration from streampipes.functions.function_handler import FunctionHandler stream = [ stream for stream in client.dataStreamApi.all() if stream.name == \"flow-rate\" ][0] function = ONNXFunction( feature_names=[\"volume_flow\"], input_stream=stream ) registration = Registration() registration.register(function) function_handler = FunctionHandler(registration, client) function_handler.initializeFunctions() <pre>2024-03-26 12:39:50,443 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-03-26 12:39:50,502 - streampipes.functions.function_handler - [INFO] - [function_handler.py:76] [initializeFunctions] - The data stream could not be created.\n2024-03-26 12:39:50,503 - streampipes.functions.function_handler - [INFO] - [function_handler.py:78] [initializeFunctions] - This is due to the fact that this data stream already exists. Continuing with the existing data stream.\n2024-03-26 12:39:50,503 - streampipes.functions.function_handler - [INFO] - [function_handler.py:84] [initializeFunctions] - Using output data stream 'sp:spdatastream:flowrate-prediction' for function '7c06fa31-9534-4f91-9c50-b7a3607ec3dc'\n2024-03-26 12:39:50,548 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-03-26 12:39:50,549 - streampipes.functions.function_handler - [INFO] - [function_handler.py:100] [initializeFunctions] - Using KafkaConsumer for ONNXFunction\n</pre> <p>We can now access the live values of the prediction in the StreamPipes UI, e.g., in the pipeline editor.</p> <p></p> <p>That's already it. We hope this tutorial serves as an illustration how ML models can be utilized in StreamPipes with the help of ONNX.</p> <p>How do you like this tutorial? We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Applying-Interoperable-Machine-Learning-in-StreamPipes","title":"Applying Interoperable Machine Learning in StreamPipes\u00b6","text":"<p>The last tutorial (Using Online Machine Learning on a StreamPipes data stream) demonstrated how patterns in streaming data can be learned online. In contrast, this tutorial demonstrates how one can apply a pre-trained machine learning (ML) model to a StreamPipes data stream making use of ONNX. We will show how StreamPipes can be used for both: extracting historical data for training purposes and using model inference on live data with a pre-trained model.</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Preparation","title":"Preparation\u00b6","text":"<p>The following lines configure the client and establish a connection to the StreamPipes instance. If you're not familiar with it or anything is unclear, please have a look at our first tutorial.</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Machine-Learning-Use-Case","title":"Machine Learning Use Case\u00b6","text":"<p>In this tutorial, we will use data generated by the Machine Data Simulator adapter. More specifically, we will focus on the <code>flowrate</code> data, which consists of various sensor values coming from a water pipe system. Our goal is keep an eye on the parameter <code>volume_flow</code>, which represents the current volume flow in cubic meters/second. For this parameter, we want to detect anomalies that could indicate problems such as leaks, blockages, etc.</p> <p>To get the concerned data, we simply need to create an instance of the machine data simulator and persist the data in the data lake:</p> <p></p> <p>If you choose to perform the model training step yourself, you will need to wait approximately 15 minutes for enough data to be available for model training. If you want to speed this up, you can configure a lower wait time when creating the adapter. Please be aware that this also influences the inference scenario.</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Model-Training-with-Historic-Data","title":"Model Training with Historic Data\u00b6","text":"<p>As said above, the aim of our model is to detect anomalies of the <code>volume_flow</code> parameter. For this task, we will use Isolation Forests. Please note that the focus of the tutorial is not on training the model, so please be patient even though the training is very simplified and lacks important preparation steps such as standardization.</p> <p>As a first step, lets query the <code>flowrate</code> data from the StreamPipes data lake and extract the values of <code>volume_flow</code> as a feature:</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Model-Inference-with-Live-Data","title":"Model Inference with Live Data\u00b6","text":"<p>Utilizing a pre-trained model within StreamPipes becomes seamless with the ONNX interoperability standard, enabling effortless application of your existing model on live data streams.</p> <p>Interacting with live data from StreamPipes is facilitated through StreamPipes functions. Below, we'll create a Python StreamPipes function that leverages an ONNX model to generate predictions for each incoming event, making the results accessible as a data stream within StreamPipes for subsequent steps.</p> <p>So let's create an <code>ONNXFunction</code> that is capable of applying a model in ONNX representation to a StreamPipes data stream. If you'd like to read more details about how functions are defined, refer to our third tutorial.</p>"},{"location":"tutorials/6-streampipes-function-output-stream/","title":"Creating Output Streams with StreamPipes Functions","text":"<p>A StreamPipes Function is a practical tool to help you receive and send live data from and to your StreamPipes instance. This tutorial provides sample code for creating a StreamPipes Function that defines an output stream so you can get started right away by following the below steps.</p> In\u00a0[3]: Copied! <pre>import os\n\nos.environ[\"BROKER-HOST\"] = \"localhost\"\nos.environ[\"KAFKA-PORT\"] = \"9094\"\napi_key = os.environ.get(\"TOKEN\")\n</pre> import os os.environ[\"BROKER-HOST\"] = \"localhost\" os.environ[\"KAFKA-PORT\"] = \"9094\" api_key = os.environ.get(\"TOKEN\") In\u00a0[4]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nclient_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(username=\"admin@streampipes.apache.org\", api_key=api_key),\n host_address=\"localhost\",\n port=80,\n https_disabled=True,\n)\nclient = StreamPipesClient(client_config=client_config)\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials client_config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials(username=\"admin@streampipes.apache.org\", api_key=api_key), host_address=\"localhost\", port=80, https_disabled=True, ) client = StreamPipesClient(client_config=client_config) <pre>2024-07-30 12:44:07,912 - streampipes.client.client - [INFO] - [client.py:199] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n2024-07-30 12:44:07,995 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-07-30 12:44:07,995 - streampipes.client.client - [INFO] - [client.py:172] [_get_server_version] - The StreamPipes version was successfully retrieved from the backend: 0.95.1. By means of that, authentication via the provided credentials is also tested successfully.\n</pre> In\u00a0[\u00a0]: Copied! <pre>def __init__(self, input_stream: DataStream):\n output_stream = create_data_stream(\n name=\"example-stream\",\n stream_id=\"example-stream\",\n attributes={\n \"number\": RuntimeType.INTEGER.value\n },\n broker=get_broker_description(input_stream)\n )\n</pre> def __init__(self, input_stream: DataStream): output_stream = create_data_stream( name=\"example-stream\", stream_id=\"example-stream\", attributes={ \"number\": RuntimeType.INTEGER.value }, broker=get_broker_description(input_stream) ) <p>You can now add this <code>output_stream</code> to the function definition and pass it to the parent class.</p> In\u00a0[\u00a0]: Copied! <pre>function_definition = FunctionDefinition(\n consumed_streams=[input_stream.element_id]\n ).add_output_data_stream(output_stream)\n\nsuper().__init__(function_definition=function_definition)\n</pre> function_definition = FunctionDefinition( consumed_streams=[input_stream.element_id] ).add_output_data_stream(output_stream) super().__init__(function_definition=function_definition) <p>To create the output event we define a dictionary with the key being equvalent to the key we defined for the <code>attributes</code> in the <code>create_data_stream</code> method. The value will just be 1, for simplicity. Lastly we call the <code>add_output</code> method and use the above specified <code>function_definition</code> to get the <code>stream_id</code>. All this is happening inside the <code>onEvent</code> method of the function because this method will be called for every incoming event.</p> In\u00a0[\u00a0]: Copied! <pre>output = {\n \"number\": 1\n}\n \nself.add_output(\n stream_id=self.function_definition.get_output_stream_ids()[0],\n event=output\n)\n</pre> output = { \"number\": 1 } self.add_output( stream_id=self.function_definition.get_output_stream_ids()[0], event=output ) In\u00a0[5]: Copied! <pre>import pandas as pd\nfrom typing import Dict, Any\nfrom streampipes.functions.streampipes_function import StreamPipesFunction\nfrom streampipes.functions.utils.data_stream_generator import create_data_stream, RuntimeType\nfrom streampipes.functions.broker.broker_handler import get_broker_description\nfrom streampipes.model.resource import FunctionDefinition, DataStream\nfrom streampipes.functions.utils.function_context import FunctionContext\nfrom streampipes.functions.function_handler import FunctionHandler\nfrom streampipes.functions.registration import Registration\n\nclass SimpleFunction(StreamPipesFunction):\n def __init__(self, input_stream: DataStream):\n output_stream = create_data_stream(\n name=\"example-stream\",\n stream_id=\"example-stream\",\n attributes={\n \"number\": RuntimeType.INTEGER.value\n },\n broker=get_broker_description(input_stream)\n )\n \n function_definition = FunctionDefinition(\n consumed_streams=[input_stream.element_id]\n ).add_output_data_stream(output_stream)\n\n super().__init__(function_definition=function_definition)\n\n def onServiceStarted(self, context: FunctionContext):\n pass\n\n def onEvent(self, event: Dict[str, Any], streamId: str):\n output = {\n \"number\": 1\n }\n \n self.add_output(\n stream_id=self.function_definition.get_output_stream_ids()[0],\n event=output\n )\n\n def onServiceStopped(self):\n pass\n</pre> import pandas as pd from typing import Dict, Any from streampipes.functions.streampipes_function import StreamPipesFunction from streampipes.functions.utils.data_stream_generator import create_data_stream, RuntimeType from streampipes.functions.broker.broker_handler import get_broker_description from streampipes.model.resource import FunctionDefinition, DataStream from streampipes.functions.utils.function_context import FunctionContext from streampipes.functions.function_handler import FunctionHandler from streampipes.functions.registration import Registration class SimpleFunction(StreamPipesFunction): def __init__(self, input_stream: DataStream): output_stream = create_data_stream( name=\"example-stream\", stream_id=\"example-stream\", attributes={ \"number\": RuntimeType.INTEGER.value }, broker=get_broker_description(input_stream) ) function_definition = FunctionDefinition( consumed_streams=[input_stream.element_id] ).add_output_data_stream(output_stream) super().__init__(function_definition=function_definition) def onServiceStarted(self, context: FunctionContext): pass def onEvent(self, event: Dict[str, Any], streamId: str): output = { \"number\": 1 } self.add_output( stream_id=self.function_definition.get_output_stream_ids()[0], event=output ) def onServiceStopped(self): pass In\u00a0[6]: Copied! <pre>stream = [stream for stream in client.dataStreamApi.all() if stream.name == \"demo\"][0]\n\nsimple_function = SimpleFunction(input_stream=stream)\n\nregistration = Registration()\nregistration.register(simple_function)\n\nfunction_handler = FunctionHandler(registration, client)\nfunction_handler.initializeFunctions()\n</pre> stream = [stream for stream in client.dataStreamApi.all() if stream.name == \"demo\"][0] simple_function = SimpleFunction(input_stream=stream) registration = Registration() registration.register(simple_function) function_handler = FunctionHandler(registration, client) function_handler.initializeFunctions() <pre>2024-07-30 12:44:25,052 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-07-30 12:44:25,150 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-07-30 12:44:25,150 - streampipes.functions.function_handler - [INFO] - [function_handler.py:84] [initializeFunctions] - Using output data stream 'example-stream' for function '0e4287a7-6936-4fcb-9de4-8d29a7b6c1c6'\n2024-07-30 12:44:25,229 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-07-30 12:44:25,230 - streampipes.functions.function_handler - [INFO] - [function_handler.py:100] [initializeFunctions] - Using KafkaConsumer for SimpleFunction\n</pre> <pre>2024-07-30 12:44:25,247 - streampipes.functions.broker.kafka.kafka_publisher - [INFO] - [kafka_publisher.py:49] [_make_connection] - Connecting to Kafka at localhost:9094\n2024-07-30 12:44:25,250 - streampipes.functions.broker.kafka.kafka_consumer - [INFO] - [kafka_consumer.py:52] [_make_connection] - Connecting to Kafka at localhost:9094\n2024-07-30 12:44:25,251 - streampipes.functions.broker.kafka.kafka_consumer - [INFO] - [kafka_consumer.py:62] [_create_subscription] - Subscribing to stream: sp:spdatastream:PIgznU\n2024-07-30 12:46:12,229 - streampipes.functions.broker.kafka.kafka_publisher - [INFO] - [kafka_publisher.py:73] [disconnect] - Stopped connection to stream: example-stream\n</pre> <p>If we now go into StreamPipes, create a new pipeline and view the info for our output stream we can see the live predictions coming in.</p> <p></p> <p>To stop the function we call the function handler's <code>disconnect</code> method:</p> In\u00a0[7]: Copied! <pre>function_handler.disconnect()\n</pre> function_handler.disconnect() <pre>2024-07-30 12:46:12,171 - streampipes.functions.broker.kafka.kafka_consumer - [INFO] - [kafka_consumer.py:72] [disconnect] - Stopped connection to stream: sp:spdatastream:PIgznU\n</pre> <p>In conclusion, this tutorial has successfully demonstrated how to generate output streams using a StreamPipes Function. We hope you found this tutorial helpful and would appreciate your feedback. Please visit our GitHub discussion page to share your impressions. We promise to read and respond to every comment!</p>"},{"location":"tutorials/6-streampipes-function-output-stream/#Creating-Output-Streams-with-StreamPipes-Functions","title":"Creating Output Streams with StreamPipes Functions\u00b6","text":""},{"location":"tutorials/6-streampipes-function-output-stream/#Connecting-to-your-StreamPipes-instance","title":"Connecting to your StreamPipes instance\u00b6","text":"<p>In order to receive and send live data from and to StreamPipes you will first have to connect to your instance by creating a StreamPipes Client by following the usual procedure. In this case we will be connecting to a local instance using Kafka. If you haven't already, you will need to open the kafka port manually inside the docker compose file by adding the following The following port mapping inside the <code>kafka</code> node:</p> <pre><code>yml\nports:\n - \"9094:9094\"\n</code></pre>"},{"location":"tutorials/6-streampipes-function-output-stream/#Creating-an-output-stream","title":"Creating an output stream\u00b6","text":"<p>You can create an output stream by using the <code>create_data_stream</code> method inside the functions <code>init</code> method. You need to specify the name that will be used to display the stream in StreamPipes alongside its <code>stream_id</code>, <code>attributes</code>, and the <code>broker</code>.</p>"},{"location":"tutorials/6-streampipes-function-output-stream/#Creating-the-StreamPipes-Function","title":"Creating the StreamPipes Function\u00b6","text":"<p>The code below shows an example function and also demonstrates how to include the output stream creation.</p>"},{"location":"tutorials/6-streampipes-function-output-stream/#Instantiating-and-starting-the-function","title":"Instantiating and starting the function\u00b6","text":"<p>To instantiate the function we pass the required input stream, then we register the function using an instance of the class <code>Registration</code> after which we can use the function handler to initialize all registered functions using the client. In this case, our input stream is named 'demo'. You will need to replace this name with the name of the input stream you wish to use.</p>"}]}
\ No newline at end of file
+{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"\ud83c\udfe1 Home","text":"StreamPipes is a self-service (Industrial) IoT toolbox to enable non-technical users to connect, analyze and explore IoT data streams. Apache StreamPipes for Python \ud83d\udc0d <p> Apache StreamPipes meets Python! We are working highly motivated on a Python library to interact with StreamPipes. In this way, we would like to unite the power of StreamPipes to easily connect to and read from different data sources, especially in the IoT domain, and the amazing universe of data analytics libraries in Python. </p>"},{"location":"#quickstart","title":"\u26a1\ufe0f Quickstart","text":"<p>As a quick example, we demonstrate how to set up and configure a StreamPipes client. In addition, we will get the available data lake measures out of StreamPipes.</p> <p><pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nconfig = StreamPipesClientConfig(\n credential_provider = StreamPipesApiKeyCredentials(\n username = \"test@streampipes.apache.org\",\n api_key = \"DEMO-KEY\",\n ),\n host_address = \"localhost\",\n https_disabled = True,\n port = 80\n)\n\nclient = StreamPipesClient(client_config=config)\n\n# get all available datat lake measures\nmeasures = client.dataLakeMeasureApi.all()\n\n# get amount of retrieved measures\nlen(measures)\n</code></pre> Output: <pre><code>1\n</code></pre> </p> <pre><code># inspect the data lake measures as pandas dataframe\nmeasures.to_pandas()\n</code></pre> <p>Output: <pre><code>measure_name timestamp_field ... pipeline_is_running num_event_properties\n0 test s0::timestamp ... False 2\n[1 rows x 6 columns]\n</code></pre> Alternatively, you can provide your credentials via environment variables. Simply define your credential provider as follows:</p> <p><pre><code>from streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nStreamPipesApiKeyCredentials()\n</code></pre> This requires to set the following environment variables: <code>SP_API_KEY</code> and <code>SP_USERNAME</code> </p> <p><code>username</code> is always the username that is used to log in into StreamPipes. </p> How to get your StreamPipes API key <p>The <code>api_key</code> can be generated within the UI as demonstrated below: </p> <p></p>"},{"location":"getting-started/developing/","title":"Developing & Contributing","text":""},{"location":"getting-started/developing/#development-guide","title":"\ud83d\udcd6 Development Guide","text":"<p>This document describes how to easily set up your local dev environment to work on StreamPipes Python \ud83d\udc0d. </p>"},{"location":"getting-started/developing/#first-steps","title":"\ud83d\ude80 First Steps","text":"<p>1) Set up your Python environment</p> <p>Create a virtual Python environment using a tool of your choice. To manage dependencies, we use Poetry, so please install poetry in your local environment, e.g. via <pre><code>pip install poetry\n</code></pre></p> <p>Once poetry is installed you can simply finalize your Python environment by running:</p> <pre><code>poetry install --with dev,stubs # install everything that is required for the development\npoetry install --with docs # install everything to work with the documentation\npoetry install --with dev,stubs,docs # install all optional dependencies related to development\n</code></pre> <p></p> <p>2) Install pre-commit hook</p> <p>The pre-commit hook is run before every commit and takes care about code style, linting, type hints, import sorting, etc. It will stop your commit in case the changes do not apply the expected format. Always check to have the recent version of the pre-commit hook installed otherwise the CI build might fail. If you are interested, you can have a deeper look on the underlying library: pre-commit.</p> <p><pre><code>pre-commit install\n</code></pre> The definition of the pre-commit hook can be found in .pre-commit-config.yaml.</p> <p></p>"},{"location":"getting-started/developing/#conventions","title":"\ud83d\udc4f Conventions","text":"<p>Below we list some conventions that we have agreed on for creating StreamPipes Python. Please comply to them when you plan to contribute to this project. If you have any other suggestions or would like to discuss them, we would be happy to hear from you on our mailing list dev@streampipes.apache.org or in our discussions on GitHub.</p> <p>1) Use <code>numpy</code> style for Python docstrings \ud83d\udcc4 Please stick to the <code>numpy</code> style when writing docstrings, as we require this for generating our documentation.</p> <p>2) Provide tests \u2705 We are aiming for broad test coverage for the Python package and have therefore set a requirement of at least 90% unit test coverage. Therefore, please remember to write (unit) tests already during development. If you have problems with writing tests, don't hesitate to ask us for help directly in the PR or even before that via our mailing list (see above).</p> <p>3) Build a similar API as the Java client provides \ud83d\udd04 Whenever possible, please try to develop the API of the Python library the same as the Java client or Java SDK. By doing so, we would like to provide a consistent developer experience and the basis for automated testing in the future.</p>"},{"location":"getting-started/developing/#dependency-management","title":"\ud83d\udce6 Dependency Management","text":"<p>In case you want to add a new dependency to StreamPipes you can use the following command: <pre><code>poetry add <dep-name>\n</code></pre></p> <p>If the dependency is only required for development purpose or the documentation, please stick to one the following: <pre><code>poetry add <dep-name> --group dev\npoetry add <dep-name> --group stubs\npoetry add <dep-name> --group docs\n</code></pre></p> <p>In case you want to regenerate the poetry lock file, e.g., in case you manually updated the <code>pyproject.toml</code>, the following command should be used: <pre><code>poetry lock --no-update\n</code></pre></p> <p>After that, you should install the current version of the poetry lock file to keep your local environment consistent (see command above.)</p>"},{"location":"getting-started/developing/#documentation","title":"\ud83d\udcdaDocumentation","text":"<p>To build our documentation, we use Materials for MkDocs. All files can be found within the <code>docs</code> directory. To pre-view your local version of the documentation, you can use the following command: <pre><code>make livedoc\n</code></pre></p>"},{"location":"getting-started/developing/#roadmap","title":"\ud83d\ude80 Roadmap","text":"<p>Broadly speaking, we plan to expand or add new aspects/functionality to the library where we are focusing on the following:</p> <ul> <li>increase coverage of StreamPipes API \ud83d\udd17</li> <li>build a comprehensive function zoo \ud83d\udc18</li> <li>support more messaging broker \ud83d\udcec</li> <li>possibility to build pipeline elements \ud83d\udd27</li> </ul> <p>In case you want to have a more detailed look on what we are currently planning, have a look at our open issues(more short-term driven).</p> <p>Of course, contributions are always highly appreciated \ud83d\udd2e</p> <p>Stay tuned!</p>"},{"location":"getting-started/developing/#contributing","title":"\ud83d\udc68\u200d\ud83d\udcbb Contributing","text":"<p>Before opening a pull request, review the Get Involved page. It lists information that is required for contributing to StreamPipes.</p> <p>When you contribute code, you affirm that the contribution is your original work and that you license the work to the project under the project's open source license. Whether or not you state this explicitly, by submitting any copyrighted material via pull request, email, or other means you agree to license the material under the project's open source license and warrant that you have the legal authority to do so.</p>"},{"location":"getting-started/first-steps/","title":"First Steps","text":""},{"location":"getting-started/first-steps/#installation","title":"\ud83d\udcda Installation","text":"<p>The StreamPipes Python library is meant to work with Python 3.8 and above. Installation can be done via <code>pip</code>: You can install the latest development version from GitHub, as so:</p> <pre><code>pip install streampipes\n\n# if you want to have the current development state you can also execute\npip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python\n# the corresponding documentation can be found here: https://streampipes.apache.org/docs/docs/python/dev/\n</code></pre>"},{"location":"getting-started/first-steps/#setting-up-streampipes","title":"\u2b06\ufe0f Setting up StreamPipes","text":"<p>When working with the StreamPipes Python library it is inevitable to have a running StreamPipes instance to connect and interact with. In case you don't have a running instance at hand, you can easily set up one on your local machine. Hereby you need to consider that StreamPipes supports different message broker (e.g., Kafka, NATS). We will demonstrate below how you can easily set up StreamPipes for both supported message brokers. </p>"},{"location":"getting-started/first-steps/#start-streampipes-via-docker-compose","title":"\ud83d\udc33 Start StreamPipes via Docker Compose","text":"<p>The easiest and therefore recommend way to get StreamPipes started is by using docker compose. Therefore, you need Docker running. You can check if Docker is ready on your machine by executing. <pre><code>docker ps\n</code></pre> If this results in an output similar to the following, Docker is ready to continue. <pre><code>CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n... ... ... ... ... ... ...\n</code></pre> Otherwise, you need to start docker first. Please read the full guide on how to start StreamPipes with <code>docker compose</code> here.</p>"},{"location":"getting-started/first-steps/#setup-streampipes-with-nats-as-message-broker","title":"Setup StreamPipes with NATS as message broker","text":"<p>The following shows how you can set up a StreamPipes instance that uses NATS as messaging layer. So in this scenario, we will go with <code>docker-compose.nats.yml</code>. Thereby, when running locally, we need to add the following port mapping entry to <code>services.nats.ports</code>: <pre><code>- 4222:4222\n</code></pre></p> <p>After this modification is applied, StreamPipes can simply be started with this command: <pre><code>docker-compose -f docker-compose.nats.yml up -d\n</code></pre></p> <p>Once all services are started, you can access StreamPipes via <code>http://localhost</code>.</p>"},{"location":"getting-started/first-steps/#setup-streampipes-with-kafka-as-message-broker","title":"Setup StreamPipes with Kafka as message broker","text":"<p>Alternatively, you can use <code>docker-compose.yml</code> to start StreamPipes with Kafka as messaging layer. When running locally we have to modify <code>services.kafka.environment</code> and add the ports to <code>services.kafka.ports</code>: <pre><code>environment:\nKAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,OUTSIDE:PLAINTEXT\nKAFKA_ADVERTISED_LISTENERS: PLAINTEXT://:9092,OUTSIDE://localhost:9094\nKAFKA_LISTENERS: PLAINTEXT://:9092,OUTSIDE://:9094\n...\nports:\n- 9094:9094\n</code></pre> Then, you need to execute the following command: <pre><code>docker-compose -f docker-compose.yml up -d\n</code></pre></p> <p>Once all services are started, you can access StreamPipes via <code>http://localhost</code>.</p> <p>In case you want to have more control over your StreamPipes setup, you might take a look at our deployment CLI.</p> <p>Have fun discovering StreamPipes and our Python library \ud83d\ude80</p>"},{"location":"getting-started/quickstart/","title":"Quickstart","text":""},{"location":"getting-started/quickstart/#quickstart","title":"\u26a1\ufe0f Quickstart","text":"<p>As a quick example, we demonstrate how to set up and configure a StreamPipes client. In addition, we will get the available data lake measures out of StreamPipes.</p> <p><pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nconfig = StreamPipesClientConfig(\n credential_provider = StreamPipesApiKeyCredentials(\n username = \"test@streampipes.apache.org\",\n api_key = \"DEMO-KEY\",\n ),\n host_address = \"localhost\",\n https_disabled = True,\n port = 80\n)\n\nclient = StreamPipesClient(client_config=config)\n\n# get all available datat lake measures\nmeasures = client.dataLakeMeasureApi.all()\n\n# get amount of retrieved measures\nlen(measures)\n</code></pre> Output: <pre><code>1\n</code></pre> </p> <pre><code># inspect the data lake measures as pandas dataframe\nmeasures.to_pandas()\n</code></pre> <p>Output: <pre><code>measure_name timestamp_field ... pipeline_is_running num_event_properties\n0 test s0::timestamp ... False 2\n[1 rows x 6 columns]\n</code></pre> Alternatively, you can provide your credentials via environment variables. Simply define your credential provider as follows:</p> <p><pre><code>from streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nStreamPipesApiKeyCredentials()\n</code></pre> This requires to set the following environment variables: <code>SP_API_KEY</code> and <code>SP_USERNAME</code> </p> <p><code>username</code> is always the username that is used to log in into StreamPipes. The <code>api_key</code> can be generated within the UI as demonstrated below:</p> <p></p>"},{"location":"reference/client/client/","title":"Client","text":"<p>Implementation of the StreamPipes client. The client is designed as the central point of interaction with the StreamPipes API and provides all functionalities to communicate with the API.</p>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient","title":"<code>StreamPipesClient(client_config, logging_level=logging.INFO)</code>","text":"<p>The client to connect to StreamPipes.</p> <p>This is the central point of contact with StreamPipes and provides all the functionalities to interact with it.</p> <p>The client provides so-called \"endpoints\" each of which refers to an endpoint of the StreamPipes API, e.g. <code>.dataLakeMeasureApi</code>. An endpoint provides the actual methods to interact with StreamPipes API.</p> PARAMETER DESCRIPTION <code>client_config</code> <p>Configures the client to connect properly to the StreamPipes instance.</p> <p> TYPE: <code>StreamPipesClientConfig</code> </p> <code>logging_level</code> <p>Influences the log messages emitted by the <code>StreamPipesClient</code></p> <p> TYPE: <code>Optional[int]</code> DEFAULT: <code>INFO</code> </p> ATTRIBUTE DESCRIPTION <code>dataLakeMeasureApi</code> <p>Instance of the data lake measure endpoint</p> <p> TYPE: <code>DataLakeMeasureEndpoint</code> </p> <code>dataStreamApi</code> <p>Instance of the data stream endpoint</p> <p> TYPE: <code>DataStreamEndpoint</code> </p> RAISES DESCRIPTION <code>AttributeError:</code> <p>In case an invalid configuration of the <code>StreamPipesClientConfig</code> is passed</p> <p>Examples:</p> <pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</code></pre> <pre><code>client_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(\n username=\"test-user\",\n api_key=\"api-key\"\n ),\n host_address=\"localhost\",\n https_disabled=True\n)\n</code></pre> <p>The following way of instantiating a client instance is intended to be consistent with the StreamPipes Java client. <pre><code>client = StreamPipesClient.create(client_config=client_config)\n</code></pre></p> <p>If you prefer a more pythonic way, you can simply write: <pre><code>client = StreamPipesClient(client_config=client_config)\n</code></pre></p> <p>To interact with an endpoint: <pre><code>data_lake_measures = client.dataLakeMeasureApi.all()\n</code></pre></p> <p>To inspect returned data as a pandas dataframe: <pre><code>data_lake_measures.to_pandas()\n#\n# measure_name timestamp_field ... pipeline_is_running num_event_properties\n# 0 test s0::timestamp ... False 2\n# [1 rows x 6 columns]\n</code></pre></p>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient.base_api_path","title":"<code>base_api_path: str</code> <code>property</code>","text":"<p>Constructs the basic API URL from the given <code>client_config</code>.</p> RETURNS DESCRIPTION <code>base_api_path</code> <p>basic API path of the connected StreamPipes instance</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient.http_headers","title":"<code>http_headers: Dict[str, str]</code> <code>property</code>","text":"<p>Returns the HTTP headers used for all requests.</p> <p>The HTTP headers are composed of the authentication headers supplied by the credential provider and additional required headers (currently this is only the application header).</p> RETURNS DESCRIPTION <code>http_headers</code> <p>Header information for HTTP requests as string key-value pairs.</p> <p> TYPE: <code>Dict[str, str]</code> </p>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient.create","title":"<code>create(client_config, logging_level=logging.INFO)</code> <code>classmethod</code>","text":"<p>Returns an instance of the <code>StreamPipesPythonClient</code>.</p> <p>Provides consistency to the StreamPipes Java client.</p> PARAMETER DESCRIPTION <code>client_config</code> <p>Configures the client to connect properly to the StreamPipes instance.</p> <p> TYPE: <code>StreamPipesClientConfig</code> </p> <code>logging_level</code> <p>Influences the log messages emitted by the <code>StreamPipesClient</code>.</p> <p> TYPE: <code>int</code> DEFAULT: <code>INFO</code> </p> RETURNS DESCRIPTION <code>StreamPipesClient</code>"},{"location":"reference/client/client/#streampipes.client.client.StreamPipesClient.describe","title":"<code>describe()</code>","text":"<p>Prints a short description of the connected StreamPipes instance and the available resources to the console.</p> RETURNS DESCRIPTION <code> None</code> <p>Examples:</p> <p><pre><code>client.describe()\n</code></pre> Output: <pre><code>Hi there!\nYou are connected to a StreamPipes instance running at http://localhost:80.\nThe following StreamPipes resources are available with this client:\n6x DataStreams\n1x DataLakeMeasures\n</code></pre></p>"},{"location":"reference/client/config/","title":"Config","text":"<p>Configuration class for the StreamPipes client.</p>"},{"location":"reference/client/config/#streampipes.client.config.StreamPipesClientConfig","title":"<code>StreamPipesClientConfig(credential_provider, host_address, https_disabled=False, port=80, additional_headers=dict())</code> <code>dataclass</code>","text":"<p>Configure the StreamPipes client in accordance to the actual StreamPipes instance to connect to.</p> <p>An instance is provided to the <code>StreamPipesClient</code> to configure it properly.</p> PARAMETER DESCRIPTION <code>credential_provider</code> <p>Provides the credentials to authenticate with the StreamPipes API.</p> <p> TYPE: <code>CredentialProvider</code> </p> <code>host_address</code> <p>Host address of the StreamPipes instance to connect to. Should be provided without the protocol/scheme, e.g. as <code>localhost</code> or <code>streampipes.xyz</code>.</p> <p> TYPE: <code>str</code> </p> <code>https_disabled</code> <p>Determines whether https is used to connect to StreamPipes.</p> <p> TYPE: <code>Optional[bool]</code> DEFAULT: <code>False</code> </p> <code>port</code> <p>Specifies the port under which the StreamPipes API is available, e.g., <code>80</code> (with http) or <code>443</code> (with https)</p> <p> TYPE: <code>Optional[int]</code> DEFAULT: <code>80</code> </p> <code>additional_headers</code> <p>Specifies additional HTTP headers that should be sent with each request, e.g., proxy headers</p> <p> TYPE: <code>Optional[Dict[str, str]]</code> DEFAULT: <code>dict()</code> </p> <p>Examples:</p> <p>see StreamPipesClient</p>"},{"location":"reference/client/credential_provider/","title":"Credential provider","text":"<p>Implementation of credential providers. A credential provider supplies the specified sort of credentials in the appropriate HTTP header format. The headers are then used by the client to connect to StreamPipes.</p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.CredentialProvider","title":"<code>CredentialProvider</code>","text":"<p> Bases: <code>ABC</code></p> <p>Abstract implementation of a credential provider. Must be inherited by all credential providers.</p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.CredentialProvider.make_headers","title":"<code>make_headers(http_headers=None)</code>","text":"<p>Creates the HTTP headers for the specific credential provider.</p> <p>Concrete authentication headers must be defined in the implementation of a credential provider.</p> PARAMETER DESCRIPTION <code>http_headers</code> <p>Additional HTTP headers the generated headers are extended by.</p> <p> TYPE: <code>Optional[Dict[str, str]]</code> DEFAULT: <code>None</code> </p> RETURNS DESCRIPTION <code>https_headers</code> <p>Dictionary with header information as string key-value pairs. Contains all pairs given as parameter plus the header pairs for authentication determined by the credential provider.</p> <p> TYPE: <code>Dict[str, str]</code> </p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.StreamPipesApiKeyCredentials","title":"<code>StreamPipesApiKeyCredentials(username=None, api_key=None)</code>","text":"<p> Bases: <code>CredentialProvider</code></p> <p>A credential provider that allows authentication via a StreamPipes API Token.</p> <p>The required token can be generated via the StreamPipes UI (see the description on our start-page.</p> <p>Both parameters can either be passed as arguments or remain unset. If they are not passed, they are retrieved from environment variables:</p> <ul> <li><code>SP_USERNAME</code> is expected to contain the username</li> <li><code>SP_API_KEY</code> is expected to contain the API key</li> </ul> PARAMETER DESCRIPTION <code>username</code> <p>The username to which the API token is granted, e.g., <code>demo-user@streampipes.apche.org</code>. If not passed, the username is retrieved from environment variable <code>SP_USERNAME</code>.</p> <p> TYPE: <code>Optional[str]</code> DEFAULT: <code>None</code> </p> <code>api_key</code> <p>The StreamPipes API key as it is displayed in the UI. If not passed, the api key is retrieved from environment variable <code>SP_API_KEY</code></p> <p> TYPE: <code>Optional[str]</code> DEFAULT: <code>None</code> </p> <p>Examples:</p> <p>see StreamPipesClient</p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.StreamPipesApiKeyCredentials.from_env","title":"<code>from_env(username_env, api_key_env)</code> <code>classmethod</code>","text":"<p>DEPRECATED - use the class constructor instead</p> <p>Returns an API key provider parameterized via environment variables.</p> PARAMETER DESCRIPTION <code>username_env</code> <p>Name of the environment variable that contains the username</p> <p> TYPE: <code>str</code> </p> <code>api_key_env</code> <p>Name of the environment variable that contains the API key</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>StreamPipesApiKeyCredentials</code> RAISES DESCRIPTION <code>KeyError</code> <p>If one of the environment variables is not defined</p>"},{"location":"reference/client/credential_provider/#streampipes.client.credential_provider.StreamPipesApiKeyCredentials.make_headers","title":"<code>make_headers(http_headers=None)</code>","text":"<p>Creates the HTTP headers for the specific credential provider.</p> <p>Concrete authentication headers must be defined in the implementation of a credential provider.</p> PARAMETER DESCRIPTION <code>http_headers</code> <p>Additional HTTP headers the generated headers are extended by.</p> <p> TYPE: <code>Optional[Dict[str, str]]</code> DEFAULT: <code>None</code> </p> RETURNS DESCRIPTION <code>https_headers</code> <p>Dictionary with header information as string key-value pairs. Contains all pairs given as parameter plus the header pairs for authentication determined by the credential provider.</p> <p> TYPE: <code>Dict[str, str]</code> </p>"},{"location":"reference/endpoint/endpoint/","title":"Endpoint","text":"<p>General implementation for an endpoint. Provided classes and assets are aimed to be used for developing endpoints. An endpoint provides all options to communicate with a dedicated part of StreamPipes in a handy way.</p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint","title":"<code>APIEndpoint(parent_client)</code>","text":"<p> Bases: <code>Endpoint</code></p> <p>Abstract implementation of an API endpoint.</p> <p>Serves as template for all endpoints of the StreamPipes API. By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint.all","title":"<code>all()</code>","text":"<p>Get all resources of this endpoint provided by the StreamPipes API.</p> <p>Results are provided as an instance of a <code>ResourceContainer</code> that allows to handle the returned resources in a comfortable and pythonic way.</p> RETURNS DESCRIPTION <code>container</code> <p>Container element that bundles the returned resources</p> <p> TYPE: <code>ResourceContainer</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint.build_url","title":"<code>build_url()</code>","text":"<p>Builds the endpoint's URL of the API path.</p> RETURNS DESCRIPTION <code>url</code> <p>The URL of the endpoint</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint.get","title":"<code>get(identifier, **kwargs)</code>","text":"<p>Queries the specified resource from the API endpoint.</p> PARAMETER DESCRIPTION <code>identifier</code> <p>The identifier of the resource to be queried.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The specified resource as an instance of the corresponding model class.</p> <p> TYPE: <code>Resource</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.APIEndpoint.post","title":"<code>post(resource)</code>","text":"<p>Allows to post a resource to the StreamPipes API.</p> PARAMETER DESCRIPTION <code>resource</code> <p>The resource to be posted.</p> <p> TYPE: <code>Resource</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.Endpoint","title":"<code>Endpoint(parent_client)</code>","text":"<p> Bases: <code>ABC</code></p> <p>Abstract implementation of a StreamPipes endpoint.</p> <p>Serves as template for all endpoints used for interaction with a StreamPipes instance. By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p> PARAMETER DESCRIPTION <code>parent_client</code> <p>This parameter expects the instance of <code>StreamPipesClient</code> the endpoint is attached to.</p> <p> TYPE: <code>StreamPipesClient</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.MessagingEndpoint","title":"<code>MessagingEndpoint(parent_client)</code>","text":"<p> Bases: <code>Endpoint</code></p> <p>Abstract implementation of a StreamPipes messaging endpoint.</p> <p>Serves as template for all endpoints used for interacting with the StreamPipes messaging layer directly. Therefore, they need to provide the functionality to talk with the broker system running in StreamPipes. By design, endpoints are only instantiated within the <code>__init__</code> method of the StreamPipesClient.</p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.MessagingEndpoint.broker","title":"<code>broker: Broker</code> <code>property</code> <code>writable</code>","text":"<p>Defines the broker instance that is used to connect to StreamPipes' messaging layer.</p> <p>This instance enables the client to authenticate to the broker used in the target StreamPipes instance, to consume messages from and to write messages to the broker.</p> RAISES DESCRIPTION <code>MessagingEndpointNotConfiguredError</code> <p>If the endpoint is used before the broker instance is set via <code>configure()</code></p> RETURNS DESCRIPTION <code>broker</code> <p>The broker instance to be used to communicate with StreamPipes' messaging layer.</p> <p> TYPE: <code>Broker</code> </p>"},{"location":"reference/endpoint/endpoint/#streampipes.endpoint.endpoint.MessagingEndpoint.configure","title":"<code>configure(broker)</code>","text":"<p>Configures the message endpoint by setting the broker instance to be used.</p> <p>This configuration step is required before the endpoint can be actually used. The based <code>broker</code> instance is passed to an internal property.</p> PARAMETER DESCRIPTION <code>broker</code> <p>Broker instance that should be used for this endpoint</p> <p> TYPE: <code>Broker</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/endpoint/exceptions/","title":"Exceptions","text":"<p>Custom exceptions dedicated to the endpoints module.</p>"},{"location":"reference/endpoint/exceptions/#streampipes.endpoint.exceptions.MessagingEndpointNotConfiguredError","title":"<code>MessagingEndpointNotConfiguredError(endpoint_name)</code>","text":"<p> Bases: <code>Exception</code></p> <p>Exception that indicates that an instance of a messaging endpoint has not been configured.</p> <p>This error occurs when an instance of a messaging endpoint is used before the broker instance to be used is configured by passing it to the <code>configure()</code> method.</p> PARAMETER DESCRIPTION <code>endpoint_name</code> <p>The name of the endpoint that caused the error</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/","title":"Data lake measure","text":"<p>Specific implementation of the StreamPipes API's data lake measure endpoints. This endpoint allows to consume data stored in StreamPipes' data lake.</p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint","title":"<code>DataLakeMeasureEndpoint(parent_client)</code>","text":"<p> Bases: <code>APIEndpoint</code></p> <p>Implementation of the DataLakeMeasure endpoint.</p> <p>This endpoint provides an interface to all data stored in the StreamPipes data lake.</p> <p>Consequently, it allows querying metadata about available data sets (see <code>all()</code> method). The metadata is returned as an instance of <code>DataLakeMeasures</code>.</p> <p>In addition, the endpoint provides direct access to the data stored in the data laka by querying a specific data lake measure using the <code>get()</code> method.</p> <p>Examples:</p> <pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</code></pre> <pre><code>client_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(username=\"test-user\", api_key=\"api-key\"),\n host_address=\"localhost\",\n port=8082,\n https_disabled=True\n)\nclient = StreamPipesClient.create(client_config=client_config)\n</code></pre> <p><pre><code># get all existing data lake measures from StreamPipes\ndata_lake_measures = client.dataLakeMeasureApi.all()\n\n# let's take a look how many we got\nlen(data_lake_measures)\n</code></pre> <pre><code>5\n</code></pre></p> <p><pre><code># Retrieve a specific data lake measure as a pandas DataFrame\nflow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\").to_pandas()\nflow_rate_pd\n</code></pre> <pre><code> time density mass_flow sensorId sensor_fault_flags temperature volume_flow\n0 2023-02-24T16:19:41.472Z 50.872730 3.309556 flowrate02 False 44.448483 5.793138\n1 2023-02-24T16:19:41.482Z 47.186588 5.608580 flowrate02 False 40.322033 0.058015\n2 2023-02-24T16:19:41.493Z 46.735321 7.692881 flowrate02 False 49.239639 10.283526\n3 2023-02-24T16:19:41.503Z 40.169796 3.632898 flowrate02 False 49.933754 6.893441\n4 2023-02-24T16:19:41.513Z 49.635124 0.711260 flowrate02 False 50.106617 2.999871\n.. ... ... ... ... ... ... ...\n995 2023-02-24T16:19:52.927Z 50.057495 1.740114 flowrate02 False 46.558231 1.818237\n996 2023-02-24T16:19:52.94Z 41.038895 7.211723 flowrate02 False 48.048622 2.127493\n997 2023-02-24T16:19:52.952Z 45.837013 7.770180 flowrate02 False 48.188026 7.892062\n998 2023-02-24T16:19:52.965Z 43.389065 4.458602 flowrate02 False 48.280899 5.733892\n999 2023-02-24T16:19:52.977Z 44.056030 2.592060 flowrate02 False 47.505951 4.260697\n</code></pre></p> <p>As you can see, the returned amount of rows per default is <code>1000</code>. We can modify this behavior by passing the <code>limit</code> paramter. <pre><code>flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", limit=10).to_pandas()\nlen(flow_rate_pd)\n</code></pre> <pre><code>10\n</code></pre></p> <p>If we are only interested in the values for <code>density</code>, <code>columns</code> allows us to select the columns to be returned: <pre><code>flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", columns='density', limit=3).to_pandas()\nflow_rate_pd\n</code></pre> <pre><code> time density\n0 2023-02-24T16:19:41.472Z 50.872730\n1 2023-02-24T16:19:41.482Z 47.186588\n2 2023-02-24T16:19:41.493Z 46.735321\n</code></pre></p> <p>This is only a subset of the available query parameters, find them at MeasurementGetQueryConfig.</p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.all","title":"<code>all()</code>","text":"<p>Get all resources of this endpoint provided by the StreamPipes API.</p> <p>Results are provided as an instance of a <code>ResourceContainer</code> that allows to handle the returned resources in a comfortable and pythonic way.</p> RETURNS DESCRIPTION <code>container</code> <p>Container element that bundles the returned resources</p> <p> TYPE: <code>ResourceContainer</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.build_url","title":"<code>build_url()</code>","text":"<p>Builds the endpoint's URL of the API path.</p> RETURNS DESCRIPTION <code>url</code> <p>The URL of the endpoint</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.get","title":"<code>get(identifier, **kwargs)</code>","text":"<p>Queries the specified data lake measure from the API.</p> <p>By default, the maximum number of returned records is 1000. This behaviour can be influenced by passing the parameter <code>limit</code> with a different value (see MeasurementGetQueryConfig).</p> PARAMETER DESCRIPTION <code>identifier</code> <p>The identifier of the data lake measure to be queried.</p> <p> TYPE: <code>str</code> </p> <code>**kwargs</code> <p>Keyword arguments can be used to provide additional query parameters. The available query parameters are defined by the MeasurementGetQueryConfig.</p> <p> TYPE: <code>Optional[Dict[str, Any]]</code> DEFAULT: <code>{}</code> </p> RETURNS DESCRIPTION <code>measurement</code> <p>The specified data lake measure</p> <p> TYPE: <code>QueryResult</code> </p> <p>Examples:</p> <p>see directly at DataLakeMeasureEndpoint.</p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.DataLakeMeasureEndpoint.post","title":"<code>post(resource)</code>","text":"<p>Allows to post a resource to the StreamPipes API.</p> PARAMETER DESCRIPTION <code>resource</code> <p>The resource to be posted.</p> <p> TYPE: <code>Resource</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig","title":"<code>MeasurementGetQueryConfig</code>","text":"<p> Bases: <code>BaseModel</code></p> <p>Config class describing the parameters of the <code>get()</code> method for measurements.</p> <p>This config class is used to validate the provided query parameters for the GET endpoint of measurements. Additionally, it takes care of the conversion to a proper HTTP query string. Thereby, parameter names are adapted to the naming of the StreamPipes API, for which Pydantic aliases are used.</p> ATTRIBUTE DESCRIPTION <code>columns</code> <p>A comma separated list of column names (e.g., <code>time,value</code>) If provided, the returned data only consists of the given columns. Please be aware that the column <code>time</code> as an index is always included.</p> <p> TYPE: <code>Optional[List[str]]</code> </p> <code>end_date</code> <p>Limits the queried data to only include data that is older than the specified time. In other words, any data that occurred after the end_date will not be included in the query results.</p> <p> TYPE: <code>Optional[datetime]</code> </p> <code>limit</code> <p>Amount of records returned at maximum (default: <code>1000</code>) This needs to be at least <code>1</code></p> <p> TYPE: <code>Optional[int]</code> </p> <code>offset</code> <p>Offset to be applied to returned data This needs to be at least <code>0</code></p> <p> TYPE: <code>Optional[int]</code> </p> <code>order</code> <p>Ordering of query results Allowed values: <code>ASC</code> and <code>DESC</code> (default: <code>ASC</code>)</p> <p> TYPE: <code>Optional[str]</code> </p> <code>page_no</code> <p>Page number used for paging operation This needs to be at least <code>1</code></p> <p> TYPE: <code>Optional[int]</code> </p> <code>start_date</code> <p>Limits the queried data to only include data that is newer than the specified time. In other words, any data that occurred before the start_date will not be included in the query results.</p> <p> TYPE: <code>Optional[datetime]</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.Config","title":"<code>Config</code>","text":"<p>Pydantic Config class</p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.MeasurementGetQueryConfig.build_query_string","title":"<code>build_query_string()</code>","text":"<p>Builds a HTTP query string for the config.</p> <p>This method returns an HTTP query string for the invoking config. It follows the following structure <code>?param1=value1&param2=value2...</code>. This query string is not an entire URL, instead it needs to appended to an API path.</p> RETURNS DESCRIPTION <code>query_param_string</code> <p>HTTP query params string (<code>?param1=value1&param2=value2...</code>)</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/data_lake_measure/#streampipes.endpoint.api.data_lake_measure.StreamPipesQueryValidationError","title":"<code>StreamPipesQueryValidationError</code>","text":"<p> Bases: <code>Exception</code></p> <p>A custom exception to be raised when the validation of query parameter causes an error.</p>"},{"location":"reference/endpoint/api/data_stream/","title":"Data stream","text":"<p>Specific implementation of the StreamPipes API's data stream endpoints.</p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint","title":"<code>DataStreamEndpoint(parent_client)</code>","text":"<p> Bases: <code>APIEndpoint</code></p> <p>Implementation of the DataStream endpoint.</p> <p>Consequently, it allows querying metadata about available data streams (see <code>all()</code> method). The metadata is returned as an instance of <code>DataStreams</code>.</p> <p>Examples:</p> <pre><code>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nclient_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(username=\"test-user\", api_key=\"api-key\"),\n host_address=\"localhost\",\n port=8082,\n https_disabled=True\n)\nclient = StreamPipesClient.create(client_config=client_config)\n</code></pre> <p><pre><code># let's get all existing data streams in StreamPipes\ndata_streams = client.dataStreamApi.all()\nlen(data_streams)\n</code></pre> <pre><code>2\n</code></pre></p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint.all","title":"<code>all()</code>","text":"<p>Get all resources of this endpoint provided by the StreamPipes API.</p> <p>Results are provided as an instance of a <code>ResourceContainer</code> that allows to handle the returned resources in a comfortable and pythonic way.</p> RETURNS DESCRIPTION <code>container</code> <p>Container element that bundles the returned resources</p> <p> TYPE: <code>ResourceContainer</code> </p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint.build_url","title":"<code>build_url()</code>","text":"<p>Builds the endpoint's URL of the API path.</p> RETURNS DESCRIPTION <code>url</code> <p>The URL of the endpoint</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint.get","title":"<code>get(identifier, **kwargs)</code>","text":"<p>Queries the specified resource from the API endpoint.</p> PARAMETER DESCRIPTION <code>identifier</code> <p>The identifier of the resource to be queried.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The specified resource as an instance of the corresponding model class.</p> <p> TYPE: <code>Resource</code> </p>"},{"location":"reference/endpoint/api/data_stream/#streampipes.endpoint.api.data_stream.DataStreamEndpoint.post","title":"<code>post(resource)</code>","text":"<p>Allows to post a resource to the StreamPipes API.</p> PARAMETER DESCRIPTION <code>resource</code> <p>The resource to be posted.</p> <p> TYPE: <code>Resource</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/endpoint/api/version/","title":"Version","text":"<p>Specific implementation of the StreamPipes API's version endpoint.</p>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint","title":"<code>VersionEndpoint(parent_client)</code>","text":"<p> Bases: <code>APIEndpoint</code></p> <p>Implementation of the Versions endpoint.</p> <p>This endpoint provides metadata about the StreamPipes version of the connected instance. It only allows to apply the <code>get()</code> method with an empty string as identifier.</p> PARAMETER DESCRIPTION <code>parent_client</code> <p>The instance of StreamPipesClient the endpoint is attached to.</p> <p> TYPE: <code>StreamPipesClient</code> </p> <p>Examples:</p> <pre><code>>>> from streampipes.client import StreamPipesClient\n>>> from streampipes.client.config import StreamPipesClientConfig\n>>> from streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</code></pre> <pre><code>>>> client_config = StreamPipesClientConfig(\n... credential_provider=StreamPipesApiKeyCredentials(username=\"test-user\", api_key=\"api-key\"),\n... host_address=\"localhost\",\n... port=8082,\n... https_disabled=True\n... )\n</code></pre> <pre><code>>>> client = StreamPipesClient.create(client_config=client_config)\n</code></pre> <pre><code>>>> client.versionApi.get(identifier=\"\").to_dict(use_source_names=False)\n{'backend_version': '0.92.0-SNAPSHOT'}\n</code></pre>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint.all","title":"<code>all()</code>","text":"<p>Usually, this method returns information about all resources provided by this endpoint. However, this endpoint does not support this kind of operation.</p> RAISES DESCRIPTION <code>NotImplementedError</code> <p>This endpoint does not return multiple entries, therefore this method is not available.</p>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint.build_url","title":"<code>build_url()</code>","text":"<p>Builds the endpoint's URL of the API path.</p> RETURNS DESCRIPTION <code>url</code> <p>The URL of the endpoint</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint.get","title":"<code>get(identifier, **kwargs)</code>","text":"<p>Queries the resource from the API endpoint.</p> <p>For this endpoint only one resource is available.</p> PARAMETER DESCRIPTION <code>identifier</code> <p>Not supported by this endpoint, is set to an empty string.</p> <p> TYPE: <code>str</code> </p> RAISES DESCRIPTION <code>ValueError</code> <p>Non-empty <code>identifier</code> is not supported by this endpoint. Please set <code>identifier</code> to an empty string or <code>None</code>.</p> RETURNS DESCRIPTION <code>versions</code> <p>The specified resource as an instance of the corresponding model class(Version). # noqa: 501</p> <p> TYPE: <code>Version</code> </p>"},{"location":"reference/endpoint/api/version/#streampipes.endpoint.api.version.VersionEndpoint.post","title":"<code>post(resource)</code>","text":"<p>Usually, this method allows to create via this endpoint. Since the data represented by this endpoint is immutable, it does not support this kind of operation.</p> RAISES DESCRIPTION <code>NotImplementedError</code> <p>This endpoint does not allow for POST requests, therefore this method is not available.</p>"},{"location":"reference/function_zoo/river_function/","title":"River function","text":""},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.OnlineML","title":"<code>OnlineML(client, stream_ids, model, prediction_type=RuntimeType.STRING.value, supervised=False, target_label=None, on_start=lambda self, context: None, on_event=lambda self, event, streamId: None, on_stop=lambda self: None)</code>","text":"<p>Wrapper class to enable an easy usage for Online Machine Learning models of the River library.</p> <p>It creates a StreamPipesFunction to train a model with the incoming events of a data stream and creates an output data stream that publishes the prediction to StreamPipes.</p> PARAMETER DESCRIPTION <code>client</code> <p>The client for the StreamPipes API.</p> <p> TYPE: <code>StreamPipesClient</code> </p> <code>stream_ids</code> <p>The ids of the data stream to train the model.</p> <p> TYPE: <code>List[str]</code> </p> <code>model</code> <p>The model to train. It meant to be a River model/pipeline, but can be every model with a 'learn_one' and 'predict_one' methode.</p> <p> TYPE: <code>Any</code> </p> <code>prediction_type</code> <p>The data type of the prediction. Is only needed when you continue to work with the prediction in StreamPipes.</p> <p> TYPE: <code>str</code> DEFAULT: <code>STRING.value</code> </p> <code>supervised</code> <p>Define if the model is supervised or unsupervised.</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> <code>target_label</code> <p>Define the name of the target attribute if the model is supervised.</p> <p> TYPE: <code>Optional[str]</code> DEFAULT: <code>None</code> </p> <code>on_start</code> <p>A function to be called when this StreamPipesFunction gets started.</p> <p> TYPE: <code>Callable[[Any, FunctionContext], None]</code> DEFAULT: <code>lambda self, context: None</code> </p> <code>on_event</code> <p>A function to be called when this StreamPipesFunction receives an event.</p> <p> TYPE: <code>Callable[[Any, Dict[str, Any], str], None]</code> DEFAULT: <code>lambda self, event, streamId: None</code> </p> <code>on_stop</code> <p>A function to be called when this StreamPipesFunction gets stopped.</p> <p> TYPE: <code>Callable[[Any], None]</code> DEFAULT: <code>lambda self: None</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.OnlineML.set_learning","title":"<code>set_learning(learning)</code>","text":"<p>Start or stop the training of the model.</p> PARAMETER DESCRIPTION <code>learning</code> <p>Defines if the training should be continued</p> <p> TYPE: <code>bool</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.OnlineML.start","title":"<code>start()</code>","text":"<p>Registers the function and starts the training.</p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.OnlineML.stop","title":"<code>stop()</code>","text":"<p>Stops the function and ends the training forever.</p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction","title":"<code>RiverFunction(function_definition, model, supervised, target_label, on_start, on_event, on_stop)</code>","text":"<p> Bases: <code>StreamPipesFunction</code></p> <p>Implementation of a StreamPipesFunction to enable an easy usage for Online Machine Learning models of the River library.</p> <p>The function trains the model with the incoming events and publishes the prediction to an output data stream.</p> PARAMETER DESCRIPTION <code>function_definition</code> <p>The function definition which contains the output stream.</p> <p> TYPE: <code>FunctionDefinition</code> </p> <code>model</code> <p>The model to train. It meant to be a River model/pipeline, but can be every model with a 'learn_one' and 'predict_one' method.</p> <p> TYPE: <code>Any</code> </p> <code>supervised</code> <p>Define if the model is supervised or unsupervised.</p> <p> TYPE: <code>bool</code> </p> <code>target_label</code> <p>Define the name of the target attribute if the model is supervised.</p> <p> TYPE: <code>Optional[str]</code> </p> <code>on_start</code> <p>A function to be called when this StreamPipesFunction gets started.</p> <p> TYPE: <code>Callable[[Any, FunctionContext], None]</code> </p> <code>on_event</code> <p>A function to be called when this StreamPipesFunction receives an event.</p> <p> TYPE: <code>Callable[[Any, Dict[str, Any], str], None]</code> </p> <code>on_stop</code> <p>A function to be called when this StreamPipesFunction gets stopped.</p> <p> TYPE: <code>Callable[[Any], None]</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.add_output","title":"<code>add_output(stream_id, event)</code>","text":"<p>Send an event via an output data stream to StreamPipes.</p> PARAMETER DESCRIPTION <code>stream_id</code> <p>The id of the output data stream</p> <p> TYPE: <code>str</code> </p> <code>event</code> <p>The event which should be sent</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.getFunctionId","title":"<code>getFunctionId()</code>","text":"<p>Returns the id of the function.</p> RETURNS DESCRIPTION <code>function_id</code> <p>Identification object of the StreamPipes function</p> <p> TYPE: <code>FunctionId</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.onEvent","title":"<code>onEvent(event, streamId)</code>","text":"<p>Trains the model with the incoming events and sends the prediction back to StreamPipes.</p> PARAMETER DESCRIPTION <code>event</code> <p>The incoming event that serves as input for the function</p> <p> TYPE: <code>Dict[str, Any]</code> </p> <code>streamId</code> <p>Identifier of the corresponding data stream</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.onServiceStarted","title":"<code>onServiceStarted(context)</code>","text":"<p>Executes the <code>on_start</code> method of the function.</p> PARAMETER DESCRIPTION <code>context</code> <p>The functions' context</p> <p> TYPE: <code>FunctionContext</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.onServiceStopped","title":"<code>onServiceStopped()</code>","text":"<p>Executes the <code>on_stop</code> function.</p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.requiredStreamIds","title":"<code>requiredStreamIds()</code>","text":"<p>Get the ids of the streams needed by the function.</p> RETURNS DESCRIPTION <code>stream_ids</code> <p>List of the stream ids</p> <p> TYPE: <code>List[str]</code> </p>"},{"location":"reference/function_zoo/river_function/#streampipes.function_zoo.river_function.RiverFunction.stop","title":"<code>stop()</code>","text":"<p>Stops the function and disconnects from the output streams.</p>"},{"location":"reference/functions/function_handler/","title":"Function handler","text":""},{"location":"reference/functions/function_handler/#streampipes.functions.function_handler.FunctionHandler","title":"<code>FunctionHandler(registration, client)</code>","text":"<p>The function handler manages the StreamPipes Functions.</p> <p>It controls the connection to the brokers, starts the functions, manages the broadcast of the live data and is able to stop the connection to the brokers and functions.</p> PARAMETER DESCRIPTION <code>registration</code> <p>The registration, that contains the StreamPipesFunctions.</p> <p> TYPE: <code>Registration</code> </p> <code>client</code> <p>The client to interact with the API.</p> <p> TYPE: <code>StreamPipesClient</code> </p> ATTRIBUTE DESCRIPTION <code>stream_contexts</code> <p>Map of all data stream contexts</p> <p> TYPE: <code>Dict[str, DataStreamContext]</code> </p> <code>brokers</code> <p>List of all registered brokers</p> <p> TYPE: <code>List[Broker]</code> </p>"},{"location":"reference/functions/function_handler/#streampipes.functions.function_handler.FunctionHandler.disconnect","title":"<code>disconnect()</code>","text":"<p>Disconnects from the brokers and stops all functions.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/function_handler/#streampipes.functions.function_handler.FunctionHandler.force_stop_functions","title":"<code>force_stop_functions()</code>","text":"<p>Stops the StreamPipesFunctions when the event loop was stopped without stopping the functions.</p> RETURNS DESCRIPTION <code>None</code> WARNS DESCRIPTION <code>UserWarning</code> <p>If there is a running event loop and the functions should be stopped by disconnecting from the broker.</p>"},{"location":"reference/functions/function_handler/#streampipes.functions.function_handler.FunctionHandler.initializeFunctions","title":"<code>initializeFunctions()</code>","text":"<p>Creates the context for every data stream and starts the event loop to manage the StreamPipes Functions.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/registration/","title":"Registration","text":""},{"location":"reference/functions/registration/#streampipes.functions.registration.Registration","title":"<code>Registration()</code>","text":"<p>Manages the existing StreamPipesFunctions and registers them.</p> ATTRIBUTE DESCRIPTION <code>functions</code> <p>List of all registered StreamPipesFunction</p> <p> TYPE: <code>List[StreamPipesFunction]</code> </p>"},{"location":"reference/functions/registration/#streampipes.functions.registration.Registration.getFunctions","title":"<code>getFunctions()</code>","text":"<p>Get all registered functions.</p> <p>This method exists to be consistent with the Java client.</p> RETURNS DESCRIPTION <code>functions</code> <p>List of all registered functions.</p> <p> TYPE: <code>List[StreamPipesFunction]</code> </p>"},{"location":"reference/functions/registration/#streampipes.functions.registration.Registration.register","title":"<code>register(streampipes_function)</code>","text":"<p>Registers a new function.</p> PARAMETER DESCRIPTION <code>streampipes_function</code> <p>The function to register.</p> <p> TYPE: <code>StreamPipesFunction</code> </p> RETURNS DESCRIPTION <code>self</code> <p>The updated Registration instance</p> <p> TYPE: <code>Registration</code> </p>"},{"location":"reference/functions/streampipes_function/","title":"Streampipes function","text":""},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction","title":"<code>StreamPipesFunction(function_definition=None)</code>","text":"<p> Bases: <code>ABC</code></p> <p>Abstract implementation of a StreamPipesFunction.</p> <p>A StreamPipesFunction allows users to get the data of a StreamPipes data streams easily. It makes it possible to work with the live data in python and enables to use the powerful data analytics libraries there.</p> PARAMETER DESCRIPTION <code>function_definition</code> <p>The definition of the function that contains metadata about the connected function</p> <p> TYPE: <code>Optional[FunctionDefinition]</code> DEFAULT: <code>None</code> </p> ATTRIBUTE DESCRIPTION <code>output_collectors</code> <p>List of all output collectors which are created based on the provided function definitions.</p> <p> TYPE: <code>Dict[str, OutputCollector]</code> </p>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.add_output","title":"<code>add_output(stream_id, event)</code>","text":"<p>Send an event via an output data stream to StreamPipes.</p> PARAMETER DESCRIPTION <code>stream_id</code> <p>The id of the output data stream</p> <p> TYPE: <code>str</code> </p> <code>event</code> <p>The event which should be sent</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.getFunctionId","title":"<code>getFunctionId()</code>","text":"<p>Returns the id of the function.</p> RETURNS DESCRIPTION <code>function_id</code> <p>Identification object of the StreamPipes function</p> <p> TYPE: <code>FunctionId</code> </p>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.onEvent","title":"<code>onEvent(event, streamId)</code> <code>abstractmethod</code>","text":"<p>Is called for every event of a data stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The received event from the data stream.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> <code>streamId</code> <p>The id of the data stream which the event belongs to.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.onServiceStarted","title":"<code>onServiceStarted(context)</code> <code>abstractmethod</code>","text":"<p>Is called when the function is started.</p> PARAMETER DESCRIPTION <code>context</code> <p>The context in which the function is started.</p> <p> TYPE: <code>FunctionContext</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.onServiceStopped","title":"<code>onServiceStopped()</code> <code>abstractmethod</code>","text":"<p>Is called when the function is stopped.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.requiredStreamIds","title":"<code>requiredStreamIds()</code>","text":"<p>Get the ids of the streams needed by the function.</p> RETURNS DESCRIPTION <code>stream_ids</code> <p>List of the stream ids</p> <p> TYPE: <code>List[str]</code> </p>"},{"location":"reference/functions/streampipes_function/#streampipes.functions.streampipes_function.StreamPipesFunction.stop","title":"<code>stop()</code>","text":"<p>Stops the function and disconnects from the output streams.</p>"},{"location":"reference/functions/broker/broker/","title":"Broker","text":""},{"location":"reference/functions/broker/broker/#streampipes.functions.broker.broker.Broker","title":"<code>Broker</code>","text":"<p> Bases: <code>ABC</code></p> <p>Abstract implementation of a broker for consumer and publisher.</p> <p>It contains the basic logic to connect to a data stream.</p>"},{"location":"reference/functions/broker/broker/#streampipes.functions.broker.broker.Broker.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/broker/#streampipes.functions.broker.broker.Broker.disconnect","title":"<code>disconnect()</code> <code>abstractmethod</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/broker_handler/","title":"Broker handler","text":""},{"location":"reference/functions/broker/broker_handler/#streampipes.functions.broker.broker_handler.SupportedBroker","title":"<code>SupportedBroker</code>","text":"<p> Bases: <code>Enum</code></p> <p>Enum for the supported brokers.</p>"},{"location":"reference/functions/broker/broker_handler/#streampipes.functions.broker.broker_handler.UnsupportedBrokerError","title":"<code>UnsupportedBrokerError(broker_name)</code>","text":"<p> Bases: <code>Exception</code></p> <p>Exception if a broker isn't implemented yet.</p>"},{"location":"reference/functions/broker/broker_handler/#streampipes.functions.broker.broker_handler.get_broker","title":"<code>get_broker(data_stream, is_publisher=False)</code>","text":"<p>Derive the broker for the given data stream.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Data stream instance from which the broker is inferred</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>broker</code> <p>The corresponding broker instance derived from data stream.</p> <p> TYPE: <code>Broker</code> </p> RAISES DESCRIPTION <code>UnsupportedBrokerError</code> <p>Is raised when the given data stream belongs to a broker that is currently not supported by StreamPipes Python.</p>"},{"location":"reference/functions/broker/broker_handler/#streampipes.functions.broker.broker_handler.get_broker_description","title":"<code>get_broker_description(data_stream)</code>","text":"<p>Derive the decription of the broker for the given data stream.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Data stream instance from which the broker is inferred</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>broker</code> <p>The corresponding broker description derived from data stream.</p> <p> TYPE: <code>SupportedBroker</code> </p> RAISES DESCRIPTION <code>UnsupportedBrokerError</code> <p>Is raised when the given data stream belongs to a broker that is currently not supported by StreamPipes Python.</p>"},{"location":"reference/functions/broker/consumer/","title":"Consumer","text":""},{"location":"reference/functions/broker/consumer/#streampipes.functions.broker.consumer.Consumer","title":"<code>Consumer</code>","text":"<p> Bases: <code>Broker</code></p> <p>Abstract implementation a consumer for a broker.</p> <p>A consumer allows to subscribe to a data stream.</p>"},{"location":"reference/functions/broker/consumer/#streampipes.functions.broker.consumer.Consumer.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes and creates a subscription.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/consumer/#streampipes.functions.broker.consumer.Consumer.disconnect","title":"<code>disconnect()</code> <code>abstractmethod</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/consumer/#streampipes.functions.broker.consumer.Consumer.get_message","title":"<code>get_message()</code> <code>abstractmethod</code>","text":"<p>Get the published messages of the subscription.</p> RETURNS DESCRIPTION <code>iterator</code> <p>An async iterator for the messages.</p> <p> TYPE: <code>AsyncIterator</code> </p>"},{"location":"reference/functions/broker/output_collector/","title":"Output collector","text":""},{"location":"reference/functions/broker/output_collector/#streampipes.functions.broker.output_collector.OutputCollector","title":"<code>OutputCollector(data_stream)</code>","text":"<p>Collector for output events. The events are published to an output data stream. Therefore, the output collector establishes a connection to the broker.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>The output data stream that will receive the events.</p> <p> TYPE: <code>DataStream</code> </p> ATTRIBUTE DESCRIPTION <code>publisher</code> <p>The publisher instance that sends the data to StreamPipes</p> <p> TYPE: <code>Publisher</code> </p>"},{"location":"reference/functions/broker/output_collector/#streampipes.functions.broker.output_collector.OutputCollector.collect","title":"<code>collect(event)</code>","text":"<p>Publishes an event to the output stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The event to be published.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/output_collector/#streampipes.functions.broker.output_collector.OutputCollector.disconnect","title":"<code>disconnect()</code>","text":"<p>Disconnects the broker of the output collector.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/publisher/","title":"Publisher","text":""},{"location":"reference/functions/broker/publisher/#streampipes.functions.broker.publisher.Publisher","title":"<code>Publisher</code>","text":"<p> Bases: <code>Broker</code></p> <p>Abstract implementation of a publisher for a broker.</p> <p>A publisher allows to publish events to a data stream.</p>"},{"location":"reference/functions/broker/publisher/#streampipes.functions.broker.publisher.Publisher.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/publisher/#streampipes.functions.broker.publisher.Publisher.disconnect","title":"<code>disconnect()</code> <code>abstractmethod</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/publisher/#streampipes.functions.broker.publisher.Publisher.publish_event","title":"<code>publish_event(event)</code> <code>abstractmethod</code> <code>async</code>","text":"<p>Publish an event to a connected data stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The event to be published.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_consumer/","title":"Kafka consumer","text":""},{"location":"reference/functions/broker/kafka/kafka_consumer/#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer","title":"<code>KafkaConsumer</code>","text":"<p> Bases: <code>Consumer</code></p> <p>Implementation of a consumer for Kafka</p>"},{"location":"reference/functions/broker/kafka/kafka_consumer/#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes and creates a subscription.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_consumer/#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.disconnect","title":"<code>disconnect()</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_consumer/#streampipes.functions.broker.kafka.kafka_consumer.KafkaConsumer.get_message","title":"<code>get_message()</code>","text":"<p>Get the published messages of the subscription.</p> RETURNS DESCRIPTION <code>iterator</code> <p>An async iterator for the messages.</p> <p> TYPE: <code>AsyncIterator</code> </p>"},{"location":"reference/functions/broker/kafka/kafka_message_fetcher/","title":"Kafka message fetcher","text":""},{"location":"reference/functions/broker/kafka/kafka_message_fetcher/#streampipes.functions.broker.kafka.kafka_message_fetcher.KafkaMessage","title":"<code>KafkaMessage(data)</code>","text":"<p>An internal representation of a Kafka message</p> PARAMETER DESCRIPTION <code>data</code> <p>The received Kafka message as byte array</p> <p> </p>"},{"location":"reference/functions/broker/kafka/kafka_message_fetcher/#streampipes.functions.broker.kafka.kafka_message_fetcher.KafkaMessageFetcher","title":"<code>KafkaMessageFetcher(consumer)</code>","text":"<p>Fetches the next message from Kafka</p> PARAMETER DESCRIPTION <code>consumer</code> <p>The Kafka consumer</p> <p> TYPE: <code>Consumer</code> </p>"},{"location":"reference/functions/broker/kafka/kafka_publisher/","title":"Kafka publisher","text":""},{"location":"reference/functions/broker/kafka/kafka_publisher/#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher","title":"<code>KafkaPublisher</code>","text":"<p> Bases: <code>Publisher</code></p> <p>Implementation of a publisher for Kafka</p>"},{"location":"reference/functions/broker/kafka/kafka_publisher/#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_publisher/#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.disconnect","title":"<code>disconnect()</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/kafka/kafka_publisher/#streampipes.functions.broker.kafka.kafka_publisher.KafkaPublisher.publish_event","title":"<code>publish_event(event)</code> <code>async</code>","text":"<p>Publish an event to a connected data stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The event to be published.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_consumer/","title":"Nats consumer","text":""},{"location":"reference/functions/broker/nats/nats_consumer/#streampipes.functions.broker.nats.nats_consumer.NatsConsumer","title":"<code>NatsConsumer</code>","text":"<p> Bases: <code>Consumer</code></p> <p>Implementation of a consumer for NATS</p>"},{"location":"reference/functions/broker/nats/nats_consumer/#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes and creates a subscription.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_consumer/#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.disconnect","title":"<code>disconnect()</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_consumer/#streampipes.functions.broker.nats.nats_consumer.NatsConsumer.get_message","title":"<code>get_message()</code>","text":"<p>Get the published messages of the subscription.</p> RETURNS DESCRIPTION <code>message_iterator</code> <p>An async iterator for the messages.</p> <p> TYPE: <code>AsyncIterator</code> </p>"},{"location":"reference/functions/broker/nats/nats_publisher/","title":"Nats publisher","text":""},{"location":"reference/functions/broker/nats/nats_publisher/#streampipes.functions.broker.nats.nats_publisher.NatsPublisher","title":"<code>NatsPublisher</code>","text":"<p> Bases: <code>Publisher</code></p> <p>Implementation of a publisher for NATS</p>"},{"location":"reference/functions/broker/nats/nats_publisher/#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.connect","title":"<code>connect(data_stream)</code> <code>async</code>","text":"<p>Connects to the broker running in StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>Contains the meta information (resources) for a data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_publisher/#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.disconnect","title":"<code>disconnect()</code> <code>async</code>","text":"<p>Closes the connection to the server.</p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/broker/nats/nats_publisher/#streampipes.functions.broker.nats.nats_publisher.NatsPublisher.publish_event","title":"<code>publish_event(event)</code> <code>async</code>","text":"<p>Publish an event to a connected data stream.</p> PARAMETER DESCRIPTION <code>event</code> <p>The event to be published.</p> <p> TYPE: <code>Dict[str, Any]</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/utils/async_iter_handler/","title":"Async iter handler","text":""},{"location":"reference/functions/utils/async_iter_handler/#streampipes.functions.utils.async_iter_handler.AsyncIterHandler","title":"<code>AsyncIterHandler</code>","text":"<p>Handles asynchronous iterators to get every message after another in parallel.</p>"},{"location":"reference/functions/utils/async_iter_handler/#streampipes.functions.utils.async_iter_handler.AsyncIterHandler.anext","title":"<code>anext(stream_id, message)</code> <code>async</code> <code>staticmethod</code>","text":"<p>Gets the next message from an AsyncIterator.</p> PARAMETER DESCRIPTION <code>stream_id</code> <p>The id of the data stream which the message belongs to.</p> <p> TYPE: <code>str</code> </p> <code>message</code> <p>An asynchronous iterator that contains the messages.</p> <p> TYPE: <code>AsyncIterator</code> </p> RETURNS DESCRIPTION <code>result</code> <p>Tuple of the stream id und next message or <code>(\"stop\", None)</code> if no message is left.</p> <p> TYPE: <code>Tuple[str, Optional[Any]]</code> </p>"},{"location":"reference/functions/utils/async_iter_handler/#streampipes.functions.utils.async_iter_handler.AsyncIterHandler.combine_async_messages","title":"<code>combine_async_messages(messages)</code> <code>async</code> <code>staticmethod</code>","text":"<p>Continuously gets the next published message from multiple AsyncIterators in parallel.</p> PARAMETER DESCRIPTION <code>messages</code> <p>A dictionary with an asynchronous iterator for every stream id.</p> <p> TYPE: <code>Dict[str, AsyncIterator]</code> </p> YIELDS DESCRIPTION <code>message</code> <p>Description of the anonymous integer return value.</p> <p> TYPE:: <code>Tuple[str, Any]</code> </p>"},{"location":"reference/functions/utils/data_stream_context/","title":"Data stream context","text":""},{"location":"reference/functions/utils/data_stream_context/#streampipes.functions.utils.data_stream_context.DataStreamContext","title":"<code>DataStreamContext(functions, schema, broker)</code>","text":"<p>Container for the context of a data stream.</p> PARAMETER DESCRIPTION <code>functions</code> <p>StreamPipes Functions which require the data of this data stream.</p> <p> TYPE: <code>List[StreamPipesFunction]</code> </p> <code>schema</code> <p>The schema of this data stream.</p> <p> TYPE: <code>DataStream</code> </p> <code>broker</code> <p>The consumer to connect to this data stream.</p> <p> TYPE: <code>Consumer</code> </p>"},{"location":"reference/functions/utils/data_stream_context/#streampipes.functions.utils.data_stream_context.DataStreamContext.add_function","title":"<code>add_function(function)</code>","text":"<p>Adds a new StreamPipes Function.</p> PARAMETER DESCRIPTION <code>function</code> <p>StreamPipesFunction which requires this data stream.</p> <p> TYPE: <code>StreamPipesFunction</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/functions/utils/data_stream_generator/","title":"Data stream generator","text":""},{"location":"reference/functions/utils/data_stream_generator/#streampipes.functions.utils.data_stream_generator.RuntimeType","title":"<code>RuntimeType</code>","text":"<p> Bases: <code>Enum</code></p> <p>Runtime type names for the attributes of a data stream.</p> ATTRIBUTE DESCRIPTION <code>STRING</code> <p> </p> <code>BOOLEAN</code> <p> </p> <code>DOUBLE</code> <p> </p> <code>FLOAT</code> <p> </p> <code>INTEGER</code> <p> </p> <code>LONG</code> <p> </p>"},{"location":"reference/functions/utils/data_stream_generator/#streampipes.functions.utils.data_stream_generator.create_data_stream","title":"<code>create_data_stream(name, attributes, stream_id=None, broker=SupportedBroker.NATS)</code>","text":"<p>Creates a data stream</p> PARAMETER DESCRIPTION <code>name</code> <p>Name of the data stream to be shown at the UI.</p> <p> TYPE: <code>str</code> </p> <code>attributes</code> <p>Name and types of the attributes.</p> <p> TYPE: <code>Dict[str, str]</code> </p> <code>stream_id</code> <p>The id of this data stream.</p> <p> TYPE: <code>str</code> DEFAULT: <code>None</code> </p> RETURNS DESCRIPTION <code>data_stream</code> <p>The created data stream</p> <p> TYPE: <code>DataStream</code> </p>"},{"location":"reference/functions/utils/function_context/","title":"Function context","text":""},{"location":"reference/functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext","title":"<code>FunctionContext(function_id, schema, client, streams)</code>","text":"<p>Container for the context of a StreamPipesFunction.</p> PARAMETER DESCRIPTION <code>function_id</code> <p>The id of this function.</p> <p> TYPE: <code>str</code> </p> <code>schema</code> <p>A dictionary which contains the schema of a data stream for each stream id.</p> <p> TYPE: <code>Dict[str, DataStream]</code> </p> <code>client</code> <p>The client to interact with the API.</p> <p> TYPE: <code>StreamPipesClient</code> </p> <code>streams</code> <p>The ids of the streams needed by this function.</p> <p> TYPE: <code>List[str]</code> </p>"},{"location":"reference/functions/utils/function_context/#streampipes.functions.utils.function_context.FunctionContext.add_data_stream_schema","title":"<code>add_data_stream_schema(stream_id, data_stream)</code>","text":"<p>Adds a new data stream for a new stream id.</p> PARAMETER DESCRIPTION <code>stream_id</code> <p>The id of the data stream.</p> <p> TYPE: <code>str</code> </p> <code>data_stream</code> <p>The schema of the data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>None</code>"},{"location":"reference/model/common/","title":"Common","text":"<p>Classes of the StreamPipes data model that are commonly shared.</p>"},{"location":"reference/model/common/#streampipes.model.common.ApplicationLink","title":"<code>ApplicationLink</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>ApplicationLink</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.ApplicationLink.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.BaseElement","title":"<code>BaseElement</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Structure of a basic element in the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.BaseElement.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.BasicModel","title":"<code>BasicModel</code>","text":"<p> Bases: <code>BaseModel</code></p> <p>Basic model class used for the whole Python StreamPipes data model.</p>"},{"location":"reference/model/common/#streampipes.model.common.BasicModel.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.EventGrounding","title":"<code>EventGrounding</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>EventGrounding</code> in compliance to with StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.EventGrounding.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.EventProperty","title":"<code>EventProperty</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>EventProperty</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.EventProperty.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.EventSchema","title":"<code>EventSchema</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>EventSchema</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.EventSchema.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.MeasurementCapability","title":"<code>MeasurementCapability</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>MeasurementCapability</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.MeasurementCapability.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.MeasurementObject","title":"<code>MeasurementObject</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>MeasurementObject</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.MeasurementObject.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.TopicDefinition","title":"<code>TopicDefinition</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>TopicDefinition</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.TopicDefinition.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.TransportFormat","title":"<code>TransportFormat</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>TransportFormat</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.TransportFormat.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.TransportProtocol","title":"<code>TransportProtocol</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of a <code>TransportProtocol</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.TransportProtocol.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.ValueSpecification","title":"<code>ValueSpecification</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Data model of an <code>ValueSpecification</code> in compliance with the StreamPipes Backend.</p>"},{"location":"reference/model/common/#streampipes.model.common.ValueSpecification.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/common/#streampipes.model.common.random_letters","title":"<code>random_letters(n)</code>","text":"<p>Generates a string consisting of random letters.</p> PARAMETER DESCRIPTION <code>n</code> <p>number of letters</p> <p> TYPE: <code>int</code> </p> RETURNS DESCRIPTION <code>rand_str</code> <p>String consisting of <code>n</code> random letters</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/model/container/data_lake_measures/","title":"Data lake measures","text":"<p>Implementation of a resource container for the data lake measures endpoint.</p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures","title":"<code>DataLakeMeasures(resources)</code>","text":"<p> Bases: <code>ResourceContainer</code></p> <p>Implementation of the resource container for the data lake measures endpoint.</p> <p>This resource container is a collection of data lake measures returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried <code>DataLakeMeasure</code>. Furthermore, the resource container makes them accessible in a pythonic manner.</p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string returned from the StreamPipes API.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>container</code> <p>Instance of the container derived from the JSON definition</p> <p> TYPE: <code>ResourceContainer</code> </p> RAISES DESCRIPTION <code>StreamPipesDataModelError</code> <p>If a resource cannot be mapped to the corresponding Python data model.</p> <code>StreamPipesResourceContainerJSONError</code> <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_dicts","title":"<code>to_dicts(use_source_names=False)</code>","text":"<p>Returns the contained resources as list of dictionaries.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Determines whether the field names are named in Python style (=<code>False</code>) or as originally named by StreamPipes (=<code>True</code>).</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> RETURNS DESCRIPTION <code>dictionary_list</code> <p>List of resources in dictionary representation. If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p> <p> TYPE: <code>List[Dict[str, Any]]</code> </p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_json","title":"<code>to_json()</code>","text":"<p>Returns the resource container in the StreamPipes JSON representation.</p> RETURNS DESCRIPTION <code> json_string: str</code> <p>JSON representation of the resource container where key names are equal to keys used in the StreamPipes backend</p>"},{"location":"reference/model/container/data_lake_measures/#streampipes.model.container.data_lake_measures.DataLakeMeasures.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the resource container in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>resource_container_df</code> <p>Representation of the resource container as pandas DataFrame</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/container/data_streams/","title":"Data streams","text":"<p>Implementation of a resource container for the data streams endpoint.</p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams","title":"<code>DataStreams(resources)</code>","text":"<p> Bases: <code>ResourceContainer</code></p> <p>Implementation of the resource container for the data stream endpoint.</p> <p>This resource container is a collection of data streams returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried <code>DataStream</code>. Furthermore, the resource container makes them accessible in a pythonic manner.</p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string returned from the StreamPipes API.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>container</code> <p>Instance of the container derived from the JSON definition</p> <p> TYPE: <code>ResourceContainer</code> </p> RAISES DESCRIPTION <code>StreamPipesDataModelError</code> <p>If a resource cannot be mapped to the corresponding Python data model.</p> <code>StreamPipesResourceContainerJSONError</code> <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams.to_dicts","title":"<code>to_dicts(use_source_names=False)</code>","text":"<p>Returns the contained resources as list of dictionaries.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Determines whether the field names are named in Python style (=<code>False</code>) or as originally named by StreamPipes (=<code>True</code>).</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> RETURNS DESCRIPTION <code>dictionary_list</code> <p>List of resources in dictionary representation. If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p> <p> TYPE: <code>List[Dict[str, Any]]</code> </p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams.to_json","title":"<code>to_json()</code>","text":"<p>Returns the resource container in the StreamPipes JSON representation.</p> RETURNS DESCRIPTION <code> json_string: str</code> <p>JSON representation of the resource container where key names are equal to keys used in the StreamPipes backend</p>"},{"location":"reference/model/container/data_streams/#streampipes.model.container.data_streams.DataStreams.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the resource container in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>resource_container_df</code> <p>Representation of the resource container as pandas DataFrame</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/container/resource_container/","title":"Resource container","text":"<p>General and abstract implementation for a resource container.</p> <p>A resource container is a collection of resources returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried resources. Furthermore, the resource container makes them accessible in a pythonic manner.</p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer","title":"<code>ResourceContainer(resources)</code>","text":"<p> Bases: <code>ABC</code></p> <p>General and abstract implementation for a resource container.</p> <p>A resource container is a collection of resources returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried resources. Furthermore, the resource container makes them accessible in a pythonic manner.</p> PARAMETER DESCRIPTION <code>resources</code> <p>A list of resources to be contained in the <code>ResourceContainer</code>.</p> <p> TYPE: <code>List[Resource]</code> </p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string returned from the StreamPipes API.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>container</code> <p>Instance of the container derived from the JSON definition</p> <p> TYPE: <code>ResourceContainer</code> </p> RAISES DESCRIPTION <code>StreamPipesDataModelError</code> <p>If a resource cannot be mapped to the corresponding Python data model.</p> <code>StreamPipesResourceContainerJSONError</code> <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer.to_dicts","title":"<code>to_dicts(use_source_names=False)</code>","text":"<p>Returns the contained resources as list of dictionaries.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Determines whether the field names are named in Python style (=<code>False</code>) or as originally named by StreamPipes (=<code>True</code>).</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> RETURNS DESCRIPTION <code>dictionary_list</code> <p>List of resources in dictionary representation. If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p> <p> TYPE: <code>List[Dict[str, Any]]</code> </p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer.to_json","title":"<code>to_json()</code>","text":"<p>Returns the resource container in the StreamPipes JSON representation.</p> RETURNS DESCRIPTION <code> json_string: str</code> <p>JSON representation of the resource container where key names are equal to keys used in the StreamPipes backend</p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.ResourceContainer.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the resource container in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>resource_container_df</code> <p>Representation of the resource container as pandas DataFrame</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.StreamPipesDataModelError","title":"<code>StreamPipesDataModelError(validation_error)</code>","text":"<p> Bases: <code>Exception</code></p> <p>A custom exception to be raised when a validation error occurs during the parsing of StreamPipes API responses.</p> PARAMETER DESCRIPTION <code>validation_error</code> <p>The validation error thrown by Pydantic during parsing.</p> <p> TYPE: <code>ValidationError</code> </p>"},{"location":"reference/model/container/resource_container/#streampipes.model.container.resource_container.StreamPipesResourceContainerJSONError","title":"<code>StreamPipesResourceContainerJSONError(container_name, json_string)</code>","text":"<p> Bases: <code>Exception</code></p> <p>A custom exception to be raised when the returned JSON string does not suit to the structure of resource container.</p> PARAMETER DESCRIPTION <code>container_name</code> <p>The class name of the resource container where the invalid data structure was detected.</p> <p> TYPE: <code>str</code> </p> <code>json_string</code> <p>The JSON string that has been tried to parse.</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/model/container/versions/","title":"Versions","text":"<p>Implementation of a resource container for the versions endpoint.</p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions","title":"<code>Versions(resources)</code>","text":"<p> Bases: <code>ResourceContainer</code></p> <p>Implementation of the resource container for the versions endpoint.</p> <p>This resource container is a collection of versions returned by the StreamPipes API. It is capable of parsing the response content directly into a list of queried <code>Version</code>. Furthermore, the resource container makes them accessible in a pythonic manner.</p> PARAMETER DESCRIPTION <code>resources</code> <p>A list of resources (Version) to be contained in the <code>ResourceContainer</code>.</p> <p> TYPE: <code>List[Resource]</code> </p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates a <code>ResourceContainer</code> from the given JSON string.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string returned from the StreamPipes API.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>container</code> <p>Instance of the container derived from the JSON definition</p> <p> TYPE: <code>ResourceContainer</code> </p> RAISES DESCRIPTION <code>StreamPipesDataModelError</code> <p>If a resource cannot be mapped to the corresponding Python data model.</p> <code>StreamPipesResourceContainerJSONError</code> <p>If JSON response cannot be parsed to a <code>ResourceContainer</code>.</p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions.to_dicts","title":"<code>to_dicts(use_source_names=False)</code>","text":"<p>Returns the contained resources as list of dictionaries.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Determines whether the field names are named in Python style (=<code>False</code>) or as originally named by StreamPipes (=<code>True</code>).</p> <p> TYPE: <code>bool</code> DEFAULT: <code>False</code> </p> RETURNS DESCRIPTION <code>dictionary_list</code> <p>List of resources in dictionary representation. If <code>use_source_names</code> equals <code>True</code> the keys are named as in the StreamPipes backend.</p> <p> TYPE: <code>List[Dict[str, Any]]</code> </p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions.to_json","title":"<code>to_json()</code>","text":"<p>Returns the resource container in the StreamPipes JSON representation.</p> RETURNS DESCRIPTION <code> json_string: str</code> <p>JSON representation of the resource container where key names are equal to keys used in the StreamPipes backend</p>"},{"location":"reference/model/container/versions/#streampipes.model.container.versions.Versions.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the resource container in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>resource_container_df</code> <p>Representation of the resource container as pandas DataFrame</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/resource/data_lake_measure/","title":"Data lake measure","text":""},{"location":"reference/model/resource/data_lake_measure/#streampipes.model.resource.data_lake_measure.DataLakeMeasure","title":"<code>DataLakeMeasure</code>","text":"<p> Bases: <code>Resource</code></p> <p>Implementation of a resource for data lake measures.</p> <p>This resource defines the data model used by resource container (<code>model.container.DataLakeMeasures</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response, and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>"},{"location":"reference/model/resource/data_lake_measure/#streampipes.model.resource.data_lake_measure.DataLakeMeasure.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/data_lake_measure/#streampipes.model.resource.data_lake_measure.DataLakeMeasure.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a data lake measure to be used when creating a pandas Dataframe.</p> <p>It excludes the following fields: <code>element_id</code>, <code>event_schema</code>, <code>schema_version</code>. Instead of the whole event schema the number of event properties contained is returned with the column name <code>num_event_properties</code>.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Pandas representation of the resource as a dictionary, which is then used by the respource container to create a data frame from a collection of resources.</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_lake_measure/#streampipes.model.resource.data_lake_measure.DataLakeMeasure.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_series/","title":"Data series","text":""},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries","title":"<code>DataSeries</code>","text":"<p> Bases: <code>Resource</code></p> <p>Implementation of a resource for data series. This resource defines the data model used by its resource container(<code>model.container.DataLakeMeasures</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p> Notes <pre><code>This class will only exist temporarily in it its current appearance since\nthere are some inconsistencies in the StreamPipes API.\n</code></pre>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a data lake series to be used when creating a pandas Dataframe.</p> <p>It contains only the \"header rows\" (the column names) and \"rows\" that contain the actual data.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Dictionary with the keys <code>headers</code> and <code>rows</code></p> <p> TYPE: <code>dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.from_json","title":"<code>from_json(json_string)</code> <code>classmethod</code>","text":"<p>Creates an instance of <code>DataSeries</code> from a given JSON string.</p> <p>This method is used by the resource container to parse the JSON response of the StreamPipes API. Currently, it only supports data lake series that consist of exactly one series of data.</p> PARAMETER DESCRIPTION <code>json_string</code> <p>The JSON string the data lake series should be created on.</p> <p> TYPE: <code>str</code> </p> RETURNS DESCRIPTION <code>DataSeries</code> <p>Instance of <code>DataSeries</code> that is created based on the given JSON string.</p> RAISES DESCRIPTION <code>StreamPipesUnsupportedDataLakeSeries</code> <p>If the data lake series returned by the StreamPipes API cannot be parsed with the current version of the Python client.</p>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_series/#streampipes.model.resource.data_series.DataSeries.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the data lake series in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>pd</code> <p>The data lake series in form of a pandas dataframe</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/resource/data_stream/","title":"Data stream","text":""},{"location":"reference/model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream","title":"<code>DataStream(**kwargs)</code>","text":"<p> Bases: <code>Resource</code></p> <p>Implementation of a resource for data streams.</p> <p>This resource defines the data model used by resource container (<code>model.container.DataStreams</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>"},{"location":"reference/model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a data stream to be used when creating a pandas Dataframe.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Pandas representation of the resource as a dictionary, which is then used by the respource container to create a data frame from a collection of resources.</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/data_stream/#streampipes.model.resource.data_stream.DataStream.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/exceptions/","title":"Exceptions","text":""},{"location":"reference/model/resource/exceptions/#streampipes.model.resource.exceptions.StreamPipesUnsupportedDataSeries","title":"<code>StreamPipesUnsupportedDataSeries(reason=None)</code>","text":"<p> Bases: <code>Exception</code></p> <p>Exception to be raised when the returned data lake series cannot be parsed with the current implementation of the resource.</p>"},{"location":"reference/model/resource/function_definition/","title":"Function definition","text":""},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition","title":"<code>FunctionDefinition</code>","text":"<p> Bases: <code>Resource</code></p> <p>Configuration for a StreamPipes Function.</p> <p>This class maps to the <code>FunctionDefinition</code> class in the StreamPipes model. It contains all metadata that are required to register a function at the StreamPipes backend.</p> ATTRIBUTE DESCRIPTION <code>consumed_streams</code> <p>List of data streams the function is consuming from</p> <p> TYPE: <code>List[str]</code> </p> <code>function_id</code> <p>identifier object of a StreamPipes function</p> <p> TYPE: <code>FunctionId</code> </p> <code>output_data_streams</code> <p>Map off all output data streams added to the function definition</p> <p> TYPE: <code>Dict[str, DataStream]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.add_output_data_stream","title":"<code>add_output_data_stream(data_stream)</code>","text":"<p>Adds an output data stream to the function which makes it possible to write data back to StreamPipes.</p> PARAMETER DESCRIPTION <code>data_stream</code> <p>The schema of the output data stream.</p> <p> TYPE: <code>DataStream</code> </p> RETURNS DESCRIPTION <code>self</code> <p>Instance of the function definition that is extended by the provided <code>DataStream</code></p> <p> TYPE: <code>FunctionDefinition</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a function definition to be used when creating a pandas Dataframe.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Pandas representation of the resource as a dictionary, which is then used by the respource container to create a data frame from a collection of resources.</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.get_output_data_streams","title":"<code>get_output_data_streams()</code>","text":"<p>Get the output data streams of the function.</p> RETURNS DESCRIPTION <code>output_streams</code> <p>Dictionary with every known stream id and the related output stream.</p> <p> TYPE: <code>Dict[str, DataStream]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.get_output_stream_ids","title":"<code>get_output_stream_ids()</code>","text":"<p>Get the stream ids of the output data streams.</p> RETURNS DESCRIPTION <code>output_stream_ids</code> <p>List of all stream ids</p> <p> TYPE: <code>List[str]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionDefinition.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionId","title":"<code>FunctionId</code>","text":"<p> Bases: <code>BasicModel</code></p> <p>Identification object for a StreamPipes function.</p> <p>Maps to the <code>FunctionId</code> class defined in the StreamPipes model.</p> ATTRIBUTE DESCRIPTION <code>id</code> <p>unique identifier of the function instance</p> <p> TYPE: <code>str</code> </p> <code>version</code> <p>version of the corresponding function</p> <p> TYPE: <code>int</code> </p>"},{"location":"reference/model/resource/function_definition/#streampipes.model.resource.function_definition.FunctionId.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/query_result/","title":"Query result","text":""},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult","title":"<code>QueryResult</code>","text":"<p> Bases: <code>Resource</code></p> <p>Implementation of a resource for query result. This resource defines the data model used by its resource container(<code>model.container.DataLakeMeasures</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>"},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of a data lake series to be used when creating a pandas Dataframe.</p> <p>It contains only the \"header rows\" (the column names) and \"rows\" that contain the actual data.</p> RETURNS DESCRIPTION <code>dict</code> <p>Dictionary with the keys <code>headers</code> and <code>rows</code></p> RAISES DESCRIPTION <code>StreamPipesUnsupportedDataLakeSeries</code> <p>If the query result returned by the StreamPipes API cannot be converted to the pandas representation</p>"},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/query_result/#streampipes.model.resource.query_result.QueryResult.to_pandas","title":"<code>to_pandas()</code>","text":"<p>Returns the data lake series in representation of a Pandas Dataframe.</p> RETURNS DESCRIPTION <code>df</code> <p>Pandas df containing the query result</p> <p> TYPE: <code>DataFrame</code> </p>"},{"location":"reference/model/resource/resource/","title":"Resource","text":"<p>General and abstract implementation for a resource.</p> <p>A resource defines the data model that is used by a resource container (<code>model.container.resourceContainer</code>).</p>"},{"location":"reference/model/resource/resource/#streampipes.model.resource.resource.Resource","title":"<code>Resource</code>","text":"<p> Bases: <code>ABC</code>, <code>BasicModel</code></p> <p>General and abstract implementation for a resource.</p> <p>A resource defines the data model used by a resource container (<code>model.container.resourceContainer</code>). It inherits from Pydantic's BaseModel to get all its superpowers, which are used to parse, validate the API response and to easily switch between the Python representation (both serialized and deserialized) and Java representation (serialized only).</p>"},{"location":"reference/model/resource/resource/#streampipes.model.resource.resource.Resource.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/resource/#streampipes.model.resource.resource.Resource.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code> <code>abstractmethod</code>","text":"<p>Returns a dictionary representation to be used when creating a pandas Dataframe.</p> RETURNS DESCRIPTION <code>pandas_repr</code> <p>Pandas representation of the resource as a dictionary, which is then used by the respource container to create a data frame from a collection of resources.</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/resource/#streampipes.model.resource.resource.Resource.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/version/","title":"Version","text":""},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version","title":"<code>Version</code>","text":"<p> Bases: <code>Resource</code></p> <p>Metadata about the version of the connected StreamPipes server.</p> ATTRIBUTE DESCRIPTION <code>backend_version</code> <p>version of the StreamPipes backend the client is connected to</p> <p> TYPE: <code>str</code> </p>"},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version.Config","title":"<code>Config</code>","text":"<p>Configuration class for Pydantic. Defines alias generator to convert field names from camelCase (API) to snake_case (Python codebase).</p>"},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version.convert_to_pandas_representation","title":"<code>convert_to_pandas_representation()</code>","text":"<p>Returns the dictionary representation of the version metadata to be used when creating a pandas Dataframe.</p>"},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version.to_dict","title":"<code>to_dict(use_source_names=True)</code>","text":"<p>Returns the resource in dictionary representation.</p> PARAMETER DESCRIPTION <code>use_source_names</code> <p>Indicates if the dictionary keys are in python representation or equally named to the StreamPipes backend</p> <p> DEFAULT: <code>True</code> </p> RETURNS DESCRIPTION <code>resource</code> <p>The resource as dictionary representation</p> <p> TYPE: <code>Dict[str, Any]</code> </p>"},{"location":"reference/model/resource/version/#streampipes.model.resource.version.Version.validate_backend_version","title":"<code>validate_backend_version(backend_version)</code>","text":"<p>Validates the backend version of the StreamPipes. Sets 'development' if none is returned since this the behavior of StreamPipes backend running in development mode.</p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/","title":"Introduction to StreamPipes Python","text":"In\u00a0[\u00a0]: Copied! <pre>%pip install streampipes\n</pre> %pip install streampipes <p>If you want to have the current development state you can also execute:</p> In\u00a0[\u00a0]: Copied! <pre>%pip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python\n</pre> %pip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python <p>The corresponding documentation can be found here. </p> In\u00a0[\u00a0]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials In\u00a0[\u00a0]: Copied! <pre>config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(\n username=\"test@streampipes.apache.org\",\n api_key=\"API-KEY\",\n ),\n host_address=\"localhost\",\n https_disabled=True,\n port=80\n)\n</pre> config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials( username=\"test@streampipes.apache.org\", api_key=\"API-KEY\", ), host_address=\"localhost\", https_disabled=True, port=80 ) <p>Please be aware that connecting to StreamPipes via a <code>https</code> connection is currently not supported by the Python client.</p> <p>Providing secrets like the <code>api_key</code> as plaintext in the source code is an anti-pattern. This is why the StreamPipes client also supports passing the required secrets as environment variables. To do so, you must initialize the credential provider like the following:</p> In\u00a0[\u00a0]: Copied! <pre>StreamPipesApiKeyCredentials()\n</pre> StreamPipesApiKeyCredentials() <p>To ensure that the above code works, you must set the environment variables as expected. This can be done as follows:</p> In\u00a0[\u00a0]: Copied! <pre>import os\nos.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\"\nos.environ[\"SP_API_KEY\"] = \"XXX\"\n</pre> import os os.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\" os.environ[\"SP_API_KEY\"] = \"XXX\" <p>Having the <code>config</code> ready, we can now initialize the actual client.</p> In\u00a0[\u00a0]: Copied! <pre>client = StreamPipesClient(client_config=config)\n</pre> client = StreamPipesClient(client_config=config) <p>That's already it. You can check if everything works out by using the following command:</p> In\u00a0[6]: Copied! <pre>client.describe()\n</pre> client.describe() <pre>2023-02-24 17:05:49,398 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n2023-02-24 17:05:49,457 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n\nHi there!\nYou are connected to a StreamPipes instance running at http://localhost:80.\nThe following StreamPipes resources are available with this client:\n1x DataLakeMeasures\n1x DataStreams\n</pre> <p>This prints you a short textual description of the connected StreamPipes instance to the console.</p> <p>The created <code>client</code> instance serves as the central point of interaction with StreamPipes. You can invoke a variety of commands directly on this object.</p> <p>Are you curious now how you actually can get data out of StreamPipes and make use of it with Python? Then check out the next tutorial on extracting Data from the StreamPipes data lake.</p> <p>Thanks for reading this introductory tutorial. We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/#Introduction-to-StreamPipes-Python","title":"Introduction to StreamPipes Python\u00b6","text":""},{"location":"tutorials/1-introduction-to-streampipes-python-client/#Why-there-is-an-extra-Python-library-for-StreamPipes?","title":"Why there is an extra Python library for StreamPipes?\u00b6","text":"<p>Apache StreamPipes aims to enable non-technical users to connect and analyze IoT data streams. To achieve this, it provides an easy-to-use and convenient user interface that allows one to connect to an IoT data source and create some visual graphs within a few minutes. While this is the primary use case for Apache StreamPipes, it also offers significant value to those interested in data analysis or data science with IoT data, without the need to handle the complexities of extracting data from devices in a suitable format. In this scenario, StreamPipes helps you connect to your data source and extract the data for you. You then can make the data available outside StreamPipes by writing it into an external source, such as a database, Kafka, etc. While this requires another component, you can also extract your data directly from StreamPipes programmatically using the StreamPipes API. For convenience, we also provide you with a StreamPipes client both available for Java and Python. Specifically with StreamPipes Python, we want to address the amazing data analytics and data science community in Python and benefit from the great universe of Python libraries out there.</p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/#How-to-install-StreamPipes-Python?","title":"How to install StreamPipes Python?\u00b6","text":"<p>Simply use the following <code>pip</code> command:</p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/#How-to-prepare-the-tutorials","title":"How to prepare the tutorials\u00b6","text":"<p>In case you want to reproduce the first two tutorials exactly on your end, you need to create a simple pipeline in StreamPipes like demonstrated below.</p> <p></p>"},{"location":"tutorials/1-introduction-to-streampipes-python-client/#How-to-configure-the-Python-client","title":"How to configure the Python client\u00b6","text":"<p>In order to access the resources available in StreamPipes, one must be able to authenticate against the backend. For this purpose, the client so far only supports the authentication via an API token that can be generated via the StreamPipes UI, as you can see below.</p> <p></p> <p>Having generated the API token, one can directly start initializing a client instance as follows:</p>"},{"location":"tutorials/2-extracting-data-from-the-streampipes-data-lake/","title":"Extracting Data from the StreamPipes data lake","text":"In\u00a0[1]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials In\u00a0[\u00a0]: Copied! <pre># if you want all necessary dependencies required for this tutorial to be installed,\n# you can simply execute the following command\n%pip install matplotlib streampipes\n</pre> # if you want all necessary dependencies required for this tutorial to be installed, # you can simply execute the following command %pip install matplotlib streampipes In\u00a0[2]: Copied! <pre>import os\nos.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\"\nos.environ[\"SP_API_KEY\"] = \"XXX\"\n</pre> import os os.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\" os.environ[\"SP_API_KEY\"] = \"XXX\" In\u00a0[3]: Copied! <pre>config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(),\n host_address=\"localhost\",\n https_disabled=True,\n port=80\n)\n</pre> config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials(), host_address=\"localhost\", https_disabled=True, port=80 ) In\u00a0[4]: Copied! <pre>client = StreamPipesClient(client_config=config)\n</pre> client = StreamPipesClient(client_config=config) <pre>2023-02-24 17:34:25,860 - streampipes.client.client - [INFO] - [client.py:128] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n</pre> <p>As a first step, we want to get an overview about all data available in the data lake. The data is stored as so-called <code>measures</code>, which refer to a data stream stored in the data lake. For his purpose we use the <code>all()</code> method of the <code>dataLakeMeasure</code> endpoint.</p> In\u00a0[5]: Copied! <pre>data_lake_measures = client.dataLakeMeasureApi.all()\n</pre> data_lake_measures = client.dataLakeMeasureApi.all() <pre>2023-02-24 17:34:25,929 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> <p>So let's see how many measures are available:</p> In\u00a0[6]: Copied! <pre>len(data_lake_measures)\n</pre> len(data_lake_measures) Out[6]: <pre>2</pre> <p>All resources of the StreamPipes Python client support the standard Python expressions. If not, please let us know.</p> In\u00a0[7]: Copied! <pre>data_lake_measures[-1]\n</pre> data_lake_measures[-1] Out[7]: <pre>DataLakeMeasure(element_id='3cb6b5e6f107452483d1fd2ccf4bf9f9', measure_name='test', timestamp_field='s0::timestamp', event_schema=EventSchema(event_properties=[EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:EiFnkL', label='Density', description='Denotes the current density of the fluid', runtime_name='density', required=False, domain_properties=['http://schema.org/Number'], property_scope='MEASUREMENT_PROPERTY', index=5, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#float', measurement_unit=None, value_specification=None), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:ghSkQI', label='Mass Flow', description='Denotes the current mass flow in the sensor', runtime_name='mass_flow', required=False, domain_properties=['http://schema.org/Number'], property_scope='MEASUREMENT_PROPERTY', index=2, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#float', measurement_unit=None, value_specification=None), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:cQAUry', label='Sensor ID', description='The ID of the sensor', runtime_name='sensorId', required=False, domain_properties=['https://streampipes.org/vocabulary/examples/watertank/v1/hasSensorId'], property_scope='DIMENSION_PROPERTY', index=1, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#string', measurement_unit=None, value_specification=None), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:pbPMyL', label='Sensor Fault Flags', description='Any fault flags of the sensors', runtime_name='sensor_fault_flags', required=False, domain_properties=['http://schema.org/Boolean'], property_scope='MEASUREMENT_PROPERTY', index=6, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#boolean', measurement_unit=None, value_specification=None), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:Qmayhw', label='Temperature', description='Denotes the current temperature in degrees celsius', runtime_name='temperature', required=False, domain_properties=['http://schema.org/Number'], property_scope='MEASUREMENT_PROPERTY', index=4, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#float', measurement_unit='http://qudt.org/vocab/unit#DegreeCelsius', value_specification=ValueSpecification(class_name='org.apache.streampipes.model.schema.QuantitativeValue', element_id=None, min_value=0, max_value=100, step=0.1)), EventProperty(class_name='org.apache.streampipes.model.schema.EventPropertyPrimitive', element_id='sp:eventproperty:YQYhjd', label='Volume Flow', description='Denotes the current volume flow', runtime_name='volume_flow', required=False, domain_properties=['http://schema.org/Number'], property_scope='MEASUREMENT_PROPERTY', index=3, runtime_id=None, runtime_type='http://www.w3.org/2001/XMLSchema#float', measurement_unit=None, value_specification=None)]), pipeline_id=None, pipeline_name=None, pipeline_is_running=False, schema_version='1.1')</pre> <p>To get a more comprehensive overview, you can take a look at the <code>pandas</code> representation:</p> In\u00a0[8]: Copied! <pre>display(data_lake_measures.to_pandas())\n</pre> display(data_lake_measures.to_pandas()) measure_name timestamp_field pipeline_id pipeline_name pipeline_is_running num_event_properties 0 flow-rate s0::timestamp None None False 6 1 test s0::timestamp None None False 6 <p>So far, we have only retrieved metadata about the available data lake measure. In the following, we will access the actual data of the measure <code>flow-rate</code>.</p> <p>For this purpose, we will use the <code>get()</code> method of the <code>dataLakeMeasure</code> endpoint.</p> In\u00a0[9]: Copied! <pre>flow_rate_measure = client.dataLakeMeasureApi.get(identifier=\"flow-rate\")\n</pre> flow_rate_measure = client.dataLakeMeasureApi.get(identifier=\"flow-rate\") <pre>2023-02-24 17:34:26,020 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> <p>For further processing, the easiest way is to turn the data measure into a <code>pandas DataFrame</code>.</p> In\u00a0[10]: Copied! <pre>flow_rate_pd = flow_rate_measure.to_pandas()\n</pre> flow_rate_pd = flow_rate_measure.to_pandas() <p>Let's see how many data points we got...</p> In\u00a0[11]: Copied! <pre>len(flow_rate_pd)\n</pre> len(flow_rate_pd) Out[11]: <pre>1000</pre> <p>... and get a first overview</p> In\u00a0[12]: Copied! <pre>flow_rate_pd.describe()\n</pre> flow_rate_pd.describe() Out[12]: density mass_flow temperature volume_flow count 1000.000000 1000.000000 1000.000000 1000.000000 mean 45.560337 5.457014 45.480231 5.659558 std 3.201544 3.184959 3.132878 3.122437 min 40.007698 0.004867 40.000992 0.039422 25% 42.819497 2.654101 42.754623 3.021625 50% 45.679264 5.382355 45.435944 5.572553 75% 48.206881 8.183144 48.248473 8.338209 max 50.998310 10.986015 50.964909 10.998676 <p>As a final step, we want to create a plot of both attributes.</p> In\u00a0[13]: Copied! <pre>import matplotlib.pyplot as plt\nflow_rate_pd.plot(y=[\"mass_flow\", \"temperature\"])\nplt.show()\n</pre> import matplotlib.pyplot as plt flow_rate_pd.plot(y=[\"mass_flow\", \"temperature\"]) plt.show() <p>For data lake measurements, the <code>get()</code> method is even more powerful than simply returning all the data for a given data lake measurement. We will look at a selection of these below. The full list of supported parameters can be found in the docs. Let's start by referring to the graph we created above, where we use only two columns of our data lake measurement. If we already know this, we can directly restrict the queried data to a subset of columns by using the <code>columns</code> parameter. <code>columns</code> takes a list of column names as a comma-separated string:</p> In\u00a0[14]: Copied! <pre>flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", columns=\"mass_flow,temperature\").to_pandas()\nflow_rate_pd\n</pre> flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", columns=\"mass_flow,temperature\").to_pandas() flow_rate_pd <pre>2023-02-24 17:34:26,492 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> Out[14]: timestamp mass_flow temperature 0 2023-02-24T16:19:41.472Z 3.309556 44.448483 1 2023-02-24T16:19:41.482Z 5.608580 40.322033 2 2023-02-24T16:19:41.493Z 7.692881 49.239639 3 2023-02-24T16:19:41.503Z 3.632898 49.933754 4 2023-02-24T16:19:41.513Z 0.711260 50.106617 ... ... ... ... 995 2023-02-24T16:19:52.927Z 1.740114 46.558231 996 2023-02-24T16:19:52.94Z 7.211723 48.048622 997 2023-02-24T16:19:52.952Z 7.770180 48.188026 998 2023-02-24T16:19:52.965Z 4.458602 48.280899 999 2023-02-24T16:19:52.977Z 2.592060 47.505951 <p>1000 rows \u00d7 3 columns</p> <p>By default, the client returns only the first one thousand records of a Data Lake measurement. This can be changed by passing a concrete value for the <code>limit</code> parameter:</p> In\u00a0[15]: Copied! <pre>flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", limit=10000).to_pandas()\nlen(flow_rate_pd)\n</pre> flow_rate_pd = client.dataLakeMeasureApi.get(identifier=\"flow-rate\", limit=10000).to_pandas() len(flow_rate_pd) <pre>2023-02-24 17:34:26,736 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> Out[15]: <pre>9528</pre> <p>If you want your data to be selected by time of occurrence rather than quantity, you can specify your time window by passing the <code>start_date</code> and <code>end_date</code> parameters:</p> In\u00a0[16]: Copied! <pre>from datetime import datetime\nflow_rate_pd = client.dataLakeMeasureApi.get(\n identifier=\"flow-rate\",\n start_date=datetime(year=2023, month=2, day=24, hour=17, minute=21, second=0),\n end_date=datetime(year=2023, month=2, day=24, hour=17, minute=21, second=1),\n ).to_pandas()\nflow_rate_pd.plot(y=[\"mass_flow\", \"temperature\"])\nplt.show()\n</pre> from datetime import datetime flow_rate_pd = client.dataLakeMeasureApi.get( identifier=\"flow-rate\", start_date=datetime(year=2023, month=2, day=24, hour=17, minute=21, second=0), end_date=datetime(year=2023, month=2, day=24, hour=17, minute=21, second=1), ).to_pandas() flow_rate_pd.plot(y=[\"mass_flow\", \"temperature\"]) plt.show() <pre>2023-02-24 17:34:26,899 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:167] [_make_request] - Successfully retrieved all resources.\n</pre> <p>... from this point on, we leave all future processing of the data up to your creativity. Keep in mind: the general syntax used in this tutorial (<code>all()</code>, <code>to_pandas()</code>, <code>get()</code>) applies to all endpoints and associated resources of the StreamPipes Python client.</p> <p>If you get further and create exciting stuff with data extracted from StreamPipes please let us know. We are thrilled to see what you as a community will build with the provided client. Furthermore, don't hesitate to discuss feature requests to extend the current functionality with us.</p> <p>For now, that's all about the StreamPipes client. Read the next tutorial (Getting live data from the StreamPipes data stream) if you are interested in making use of the powerful StreamPipes functions to interact with StreamPipes in an event-based manner.</p> <p>How do you like this tutorial? We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/2-extracting-data-from-the-streampipes-data-lake/#Extracting-Data-from-the-StreamPipes-data-lake","title":"Extracting Data from the StreamPipes data lake\u00b6","text":"<p>In the first tutorial (Introduction to the StreamPipes Python client) we took the first steps with the StreamPipes Python client and learned how to set everything up. Now we are ready to get started and want to retrieve some data out of StreamPipes. In this tutorial, we'll focus on the StreamPipes Data Lake, the component where StreamPipes stores data internally. To get started, we'll use the <code>client</code> instance created in the first tutorial.</p>"},{"location":"tutorials/3-getting-live-data-from-the-streampipes-data-stream/","title":"Getting live data from the StreamPipes data stream","text":"<p>Note As of now we mainly developed the support for StreamPipes functions using NATS as messaging protocol. Consequently, this setup is tested most and should work flawlessly. Visit our first-steps page to see how to start StreamPipes accordingly. Anyhow, you can also use the other brokers that are currently supported in StreamPipes Python. In case you observe any problems, please reach out to us and file us an issue on GitHub.</p> In\u00a0[1]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials In\u00a0[\u00a0]: Copied! <pre># You can install all required libraries for this tutorial with the following command\n%pip install matplotlib ipython streampipes\n</pre> # You can install all required libraries for this tutorial with the following command %pip install matplotlib ipython streampipes In\u00a0[2]: Copied! <pre>import os\n\nos.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\"\nos.environ[\"SP_API_KEY\"] = \"XXX\"\n\n# Use this if you work locally:\nos.environ[\"BROKER-HOST\"] = \"localhost\" \nos.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker. If Kafka is not running on localhost, KAFKA_ADVERTISED_LISTENERS should be adjusted to the external address\n</pre> import os os.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\" os.environ[\"SP_API_KEY\"] = \"XXX\" # Use this if you work locally: os.environ[\"BROKER-HOST\"] = \"localhost\" os.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker. If Kafka is not running on localhost, KAFKA_ADVERTISED_LISTENERS should be adjusted to the external address In\u00a0[3]: Copied! <pre>client_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(),\n host_address=\"localhost\",\n port=80,\n https_disabled=True,\n)\nclient = StreamPipesClient(client_config=client_config)\n</pre> client_config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials(), host_address=\"localhost\", port=80, https_disabled=True, ) client = StreamPipesClient(client_config=client_config) <pre>2022-12-14 10:43:37,664 - streampipes.client.client - [INFO] - [client.py:127] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n</pre> <p>Now we can have a look at the available data streams. We can choose one or more stream to receive the data from and copy their <code>element_id</code>.</p> In\u00a0[4]: Copied! <pre>client.dataStreamApi.all().to_pandas()\n</pre> client.dataStreamApi.all().to_pandas() <pre>2022-12-14 10:43:39,944 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:153] [_make_request] - Successfully retrieved all resources.\n</pre> Out[4]: element_id name description icon_url app_id includes_assets includes_locales internally_managed measurement_object index ... uri dom num_transport_protocols num_measurement_capability num_application_links num_included_assets num_connected_to num_category num_event_properties num_included_locales 0 urn:streampipes.apache.org:eventstream:HHoidJ Test2 None None False False True None 0 ... urn:streampipes.apache.org:eventstream:HHoidJ None 1 0 0 0 0 0 7 0 1 urn:streampipes.apache.org:eventstream:uPDKLI Test None None False False True None 0 ... urn:streampipes.apache.org:eventstream:uPDKLI None 1 0 0 0 0 0 7 0 <p>2 rows \u00d7 21 columns</p> <p>Next we can create a StreamPipesFunction. For this we need to implement the 3 following methods:</p> <ul> <li><code>onServiceStarted</code> is called when the function gets started. There you can use the given meta information of the <code>FunctionContext</code> to initialize the function.</li> <li><code>onEvent</code> is called when ever a new event arrives. The <code>event</code> contains the live data and you can use the <code>streamId</code> to identify a stream if the function is connected to multiple data streams.</li> <li><code>onServiceStopped</code> is called when the function gets stopped.</li> </ul> <p>For this tutorial we just create a function that saves every new event in a <code>pandas DataFrame</code> and plots the first column of the <code>DataFrame</code> when the function gets stopped.</p> <p>(If you want to use the same structure as in Java you can overwrite the <code>getFunctionId</code> and <code>requiredStreamIds</code> methods instead of using the <code>FunctionDefinition</code>)</p> In\u00a0[5]: Copied! <pre>from typing import Dict, Any\nimport pandas as pd\nfrom datetime import datetime\nimport matplotlib.pyplot as plt\nfrom streampipes.functions.function_handler import FunctionHandler\nfrom streampipes.functions.registration import Registration\nfrom streampipes.functions.streampipes_function import StreamPipesFunction\nfrom streampipes.functions.utils.function_context import FunctionContext\nfrom streampipes.model.resource.function_definition import FunctionDefinition, FunctionId\n\nclass ExampleFunction(StreamPipesFunction):\n def __init__(self, function_definition: FunctionDefinition) -> None:\n super().__init__(function_definition)\n # Create the Dataframe to save the live data\n self.df = pd.DataFrame()\n\n def onServiceStarted(self, context: FunctionContext):\n # Get the name of the timestamp field\n for event_property in context.schema[context.streams[0]].event_schema.event_properties:\n if event_property.property_scope == \"HEADER_PROPERTY\":\n self.timestamp = event_property.runtime_name\n\n def onEvent(self, event: Dict[str, Any], streamId: str):\n # Convert the unix timestamp to datetime\n event[self.timestamp] = datetime.fromtimestamp(event[self.timestamp] / 1000)\n # Add every value of the event to the DataFrame\n self.df = pd.concat(\n [self.df, pd.DataFrame({key: [event[key]] for key in event.keys()}).set_index(self.timestamp)]\n )\n\n def onServiceStopped(self):\n # Plot the first column of the Dataframe\n plt.figure(figsize=(10, 5))\n plt.xlabel(self.timestamp)\n plt.ylabel(self.df.columns[0])\n plt.plot(self.df.iloc[:, 0])\n plt.show()\n</pre> from typing import Dict, Any import pandas as pd from datetime import datetime import matplotlib.pyplot as plt from streampipes.functions.function_handler import FunctionHandler from streampipes.functions.registration import Registration from streampipes.functions.streampipes_function import StreamPipesFunction from streampipes.functions.utils.function_context import FunctionContext from streampipes.model.resource.function_definition import FunctionDefinition, FunctionId class ExampleFunction(StreamPipesFunction): def __init__(self, function_definition: FunctionDefinition) -> None: super().__init__(function_definition) # Create the Dataframe to save the live data self.df = pd.DataFrame() def onServiceStarted(self, context: FunctionContext): # Get the name of the timestamp field for event_property in context.schema[context.streams[0]].event_schema.event_properties: if event_property.property_scope == \"HEADER_PROPERTY\": self.timestamp = event_property.runtime_name def onEvent(self, event: Dict[str, Any], streamId: str): # Convert the unix timestamp to datetime event[self.timestamp] = datetime.fromtimestamp(event[self.timestamp] / 1000) # Add every value of the event to the DataFrame self.df = pd.concat( [self.df, pd.DataFrame({key: [event[key]] for key in event.keys()}).set_index(self.timestamp)] ) def onServiceStopped(self): # Plot the first column of the Dataframe plt.figure(figsize=(10, 5)) plt.xlabel(self.timestamp) plt.ylabel(self.df.columns[0]) plt.plot(self.df.iloc[:, 0]) plt.show() <p>Now we can start the function. First we create an instance of the <code>ExampleFunction</code> and insert the <code>element_id</code> of the stream which data we want to consume. Then we have to register this function and we can start all functions by initializing the <code>FunctionHandler</code>. (it's also possible to register multiple functions with <code>.register(...).register(...)</code>)</p> In\u00a0[6]: Copied! <pre>example_function = ExampleFunction(\n FunctionDefinition(\n function_id=FunctionId(id=\"example-function\"),\n consumed_streams=[\"urn:streampipes.apache.org:eventstream:uPDKLI\"]\n )\n)\n\nregistration = Registration()\nregistration.register(example_function)\n\nfunction_handler = FunctionHandler(registration, client)\nfunction_handler.initializeFunctions()\n</pre> example_function = ExampleFunction( FunctionDefinition( function_id=FunctionId(id=\"example-function\"), consumed_streams=[\"urn:streampipes.apache.org:eventstream:uPDKLI\"] ) ) registration = Registration() registration.register(example_function) function_handler = FunctionHandler(registration, client) function_handler.initializeFunctions() <pre>2022-12-14 10:43:42,810 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:153] [_make_request] - Successfully retrieved all resources.\n2022-12-14 10:43:42,812 - streampipes.functions.function_handler - [INFO] - [function_handler.py:82] [initializeFunctions] - Using NatsBroker for <__main__.ExampleFunction object at 0x000001F2EF298D90>\n</pre> <p>The <code>DataFrame</code> of the <code>ExampleFunction</code> gets updated whenever a new event arrives. Let's test this by executing the cell below.</p> In\u00a0[7]: Copied! <pre>import asyncio\nfrom asyncio.exceptions import CancelledError\nfrom IPython.display import clear_output\n\nwhile True:\n clear_output(wait=True)\n display(example_function.df)\n try:\n await asyncio.sleep(1)\n except CancelledError:\n break\n</pre> import asyncio from asyncio.exceptions import CancelledError from IPython.display import clear_output while True: clear_output(wait=True) display(example_function.df) try: await asyncio.sleep(1) except CancelledError: break mass_flow density volume_flow sensor_fault_flags temperature sensorId timestamp 2022-12-14 10:43:43.357 10.955496 47.546290 1.001985 False 44.993413 flowrate02 2022-12-14 10:43:44.371 6.499040 44.392069 2.034402 False 41.232352 flowrate02 2022-12-14 10:43:45.382 10.168300 41.192146 9.724287 False 46.812779 flowrate02 2022-12-14 10:43:46.395 10.849059 50.086308 5.832691 False 45.860412 flowrate02 2022-12-14 10:43:47.410 3.081855 47.254246 8.860531 False 50.505801 flowrate02 ... ... ... ... ... ... ... 2022-12-14 10:44:43.920 1.803572 41.978894 10.294002 False 47.820239 flowrate02 2022-12-14 10:44:44.932 1.967062 42.212883 3.237440 False 49.047258 flowrate02 2022-12-14 10:44:45.934 4.457819 47.561256 0.315024 False 40.223413 flowrate02 2022-12-14 10:44:46.949 8.745343 46.346891 7.439090 False 41.982529 flowrate02 2022-12-14 10:44:47.950 5.828744 47.679720 6.307405 False 42.100354 flowrate02 <p>65 rows \u00d7 6 columns</p> <p>The <code>while</code> loop just displays the the <code>DataFrame</code> every second until the cell is stopped. We could achieve the same result manually by executing <code>example_function.df</code> repeatedly.</p> <p>You can stop the functions whenever you want by executing the command below.</p> In\u00a0[\u00a0]: Copied! <pre>function_handler.disconnect()\n</pre> function_handler.disconnect() <pre>2022-12-14 10:44:53,309 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:67] [disconnect] - Stopped connection to stream: urn:streampipes.apache.org:eventstream:uPDKLI\n</pre> <p>That's enough for this tutorial. Now you can try to write your own <code>StreamPipesFunction</code>. All you need to do is creating a new class, implementing the 4 required methods and registering the function.</p> <p>Want to see more exciting use cases you can achieve with StreamPipes functions in Python? Then don't hesitate and jump to our next tutorial on applying online machine learning algorithms to StreamPipes data streams with River.</p> <p>How do you like this tutorial? We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/3-getting-live-data-from-the-streampipes-data-stream/#Getting-live-data-from-the-StreamPipes-data-stream","title":"Getting live data from the StreamPipes data stream\u00b6","text":"<p>In the last tutorial (Extracting Data from the StreamPipes data lake) we learned how to extract the stored data from a StreamPipes data lake. This tutorial is about the StreamPipes data stream and shows how to get the live data from StreamPipes into Python. Therefore, we first create the <code>client</code> instance as before.</p>"},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/","title":"Using Online Machine Learning on a StreamPipes data stream","text":"In\u00a0[1]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials In\u00a0[\u00a0]: Copied! <pre># you can install all required dependencies for this tutorial by executing the following command\n%pip install river streampipes\n</pre> # you can install all required dependencies for this tutorial by executing the following command %pip install river streampipes In\u00a0[2]: Copied! <pre>import os\n\nos.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\"\nos.environ[\"SP_API_KEY\"] = \"XXX\"\n\n# Use this if you work locally:\nos.environ[\"BROKER-HOST\"] = \"localhost\" \nos.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker\n</pre> import os os.environ[\"SP_USERNAME\"] = \"admin@streampipes.apache.org\" os.environ[\"SP_API_KEY\"] = \"XXX\" # Use this if you work locally: os.environ[\"BROKER-HOST\"] = \"localhost\" os.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker In\u00a0[3]: Copied! <pre>client_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(),\n host_address=\"localhost\",\n port=80,\n https_disabled=True,\n)\nclient = StreamPipesClient(client_config=client_config)\n</pre> client_config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials(), host_address=\"localhost\", port=80, https_disabled=True, ) client = StreamPipesClient(client_config=client_config) <pre>2023-01-27 16:04:24,784 - streampipes.client.client - [INFO] - [client.py:128] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n</pre> In\u00a0[4]: Copied! <pre>client.dataStreamApi.all().to_pandas()\n</pre> client.dataStreamApi.all().to_pandas() <pre>2023-01-27 16:04:28,212 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:163] [_make_request] - Successfully retrieved all resources.\n</pre> Out[4]: element_id name description icon_url app_id includes_assets includes_locales internally_managed measurement_object index ... dom rev num_transport_protocols num_measurement_capability num_application_links num_included_assets num_connected_to num_category num_event_properties num_included_locales 0 sp:spdatastream:xboBFK Test None None False False True None 0 ... None 5-558c861debc745e1ebae29a266a8bdb9 1 0 0 0 0 0 7 0 1 urn:streampipes.apache.org:eventstream:Wgyrse Test File None None False False True None 0 ... None 4-66548b6b84287011b7cec0876ef82baf 1 0 0 0 0 0 2 0 <p>2 rows \u00d7 22 columns</p> In\u00a0[5]: Copied! <pre>from river import cluster, compose, preprocessing\nfrom streampipes.function_zoo.river_function import OnlineML\nfrom streampipes.functions.utils.data_stream_generator import RuntimeType\n\nk_means = compose.Pipeline(\n (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")),\n (\"scale\", preprocessing.StandardScaler()),\n (\"k_means\", cluster.KMeans(n_clusters=2)),\n)\n\nclustering = OnlineML(\n client=client, stream_ids=[\"sp:spdatastream:xboBFK\"], model=k_means, prediction_type=RuntimeType.INTEGER.value\n)\nclustering.start()\n</pre> from river import cluster, compose, preprocessing from streampipes.function_zoo.river_function import OnlineML from streampipes.functions.utils.data_stream_generator import RuntimeType k_means = compose.Pipeline( (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")), (\"scale\", preprocessing.StandardScaler()), (\"k_means\", cluster.KMeans(n_clusters=2)), ) clustering = OnlineML( client=client, stream_ids=[\"sp:spdatastream:xboBFK\"], model=k_means, prediction_type=RuntimeType.INTEGER.value ) clustering.start() <pre>2023-01-27 16:04:35,599 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:163] [_make_request] - Successfully retrieved all resources.\n2023-01-27 16:04:35,599 - streampipes.functions.function_handler - [INFO] - [function_handler.py:64] [initializeFunctions] - Create output data stream \"sp:spdatastream:cwKPoo\" for the function \"65cf8b86-bcdf-433e-a1c7-3e920eab55d0\"\n2023-01-27 16:04:37,766 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:163] [_make_request] - Successfully retrieved all resources.\n2023-01-27 16:04:37,767 - streampipes.functions.function_handler - [INFO] - [function_handler.py:78] [initializeFunctions] - Using NatsBroker for RiverFunction\n</pre> <pre>2023-01-27 16:04:37,791 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:48] [_makeConnection] - Connected to NATS at localhost:4222\n2023-01-27 16:04:37,791 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:48] [_makeConnection] - Connected to NATS at localhost:4222\n2023-01-27 16:04:37,792 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:58] [createSubscription] - Subscribed to stream: sp:spdatastream:xboBFK\n</pre> In\u00a0[6]: Copied! <pre>clustering.set_learning(False)\n</pre> clustering.set_learning(False) In\u00a0[\u00a0]: Copied! <pre>clustering.stop()\n</pre> clustering.stop() <pre>2023-01-27 16:04:57,303 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:82] [disconnect] - Stopped connection to stream: sp:spdatastream:xboBFK\n2023-01-27 16:04:57,304 - streampipes.functions.broker.nats_broker - [INFO] - [nats_broker.py:82] [disconnect] - Stopped connection to stream: sp:spdatastream:cwKPoo\n</pre> In\u00a0[\u00a0]: Copied! <pre>import pickle\nfrom river import compose, tree\nfrom streampipes.function_zoo.river_function import OnlineML\nfrom streampipes.functions.utils.data_stream_generator import RuntimeType\n\nhoeffding_tree = compose.Pipeline(\n (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")),\n (\"hoeffding_tree\", tree.HoeffdingTreeRegressor(grace_period=5)),\n)\n\n\ndef draw_tree(self, event, streamId):\n\"\"\"Draw the tree and save the image.\"\"\"\n if self.learning:\n if self.model[1].n_nodes != None:\n self.model[1].draw().render(\"hoeffding_tree\", format=\"png\", cleanup=True)\n\n\ndef save_model(self):\n\"\"\"Save the trained model.\"\"\"\n with open(\"hoeffding_tree.pkl\", \"wb\") as f:\n pickle.dump(self.model, f)\n\n\nregressor = OnlineML(\n client=client,\n stream_ids=[\"sp:spdatastream:xboBFK\"],\n model=hoeffding_tree,\n prediction_type=RuntimeType.FLOAT.value,\n supervised=True,\n target_label=\"temperature\",\n on_event=draw_tree,\n on_stop=save_model,\n)\nregressor.start()\n</pre> import pickle from river import compose, tree from streampipes.function_zoo.river_function import OnlineML from streampipes.functions.utils.data_stream_generator import RuntimeType hoeffding_tree = compose.Pipeline( (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")), (\"hoeffding_tree\", tree.HoeffdingTreeRegressor(grace_period=5)), ) def draw_tree(self, event, streamId): \"\"\"Draw the tree and save the image.\"\"\" if self.learning: if self.model[1].n_nodes != None: self.model[1].draw().render(\"hoeffding_tree\", format=\"png\", cleanup=True) def save_model(self): \"\"\"Save the trained model.\"\"\" with open(\"hoeffding_tree.pkl\", \"wb\") as f: pickle.dump(self.model, f) regressor = OnlineML( client=client, stream_ids=[\"sp:spdatastream:xboBFK\"], model=hoeffding_tree, prediction_type=RuntimeType.FLOAT.value, supervised=True, target_label=\"temperature\", on_event=draw_tree, on_stop=save_model, ) regressor.start() In\u00a0[9]: Copied! <pre>regressor.set_learning(False)\n</pre> regressor.set_learning(False) In\u00a0[\u00a0]: Copied! <pre>regressor.stop()\n</pre> regressor.stop() In\u00a0[\u00a0]: Copied! <pre>import pickle\nfrom river import compose, tree\nfrom streampipes.function_zoo.river_function import OnlineML\nfrom streampipes.functions.utils.data_stream_generator import RuntimeType\n\ndecision_tree = compose.Pipeline(\n (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")),\n (\"decision_tree\", tree.ExtremelyFastDecisionTreeClassifier(grace_period=5)),\n)\n\n\ndef draw_tree(self, event, streamId):\n\"\"\"Draw the tree and save the image.\"\"\"\n if self.learning:\n if self.model[1].n_nodes != None:\n self.model[1].draw().render(\"decicion_tree\", format=\"png\", cleanup=True)\n\n\ndef save_model(self):\n\"\"\"Save the trained model.\"\"\"\n with open(\"decision_tree.pkl\", \"wb\") as f:\n pickle.dump(self.model, f)\n\n\nclassifier = OnlineML(\n client=client,\n stream_ids=[\"sp:spdatastream:xboBFK\"],\n model=decision_tree,\n prediction_type=RuntimeType.BOOLEAN.value,\n supervised=True,\n target_label=\"sensor_fault_flags\",\n on_event=draw_tree,\n on_stop=save_model,\n)\nclassifier.start()\n</pre> import pickle from river import compose, tree from streampipes.function_zoo.river_function import OnlineML from streampipes.functions.utils.data_stream_generator import RuntimeType decision_tree = compose.Pipeline( (\"drop_features\", compose.Discard(\"sensorId\", \"timestamp\")), (\"decision_tree\", tree.ExtremelyFastDecisionTreeClassifier(grace_period=5)), ) def draw_tree(self, event, streamId): \"\"\"Draw the tree and save the image.\"\"\" if self.learning: if self.model[1].n_nodes != None: self.model[1].draw().render(\"decicion_tree\", format=\"png\", cleanup=True) def save_model(self): \"\"\"Save the trained model.\"\"\" with open(\"decision_tree.pkl\", \"wb\") as f: pickle.dump(self.model, f) classifier = OnlineML( client=client, stream_ids=[\"sp:spdatastream:xboBFK\"], model=decision_tree, prediction_type=RuntimeType.BOOLEAN.value, supervised=True, target_label=\"sensor_fault_flags\", on_event=draw_tree, on_stop=save_model, ) classifier.start() In\u00a0[12]: Copied! <pre>classifier.set_learning(False)\n</pre> classifier.set_learning(False) In\u00a0[\u00a0]: Copied! <pre>classifier.stop()\n</pre> classifier.stop() <p>That's already it! Isn't it truly easy to apply Online ML with StreamPipes and River? Please go ahead and apply it to your own use cases. We would be happy to hear about them!</p> <p>Want to see more exciting use cases you can achieve with StreamPipes functions in Python? Then don\u2019t hesitate and jump to our next tutorial on using interoperable machine learning algorithm models with StreamPipes Python and ONNX.</p> <p>How do you like this tutorial? We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#Using-Online-Machine-Learning-on-a-StreamPipes-data-stream","title":"Using Online Machine Learning on a StreamPipes data stream\u00b6","text":"<p>The last tutorial (Getting live data from the StreamPipes data stream) showed how we can connect to a data stream, and it would be possible to use Online Machine Learning with this approach and train a model with the incoming events at the <code>onEvent</code> method. However, the StreamPipes client also provides an easier way to do this with the use of the River library for Online Machine Learning. We will have a look at this now.</p>"},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#How-to-use-Online-Machine-Learning-with-StreamPipes","title":"How to use Online Machine Learning with StreamPipes\u00b6","text":"<p>After we configured the client as usual, we can start with the new part. The approach is straight forward and you can start with the ML part in just 3 steps:</p> <ol> <li>Create a pipeline with River and insert the preprocessing steps and model of your choice.</li> <li>Configure the <code>OnlineML</code> wrapper to fit to your model and insert the client and required data stream ids.</li> <li>Start the wrapper and let the learning begin.</li> </ol> <p>A StreamPipesFunction is then started, which trains the model for each new event. It also creates an output data stream which will send the prediction of the model back to StreamPipes. This output stream can be seen when creating a new pipeline and can be used like every other data source. So you can use it in a pipeline and save the predictions in a Data Lake. You can also stop and start the training with the method <code>set_learning</code>. To stop the whole function use the <code>stop</code> methode and if you want to delete the output stream entirely, you can go to the <code>Pipeline Element Installer</code> in StreamPipes and uninstall it.</p> <p>Now let's take a look at some examples. If you want to execute the examples below you have to create an adapter for the <code>Machine Data Simulator</code>, select the <code>flowrate</code> sensor and insert the stream id of this stream.</p>"},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#KMeans","title":"KMeans\u00b6","text":""},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#HoeffdingTreeRegressor","title":"HoeffdingTreeRegressor\u00b6","text":""},{"location":"tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/#DecisionTreeClassifier","title":"DecisionTreeClassifier\u00b6","text":""},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/","title":"Applying Interoperable Machine Learning in StreamPipes","text":"In\u00a0[\u00a0]: Copied! <pre>%pip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python\n%pip install scikit-learn==1.4.0 skl2onnx==1.16.0 onnxruntime==1.17.1 matplotlib==3.8.3\n</pre> %pip install git+https://github.com/apache/streampipes.git#subdirectory=streampipes-client-python %pip install scikit-learn==1.4.0 skl2onnx==1.16.0 onnxruntime==1.17.1 matplotlib==3.8.3 In\u00a0[8]: Copied! <pre>import os\nfrom streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nos.environ[\"BROKER-HOST\"] = \"localhost\"\nos.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker\n\nconfig = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(\n username=\"admin@streampipes.apache.org\",\n api_key=\"TOKEN\",\n ),\n host_address=\"localhost\",\n https_disabled=True,\n port=80\n)\n\nclient = StreamPipesClient(client_config=config)\n</pre> import os from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials os.environ[\"BROKER-HOST\"] = \"localhost\" os.environ[\"KAFKA-PORT\"] = \"9094\" # When using Kafka as message broker config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials( username=\"admin@streampipes.apache.org\", api_key=\"TOKEN\", ), host_address=\"localhost\", https_disabled=True, port=80 ) client = StreamPipesClient(client_config=config) <pre>2024-03-26 10:21:38,538 - streampipes.client.client - [INFO] - [client.py:198] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n2024-03-26 10:21:38,632 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-03-26 10:21:38,634 - streampipes.client.client - [INFO] - [client.py:171] [_get_server_version] - The StreamPipes version was successfully retrieved from the backend: 0.95.0. By means of that, authentication via the provided credentials is also tested successfully.\n</pre> <p>The main objective of this tutorial is to demonstrate how to make predictions with an existing and pre-trained ML model using a StreamPipes function and ONNX. Therefore, you can skip the following sections on use case and model training if you already have an existing ONNX model and are only interested in applying it using StreamPipes.</p> In\u00a0[9]: Copied! <pre>flowrate_df = client.dataLakeMeasureApi.get(\"flow-rate\").to_pandas()\nX = flowrate_df[\"volume_flow\"].values.reshape(-1, 1).astype(\"float32\")\n</pre> flowrate_df = client.dataLakeMeasureApi.get(\"flow-rate\").to_pandas() X = flowrate_df[\"volume_flow\"].values.reshape(-1, 1).astype(\"float32\") <pre>2024-03-26 10:21:48,582 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n</pre> <p>Let's fit the model to the data:</p> In\u00a0[14]: Copied! <pre>from sklearn.ensemble import IsolationForest\n\nmodel = IsolationForest(contamination=0.01)\nmodel.fit(X)\n</pre> from sklearn.ensemble import IsolationForest model = IsolationForest(contamination=0.01) model.fit(X) Out[14]: <pre>IsolationForest(contamination=0.01)</pre>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.\u00a0\u00a0IsolationForest?Documentation for IsolationForestiFitted<pre>IsolationForest(contamination=0.01)</pre> <p>The <code>contamination</code> parameter models the proportion of outliers in the data. See the scikit-learn documentation for more information.</p> <p>Before we convert the model to an ONNX representation, let's do a quick visual analysis of the model results:</p> In\u00a0[15]: Copied! <pre>import matplotlib.pyplot as plt\n\nflowrate_df[\"anomaly\"] = model.predict(X)\n\nfig, ax = plt.subplots(figsize=(10, 6))\nanomalies = flowrate_df.loc[flowrate_df[\"anomaly\"] == -1, [\"volume_flow\"]]\nax.plot(flowrate_df.index, flowrate_df['volume_flow'], color='black', label='volume_flow')\nax.scatter(anomalies.index, anomalies['volume_flow'], color='red', label='Anomaly')\nplt.legend()\nplt.show()\n</pre> import matplotlib.pyplot as plt flowrate_df[\"anomaly\"] = model.predict(X) fig, ax = plt.subplots(figsize=(10, 6)) anomalies = flowrate_df.loc[flowrate_df[\"anomaly\"] == -1, [\"volume_flow\"]] ax.plot(flowrate_df.index, flowrate_df['volume_flow'], color='black', label='volume_flow') ax.scatter(anomalies.index, anomalies['volume_flow'], color='red', label='Anomaly') plt.legend() plt.show() <p>Okay, that looks quite reasonable so lets covert the model to an ONNX representation so that we can make use of it later.</p> In\u00a0[16]: Copied! <pre>from onnxconverter_common import FloatTensorType\nfrom skl2onnx import to_onnx\n\nmodel_onnx = to_onnx(\n model,\n initial_types=[('input', FloatTensorType([None, X.shape[1]]))],\n target_opset={'ai.onnx.ml': 3, 'ai.onnx': 15, '': 15}\n)\n\nwith open(\"isolation_forest.onnx\", \"wb\") as f:\n f.write(model_onnx.SerializeToString())\n</pre> from onnxconverter_common import FloatTensorType from skl2onnx import to_onnx model_onnx = to_onnx( model, initial_types=[('input', FloatTensorType([None, X.shape[1]]))], target_opset={'ai.onnx.ml': 3, 'ai.onnx': 15, '': 15} ) with open(\"isolation_forest.onnx\", \"wb\") as f: f.write(model_onnx.SerializeToString()) In\u00a0[23]: Copied! <pre>import numpy as np\nimport onnxruntime as rt\n\nfrom streampipes.functions.broker.broker_handler import get_broker_description\nfrom streampipes.functions.streampipes_function import StreamPipesFunction\nfrom streampipes.functions.utils.data_stream_generator import create_data_stream, RuntimeType\nfrom streampipes.functions.utils.function_context import FunctionContext\nfrom streampipes.model.resource import FunctionDefinition, DataStream\n\nfrom typing import Dict, Any, List\n\n\nclass ONNXFunction(StreamPipesFunction):\n\n def __init__(self, feature_names: list[str], input_stream: DataStream):\n output_stream = create_data_stream(\n name=\"flowrate-prediction\",\n attributes={\n \"is_anomaly\": RuntimeType.BOOLEAN.value\n },\n broker=get_broker_description(input_stream)\n )\n\n function_definition = FunctionDefinition(\n consumed_streams=[input_stream.element_id]\n ).add_output_data_stream(output_stream)\n\n self.feature_names = feature_names\n self.input_name = None\n self.output_name = None\n self.session = None\n\n super().__init__(function_definition=function_definition)\n\n def onServiceStarted(self, context: FunctionContext) -> None:\n self.session = rt.InferenceSession(\n path_or_bytes=\"isolation_forest.onnx\",\n providers=rt.get_available_providers(),\n )\n self.input_name = self.session.get_inputs()[0].name\n self.output_name = self.session.get_outputs()[0].name\n\n def onEvent(self, event: Dict[str, Any], streamId: str) -> None:\n feature_vector = []\n for feature in self.feature_names:\n feature_vector.append(event[feature])\n\n prediction = self.session.run(\n [self.output_name],\n {self.input_name: np.expand_dims(np.array(feature_vector), axis=0).astype(\"float32\")}\n )[0]\n\n output = {\n \"is_anomaly\": int(prediction[0]) == -1\n }\n\n self.add_output(\n stream_id=self.function_definition.get_output_stream_ids()[0],\n event=output\n )\n\n def onServiceStopped(self) -> None:\n pass\n</pre> import numpy as np import onnxruntime as rt from streampipes.functions.broker.broker_handler import get_broker_description from streampipes.functions.streampipes_function import StreamPipesFunction from streampipes.functions.utils.data_stream_generator import create_data_stream, RuntimeType from streampipes.functions.utils.function_context import FunctionContext from streampipes.model.resource import FunctionDefinition, DataStream from typing import Dict, Any, List class ONNXFunction(StreamPipesFunction): def __init__(self, feature_names: list[str], input_stream: DataStream): output_stream = create_data_stream( name=\"flowrate-prediction\", attributes={ \"is_anomaly\": RuntimeType.BOOLEAN.value }, broker=get_broker_description(input_stream) ) function_definition = FunctionDefinition( consumed_streams=[input_stream.element_id] ).add_output_data_stream(output_stream) self.feature_names = feature_names self.input_name = None self.output_name = None self.session = None super().__init__(function_definition=function_definition) def onServiceStarted(self, context: FunctionContext) -> None: self.session = rt.InferenceSession( path_or_bytes=\"isolation_forest.onnx\", providers=rt.get_available_providers(), ) self.input_name = self.session.get_inputs()[0].name self.output_name = self.session.get_outputs()[0].name def onEvent(self, event: Dict[str, Any], streamId: str) -> None: feature_vector = [] for feature in self.feature_names: feature_vector.append(event[feature]) prediction = self.session.run( [self.output_name], {self.input_name: np.expand_dims(np.array(feature_vector), axis=0).astype(\"float32\")} )[0] output = { \"is_anomaly\": int(prediction[0]) == -1 } self.add_output( stream_id=self.function_definition.get_output_stream_ids()[0], event=output ) def onServiceStopped(self) -> None: pass <p>Let's dive a little deeper into the different parts of the function</p> <ul> <li><p><code>__init__</code>: First, we need to take care of the data stream that is required to send the predictions from our function to StreamPipes. Thus, we create a dedicated output data stream which we need to provide with the attributes our event will consist of (a timestamp attribute is always added automatically). This output data stream needs to be registered at the function definition which is to be passed to the parent class. Lastly, we need to define some instance variables that are mainly required for the ONNX runtime.</p> </li> <li><p><code>onServiceStarted</code>: Here we prepare the ONNX runtime session by creating an <code>InferenceSession</code> and retrieving the corresponding configuration parameters.</p> </li> <li><p><code>onEvent</code>: Following the parameter names specified by <code>self.feature_names</code>, we extract all feature values from the current event. Subsequently, the corresponding feature vector is transmitted to the ONNX runtime session. The resulting prediction is then converted into our output event, where a value of <code>-1</code> signifies an anomaly. Finally, the generated output event is forwarded to StreamPipes.</p> </li> </ul> <p>Having the function code in place, we can start the function with the following:</p> In\u00a0[25]: Copied! <pre>from streampipes.functions.registration import Registration\nfrom streampipes.functions.function_handler import FunctionHandler\n\nstream = [\n stream\n for stream\n in client.dataStreamApi.all()\n if stream.name == \"flow-rate\"\n][0]\n\nfunction = ONNXFunction(\n feature_names=[\"volume_flow\"],\n input_stream=stream\n)\n\nregistration = Registration()\nregistration.register(function)\nfunction_handler = FunctionHandler(registration, client)\nfunction_handler.initializeFunctions()\n</pre> from streampipes.functions.registration import Registration from streampipes.functions.function_handler import FunctionHandler stream = [ stream for stream in client.dataStreamApi.all() if stream.name == \"flow-rate\" ][0] function = ONNXFunction( feature_names=[\"volume_flow\"], input_stream=stream ) registration = Registration() registration.register(function) function_handler = FunctionHandler(registration, client) function_handler.initializeFunctions() <pre>2024-03-26 12:39:50,443 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-03-26 12:39:50,502 - streampipes.functions.function_handler - [INFO] - [function_handler.py:76] [initializeFunctions] - The data stream could not be created.\n2024-03-26 12:39:50,503 - streampipes.functions.function_handler - [INFO] - [function_handler.py:78] [initializeFunctions] - This is due to the fact that this data stream already exists. Continuing with the existing data stream.\n2024-03-26 12:39:50,503 - streampipes.functions.function_handler - [INFO] - [function_handler.py:84] [initializeFunctions] - Using output data stream 'sp:spdatastream:flowrate-prediction' for function '7c06fa31-9534-4f91-9c50-b7a3607ec3dc'\n2024-03-26 12:39:50,548 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-03-26 12:39:50,549 - streampipes.functions.function_handler - [INFO] - [function_handler.py:100] [initializeFunctions] - Using KafkaConsumer for ONNXFunction\n</pre> <p>We can now access the live values of the prediction in the StreamPipes UI, e.g., in the pipeline editor.</p> <p></p> <p>That's already it. We hope this tutorial serves as an illustration how ML models can be utilized in StreamPipes with the help of ONNX.</p> <p>How do you like this tutorial? We hope you like it and would love to receive some feedback from you. Just go to our GitHub discussion page and let us know your impression. We'll read and react to them all, we promise!</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Applying-Interoperable-Machine-Learning-in-StreamPipes","title":"Applying Interoperable Machine Learning in StreamPipes\u00b6","text":"<p>The last tutorial (Using Online Machine Learning on a StreamPipes data stream) demonstrated how patterns in streaming data can be learned online. In contrast, this tutorial demonstrates how one can apply a pre-trained machine learning (ML) model to a StreamPipes data stream making use of ONNX. We will show how StreamPipes can be used for both: extracting historical data for training purposes and using model inference on live data with a pre-trained model.</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Preparation","title":"Preparation\u00b6","text":"<p>The following lines configure the client and establish a connection to the StreamPipes instance. If you're not familiar with it or anything is unclear, please have a look at our first tutorial.</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Machine-Learning-Use-Case","title":"Machine Learning Use Case\u00b6","text":"<p>In this tutorial, we will use data generated by the Machine Data Simulator adapter. More specifically, we will focus on the <code>flowrate</code> data, which consists of various sensor values coming from a water pipe system. Our goal is keep an eye on the parameter <code>volume_flow</code>, which represents the current volume flow in cubic meters/second. For this parameter, we want to detect anomalies that could indicate problems such as leaks, blockages, etc.</p> <p>To get the concerned data, we simply need to create an instance of the machine data simulator and persist the data in the data lake:</p> <p></p> <p>If you choose to perform the model training step yourself, you will need to wait approximately 15 minutes for enough data to be available for model training. If you want to speed this up, you can configure a lower wait time when creating the adapter. Please be aware that this also influences the inference scenario.</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Model-Training-with-Historic-Data","title":"Model Training with Historic Data\u00b6","text":"<p>As said above, the aim of our model is to detect anomalies of the <code>volume_flow</code> parameter. For this task, we will use Isolation Forests. Please note that the focus of the tutorial is not on training the model, so please be patient even though the training is very simplified and lacks important preparation steps such as standardization.</p> <p>As a first step, lets query the <code>flowrate</code> data from the StreamPipes data lake and extract the values of <code>volume_flow</code> as a feature:</p>"},{"location":"tutorials/5-applying-interoperable-machine-learning-in-streampipes/#Model-Inference-with-Live-Data","title":"Model Inference with Live Data\u00b6","text":"<p>Utilizing a pre-trained model within StreamPipes becomes seamless with the ONNX interoperability standard, enabling effortless application of your existing model on live data streams.</p> <p>Interacting with live data from StreamPipes is facilitated through StreamPipes functions. Below, we'll create a Python StreamPipes function that leverages an ONNX model to generate predictions for each incoming event, making the results accessible as a data stream within StreamPipes for subsequent steps.</p> <p>So let's create an <code>ONNXFunction</code> that is capable of applying a model in ONNX representation to a StreamPipes data stream. If you'd like to read more details about how functions are defined, refer to our third tutorial.</p>"},{"location":"tutorials/6-streampipes-function-output-stream/","title":"Creating Output Streams with StreamPipes Functions","text":"<p>A StreamPipes Function is a practical tool to help you receive and send live data from and to your StreamPipes instance. This tutorial provides sample code for creating a StreamPipes Function that defines an output stream so you can get started right away by following the below steps.</p> In\u00a0[3]: Copied! <pre>import os\n\nos.environ[\"BROKER-HOST\"] = \"localhost\"\nos.environ[\"KAFKA-PORT\"] = \"9094\"\napi_key = os.environ.get(\"TOKEN\")\n</pre> import os os.environ[\"BROKER-HOST\"] = \"localhost\" os.environ[\"KAFKA-PORT\"] = \"9094\" api_key = os.environ.get(\"TOKEN\") In\u00a0[4]: Copied! <pre>from streampipes.client import StreamPipesClient\nfrom streampipes.client.config import StreamPipesClientConfig\nfrom streampipes.client.credential_provider import StreamPipesApiKeyCredentials\n\nclient_config = StreamPipesClientConfig(\n credential_provider=StreamPipesApiKeyCredentials(username=\"admin@streampipes.apache.org\", api_key=api_key),\n host_address=\"localhost\",\n port=80,\n https_disabled=True,\n)\nclient = StreamPipesClient(client_config=client_config)\n</pre> from streampipes.client import StreamPipesClient from streampipes.client.config import StreamPipesClientConfig from streampipes.client.credential_provider import StreamPipesApiKeyCredentials client_config = StreamPipesClientConfig( credential_provider=StreamPipesApiKeyCredentials(username=\"admin@streampipes.apache.org\", api_key=api_key), host_address=\"localhost\", port=80, https_disabled=True, ) client = StreamPipesClient(client_config=client_config) <pre>2024-07-30 12:44:07,912 - streampipes.client.client - [INFO] - [client.py:199] [_set_up_logging] - Logging successfully initialized with logging level INFO.\n2024-07-30 12:44:07,995 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-07-30 12:44:07,995 - streampipes.client.client - [INFO] - [client.py:172] [_get_server_version] - The StreamPipes version was successfully retrieved from the backend: 0.95.1. By means of that, authentication via the provided credentials is also tested successfully.\n</pre> In\u00a0[\u00a0]: Copied! <pre>def __init__(self, input_stream: DataStream):\n output_stream = create_data_stream(\n name=\"example-stream\",\n stream_id=\"example-stream\",\n attributes={\n \"number\": RuntimeType.INTEGER.value\n },\n broker=get_broker_description(input_stream)\n )\n</pre> def __init__(self, input_stream: DataStream): output_stream = create_data_stream( name=\"example-stream\", stream_id=\"example-stream\", attributes={ \"number\": RuntimeType.INTEGER.value }, broker=get_broker_description(input_stream) ) <p>You can now add this <code>output_stream</code> to the function definition and pass it to the parent class.</p> In\u00a0[\u00a0]: Copied! <pre>function_definition = FunctionDefinition(\n consumed_streams=[input_stream.element_id]\n ).add_output_data_stream(output_stream)\n\nsuper().__init__(function_definition=function_definition)\n</pre> function_definition = FunctionDefinition( consumed_streams=[input_stream.element_id] ).add_output_data_stream(output_stream) super().__init__(function_definition=function_definition) <p>To create the output event we define a dictionary with the key being equvalent to the key we defined for the <code>attributes</code> in the <code>create_data_stream</code> method. The value will just be 1, for simplicity. Lastly we call the <code>add_output</code> method and use the above specified <code>function_definition</code> to get the <code>stream_id</code>. All this is happening inside the <code>onEvent</code> method of the function because this method will be called for every incoming event.</p> In\u00a0[\u00a0]: Copied! <pre>output = {\n \"number\": 1\n}\n \nself.add_output(\n stream_id=self.function_definition.get_output_stream_ids()[0],\n event=output\n)\n</pre> output = { \"number\": 1 } self.add_output( stream_id=self.function_definition.get_output_stream_ids()[0], event=output ) In\u00a0[5]: Copied! <pre>import pandas as pd\nfrom typing import Dict, Any\nfrom streampipes.functions.streampipes_function import StreamPipesFunction\nfrom streampipes.functions.utils.data_stream_generator import create_data_stream, RuntimeType\nfrom streampipes.functions.broker.broker_handler import get_broker_description\nfrom streampipes.model.resource import FunctionDefinition, DataStream\nfrom streampipes.functions.utils.function_context import FunctionContext\nfrom streampipes.functions.function_handler import FunctionHandler\nfrom streampipes.functions.registration import Registration\n\nclass SimpleFunction(StreamPipesFunction):\n def __init__(self, input_stream: DataStream):\n output_stream = create_data_stream(\n name=\"example-stream\",\n stream_id=\"example-stream\",\n attributes={\n \"number\": RuntimeType.INTEGER.value\n },\n broker=get_broker_description(input_stream)\n )\n \n function_definition = FunctionDefinition(\n consumed_streams=[input_stream.element_id]\n ).add_output_data_stream(output_stream)\n\n super().__init__(function_definition=function_definition)\n\n def onServiceStarted(self, context: FunctionContext):\n pass\n\n def onEvent(self, event: Dict[str, Any], streamId: str):\n output = {\n \"number\": 1\n }\n \n self.add_output(\n stream_id=self.function_definition.get_output_stream_ids()[0],\n event=output\n )\n\n def onServiceStopped(self):\n pass\n</pre> import pandas as pd from typing import Dict, Any from streampipes.functions.streampipes_function import StreamPipesFunction from streampipes.functions.utils.data_stream_generator import create_data_stream, RuntimeType from streampipes.functions.broker.broker_handler import get_broker_description from streampipes.model.resource import FunctionDefinition, DataStream from streampipes.functions.utils.function_context import FunctionContext from streampipes.functions.function_handler import FunctionHandler from streampipes.functions.registration import Registration class SimpleFunction(StreamPipesFunction): def __init__(self, input_stream: DataStream): output_stream = create_data_stream( name=\"example-stream\", stream_id=\"example-stream\", attributes={ \"number\": RuntimeType.INTEGER.value }, broker=get_broker_description(input_stream) ) function_definition = FunctionDefinition( consumed_streams=[input_stream.element_id] ).add_output_data_stream(output_stream) super().__init__(function_definition=function_definition) def onServiceStarted(self, context: FunctionContext): pass def onEvent(self, event: Dict[str, Any], streamId: str): output = { \"number\": 1 } self.add_output( stream_id=self.function_definition.get_output_stream_ids()[0], event=output ) def onServiceStopped(self): pass In\u00a0[6]: Copied! <pre>stream = [stream for stream in client.dataStreamApi.all() if stream.name == \"demo\"][0]\n\nsimple_function = SimpleFunction(input_stream=stream)\n\nregistration = Registration()\nregistration.register(simple_function)\n\nfunction_handler = FunctionHandler(registration, client)\nfunction_handler.initializeFunctions()\n</pre> stream = [stream for stream in client.dataStreamApi.all() if stream.name == \"demo\"][0] simple_function = SimpleFunction(input_stream=stream) registration = Registration() registration.register(simple_function) function_handler = FunctionHandler(registration, client) function_handler.initializeFunctions() <pre>2024-07-30 12:44:25,052 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-07-30 12:44:25,150 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-07-30 12:44:25,150 - streampipes.functions.function_handler - [INFO] - [function_handler.py:84] [initializeFunctions] - Using output data stream 'example-stream' for function '0e4287a7-6936-4fcb-9de4-8d29a7b6c1c6'\n2024-07-30 12:44:25,229 - streampipes.endpoint.endpoint - [INFO] - [endpoint.py:164] [_make_request] - Successfully retrieved all resources.\n2024-07-30 12:44:25,230 - streampipes.functions.function_handler - [INFO] - [function_handler.py:100] [initializeFunctions] - Using KafkaConsumer for SimpleFunction\n</pre> <pre>2024-07-30 12:44:25,247 - streampipes.functions.broker.kafka.kafka_publisher - [INFO] - [kafka_publisher.py:49] [_make_connection] - Connecting to Kafka at localhost:9094\n2024-07-30 12:44:25,250 - streampipes.functions.broker.kafka.kafka_consumer - [INFO] - [kafka_consumer.py:52] [_make_connection] - Connecting to Kafka at localhost:9094\n2024-07-30 12:44:25,251 - streampipes.functions.broker.kafka.kafka_consumer - [INFO] - [kafka_consumer.py:62] [_create_subscription] - Subscribing to stream: sp:spdatastream:PIgznU\n2024-07-30 12:46:12,229 - streampipes.functions.broker.kafka.kafka_publisher - [INFO] - [kafka_publisher.py:73] [disconnect] - Stopped connection to stream: example-stream\n</pre> <p>If we now go into StreamPipes, create a new pipeline and view the info for our output stream we can see the live predictions coming in.</p> <p></p> <p>To stop the function we call the function handler's <code>disconnect</code> method:</p> In\u00a0[7]: Copied! <pre>function_handler.disconnect()\n</pre> function_handler.disconnect() <pre>2024-07-30 12:46:12,171 - streampipes.functions.broker.kafka.kafka_consumer - [INFO] - [kafka_consumer.py:72] [disconnect] - Stopped connection to stream: sp:spdatastream:PIgznU\n</pre> <p>In conclusion, this tutorial has successfully demonstrated how to generate output streams using a StreamPipes Function. We hope you found this tutorial helpful and would appreciate your feedback. Please visit our GitHub discussion page to share your impressions. We promise to read and respond to every comment!</p>"},{"location":"tutorials/6-streampipes-function-output-stream/#Creating-Output-Streams-with-StreamPipes-Functions","title":"Creating Output Streams with StreamPipes Functions\u00b6","text":""},{"location":"tutorials/6-streampipes-function-output-stream/#Connecting-to-your-StreamPipes-instance","title":"Connecting to your StreamPipes instance\u00b6","text":"<p>In order to receive and send live data from and to StreamPipes you will first have to connect to your instance by creating a StreamPipes Client by following the usual procedure. In this case we will be connecting to a local instance using Kafka. If you haven't already, you will need to open the kafka port manually inside the docker compose file by adding the following The following port mapping inside the <code>kafka</code> node:</p> <pre><code>yml\nports:\n - \"9094:9094\"\n</code></pre>"},{"location":"tutorials/6-streampipes-function-output-stream/#Creating-an-output-stream","title":"Creating an output stream\u00b6","text":"<p>You can create an output stream by using the <code>create_data_stream</code> method inside the functions <code>init</code> method. You need to specify the name that will be used to display the stream in StreamPipes alongside its <code>stream_id</code>, <code>attributes</code>, and the <code>broker</code>.</p>"},{"location":"tutorials/6-streampipes-function-output-stream/#Creating-the-StreamPipes-Function","title":"Creating the StreamPipes Function\u00b6","text":"<p>The code below shows an example function and also demonstrates how to include the output stream creation.</p>"},{"location":"tutorials/6-streampipes-function-output-stream/#Instantiating-and-starting-the-function","title":"Instantiating and starting the function\u00b6","text":"<p>To instantiate the function we pass the required input stream, then we register the function using an instance of the class <code>Registration</code> after which we can use the function handler to initialize all registered functions using the client. In this case, our input stream is named 'demo'. You will need to replace this name with the name of the input stream you wish to use.</p>"}]}
\ No newline at end of file
diff --git a/docs-python/dev/sitemap.xml b/docs-python/dev/sitemap.xml
index c5c17d8..37a34e4 100644
--- a/docs-python/dev/sitemap.xml
+++ b/docs-python/dev/sitemap.xml
@@ -2,247 +2,247 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/getting-started/developing/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/getting-started/first-steps/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/getting-started/quickstart/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/client/client/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/client/config/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/client/credential_provider/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/endpoint/endpoint/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/endpoint/exceptions/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/endpoint/api/data_lake_measure/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/endpoint/api/data_stream/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/endpoint/api/version/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/function_zoo/river_function/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/function_handler/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/registration/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/streampipes_function/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/broker/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/broker_handler/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/consumer/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/output_collector/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/publisher/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/kafka/kafka_consumer/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/kafka/kafka_message_fetcher/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/kafka/kafka_publisher/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/nats/nats_consumer/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/broker/nats/nats_publisher/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/utils/async_iter_handler/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/utils/data_stream_context/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/utils/data_stream_generator/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/functions/utils/function_context/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/common/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/container/data_lake_measures/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/container/data_streams/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/container/resource_container/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/container/versions/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/resource/data_lake_measure/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/resource/data_series/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/resource/data_stream/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/resource/exceptions/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/resource/function_definition/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/resource/query_result/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/resource/resource/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/reference/model/resource/version/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/tutorials/1-introduction-to-streampipes-python-client/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/tutorials/2-extracting-data-from-the-streampipes-data-lake/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/tutorials/3-getting-live-data-from-the-streampipes-data-stream/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/tutorials/5-applying-interoperable-machine-learning-in-streampipes/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://streampipes.apache.org/docs/docs/python/latest/latest/tutorials/6-streampipes-function-output-stream/</loc>
- <lastmod>2024-12-07</lastmod>
+ <lastmod>2025-07-26</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>
\ No newline at end of file
diff --git a/docs-python/dev/sitemap.xml.gz b/docs-python/dev/sitemap.xml.gz
index b443b6b..cf4ef6b 100644
--- a/docs-python/dev/sitemap.xml.gz
+++ b/docs-python/dev/sitemap.xml.gz
Binary files differ
diff --git a/docs-python/dev/tutorials/1-introduction-to-streampipes-python-client/index.html b/docs-python/dev/tutorials/1-introduction-to-streampipes-python-client/index.html
index 15377e0..a71ee17 100644
--- a/docs-python/dev/tutorials/1-introduction-to-streampipes-python-client/index.html
+++ b/docs-python/dev/tutorials/1-introduction-to-streampipes-python-client/index.html
@@ -3323,6 +3323,7 @@
processEnvironments: true
},
displayAlign: 'center',
+ messageStyle: 'none',
CommonHTML: {
linebreaks: {
automatic: true
@@ -3482,9 +3483,9 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
</pre></div>
<div class="clipboard-copy-txt" id="cell-3">from streampipes.client import StreamPipesClient
from streampipes.client.config import StreamPipesClientConfig
@@ -3609,7 +3610,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"SP_USERNAME"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"admin@streampipes.apache.org"</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"SP_API_KEY"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"XXX"</span>
</pre></div>
@@ -3748,7 +3749,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">June 18, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 18, 2024 20:36:12">June 18, 2024</span>
</small>
diff --git a/docs-python/dev/tutorials/2-extracting-data-from-the-streampipes-data-lake/index.html b/docs-python/dev/tutorials/2-extracting-data-from-the-streampipes-data-lake/index.html
index 4258692..b213c31 100644
--- a/docs-python/dev/tutorials/2-extracting-data-from-the-streampipes-data-lake/index.html
+++ b/docs-python/dev/tutorials/2-extracting-data-from-the-streampipes-data-lake/index.html
@@ -3229,6 +3229,7 @@
processEnvironments: true
},
displayAlign: 'center',
+ messageStyle: 'none',
CommonHTML: {
linebreaks: {
automatic: true
@@ -3274,9 +3275,9 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
</pre></div>
<div class="clipboard-copy-txt" id="cell-1">from streampipes.client import StreamPipesClient
from streampipes.client.config import StreamPipesClientConfig
@@ -3336,7 +3337,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"SP_USERNAME"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"admin@streampipes.apache.org"</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"SP_API_KEY"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"XXX"</span>
</pre></div>
@@ -3980,7 +3981,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
<span class="n">flow_rate_pd</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">y</span><span class="o">=</span><span class="p">[</span><span class="s2">"mass_flow"</span><span class="p">,</span> <span class="s2">"temperature"</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
@@ -4248,7 +4249,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">datetime</span><span class="w"> </span><span class="kn">import</span> <span class="n">datetime</span>
<span class="n">flow_rate_pd</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">dataLakeMeasureApi</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
<span class="n">identifier</span><span class="o">=</span><span class="s2">"flow-rate"</span><span class="p">,</span>
<span class="n">start_date</span><span class="o">=</span><span class="n">datetime</span><span class="p">(</span><span class="n">year</span><span class="o">=</span><span class="mi">2023</span><span class="p">,</span> <span class="n">month</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">day</span><span class="o">=</span><span class="mi">24</span><span class="p">,</span> <span class="n">hour</span><span class="o">=</span><span class="mi">17</span><span class="p">,</span> <span class="n">minute</span><span class="o">=</span><span class="mi">21</span><span class="p">,</span> <span class="n">second</span><span class="o">=</span><span class="mi">0</span><span class="p">),</span>
@@ -4349,7 +4350,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">June 18, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 18, 2024 20:36:12">June 18, 2024</span>
</small>
diff --git a/docs-python/dev/tutorials/3-getting-live-data-from-the-streampipes-data-stream/index.html b/docs-python/dev/tutorials/3-getting-live-data-from-the-streampipes-data-stream/index.html
index 9271b24..7d0850a 100644
--- a/docs-python/dev/tutorials/3-getting-live-data-from-the-streampipes-data-stream/index.html
+++ b/docs-python/dev/tutorials/3-getting-live-data-from-the-streampipes-data-stream/index.html
@@ -3229,6 +3229,7 @@
processEnvironments: true
},
displayAlign: 'center',
+ messageStyle: 'none',
CommonHTML: {
linebreaks: {
automatic: true
@@ -3285,9 +3286,9 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
</pre></div>
<div class="clipboard-copy-txt" id="cell-1">from streampipes.client import StreamPipesClient
from streampipes.client.config import StreamPipesClientConfig
@@ -3345,7 +3346,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"SP_USERNAME"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"admin@streampipes.apache.org"</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"SP_API_KEY"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"XXX"</span>
@@ -3606,29 +3607,29 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span>
-<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
-<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
-<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.function_handler</span> <span class="kn">import</span> <span class="n">FunctionHandler</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.registration</span> <span class="kn">import</span> <span class="n">Registration</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.streampipes_function</span> <span class="kn">import</span> <span class="n">StreamPipesFunction</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.utils.function_context</span> <span class="kn">import</span> <span class="n">FunctionContext</span>
-<span class="kn">from</span> <span class="nn">streampipes.model.resource.function_definition</span> <span class="kn">import</span> <span class="n">FunctionDefinition</span><span class="p">,</span> <span class="n">FunctionId</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span>
+<span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">datetime</span><span class="w"> </span><span class="kn">import</span> <span class="n">datetime</span>
+<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.function_handler</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionHandler</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.registration</span><span class="w"> </span><span class="kn">import</span> <span class="n">Registration</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.streampipes_function</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesFunction</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.utils.function_context</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionContext</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.model.resource.function_definition</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionDefinition</span><span class="p">,</span> <span class="n">FunctionId</span>
-<span class="k">class</span> <span class="nc">ExampleFunction</span><span class="p">(</span><span class="n">StreamPipesFunction</span><span class="p">):</span>
- <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_definition</span><span class="p">:</span> <span class="n">FunctionDefinition</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
+<span class="k">class</span><span class="w"> </span><span class="nc">ExampleFunction</span><span class="p">(</span><span class="n">StreamPipesFunction</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">function_definition</span><span class="p">:</span> <span class="n">FunctionDefinition</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">function_definition</span><span class="p">)</span>
<span class="c1"># Create the Dataframe to save the live data</span>
<span class="bp">self</span><span class="o">.</span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">()</span>
- <span class="k">def</span> <span class="nf">onServiceStarted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="n">FunctionContext</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onServiceStarted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="n">FunctionContext</span><span class="p">):</span>
<span class="c1"># Get the name of the timestamp field</span>
<span class="k">for</span> <span class="n">event_property</span> <span class="ow">in</span> <span class="n">context</span><span class="o">.</span><span class="n">schema</span><span class="p">[</span><span class="n">context</span><span class="o">.</span><span class="n">streams</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span><span class="o">.</span><span class="n">event_schema</span><span class="o">.</span><span class="n">event_properties</span><span class="p">:</span>
<span class="k">if</span> <span class="n">event_property</span><span class="o">.</span><span class="n">property_scope</span> <span class="o">==</span> <span class="s2">"HEADER_PROPERTY"</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span> <span class="o">=</span> <span class="n">event_property</span><span class="o">.</span><span class="n">runtime_name</span>
- <span class="k">def</span> <span class="nf">onEvent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">streamId</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onEvent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">streamId</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
<span class="c1"># Convert the unix timestamp to datetime</span>
<span class="n">event</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">]</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">fromtimestamp</span><span class="p">(</span><span class="n">event</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">]</span> <span class="o">/</span> <span class="mi">1000</span><span class="p">)</span>
<span class="c1"># Add every value of the event to the DataFrame</span>
@@ -3636,7 +3637,7 @@
<span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="p">,</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="p">[</span><span class="n">event</span><span class="p">[</span><span class="n">key</span><span class="p">]]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">event</span><span class="o">.</span><span class="n">keys</span><span class="p">()})</span><span class="o">.</span><span class="n">set_index</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">)]</span>
<span class="p">)</span>
- <span class="k">def</span> <span class="nf">onServiceStopped</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onServiceStopped</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1"># Plot the first column of the Dataframe</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">5</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">)</span>
@@ -3790,9 +3791,9 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">asyncio</span>
-<span class="kn">from</span> <span class="nn">asyncio.exceptions</span> <span class="kn">import</span> <span class="n">CancelledError</span>
-<span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">clear_output</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">asyncio</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">asyncio.exceptions</span><span class="w"> </span><span class="kn">import</span> <span class="n">CancelledError</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">IPython.display</span><span class="w"> </span><span class="kn">import</span> <span class="n">clear_output</span>
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
<span class="n">clear_output</span><span class="p">(</span><span class="n">wait</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
@@ -4091,7 +4092,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">October 2, 2023</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="October 2, 2023 07:54:16">October 2, 2023</span>
</small>
diff --git a/docs-python/dev/tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/index.html b/docs-python/dev/tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/index.html
index 33f4199..c01c3f7 100644
--- a/docs-python/dev/tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/index.html
+++ b/docs-python/dev/tutorials/4-using-online-machine-learning-on-a-streampipes-data-stream/index.html
@@ -3323,6 +3323,7 @@
processEnvironments: true
},
displayAlign: 'center',
+ messageStyle: 'none',
CommonHTML: {
linebreaks: {
automatic: true
@@ -3365,9 +3366,9 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
</pre></div>
<div class="clipboard-copy-txt" id="cell-1">from streampipes.client import StreamPipesClient
from streampipes.client.config import StreamPipesClientConfig
@@ -3425,7 +3426,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"SP_USERNAME"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"admin@streampipes.apache.org"</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"SP_API_KEY"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"XXX"</span>
@@ -3688,9 +3689,9 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">river</span> <span class="kn">import</span> <span class="n">cluster</span><span class="p">,</span> <span class="n">compose</span><span class="p">,</span> <span class="n">preprocessing</span>
-<span class="kn">from</span> <span class="nn">streampipes.function_zoo.river_function</span> <span class="kn">import</span> <span class="n">OnlineML</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.utils.data_stream_generator</span> <span class="kn">import</span> <span class="n">RuntimeType</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">river</span><span class="w"> </span><span class="kn">import</span> <span class="n">cluster</span><span class="p">,</span> <span class="n">compose</span><span class="p">,</span> <span class="n">preprocessing</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.function_zoo.river_function</span><span class="w"> </span><span class="kn">import</span> <span class="n">OnlineML</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.utils.data_stream_generator</span><span class="w"> </span><span class="kn">import</span> <span class="n">RuntimeType</span>
<span class="n">k_means</span> <span class="o">=</span> <span class="n">compose</span><span class="o">.</span><span class="n">Pipeline</span><span class="p">(</span>
<span class="p">(</span><span class="s2">"drop_features"</span><span class="p">,</span> <span class="n">compose</span><span class="o">.</span><span class="n">Discard</span><span class="p">(</span><span class="s2">"sensorId"</span><span class="p">,</span> <span class="s2">"timestamp"</span><span class="p">)),</span>
@@ -3845,10 +3846,10 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">pickle</span>
-<span class="kn">from</span> <span class="nn">river</span> <span class="kn">import</span> <span class="n">compose</span><span class="p">,</span> <span class="n">tree</span>
-<span class="kn">from</span> <span class="nn">streampipes.function_zoo.river_function</span> <span class="kn">import</span> <span class="n">OnlineML</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.utils.data_stream_generator</span> <span class="kn">import</span> <span class="n">RuntimeType</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">pickle</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">river</span><span class="w"> </span><span class="kn">import</span> <span class="n">compose</span><span class="p">,</span> <span class="n">tree</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.function_zoo.river_function</span><span class="w"> </span><span class="kn">import</span> <span class="n">OnlineML</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.utils.data_stream_generator</span><span class="w"> </span><span class="kn">import</span> <span class="n">RuntimeType</span>
<span class="n">hoeffding_tree</span> <span class="o">=</span> <span class="n">compose</span><span class="o">.</span><span class="n">Pipeline</span><span class="p">(</span>
<span class="p">(</span><span class="s2">"drop_features"</span><span class="p">,</span> <span class="n">compose</span><span class="o">.</span><span class="n">Discard</span><span class="p">(</span><span class="s2">"sensorId"</span><span class="p">,</span> <span class="s2">"timestamp"</span><span class="p">)),</span>
@@ -3856,14 +3857,14 @@
<span class="p">)</span>
-<span class="k">def</span> <span class="nf">draw_tree</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">):</span>
+<span class="k">def</span><span class="w"> </span><span class="nf">draw_tree</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">):</span>
<span class="w"> </span><span class="sd">"""Draw the tree and save the image."""</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">learning</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">n_nodes</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s2">"hoeffding_tree"</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s2">"png"</span><span class="p">,</span> <span class="n">cleanup</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-<span class="k">def</span> <span class="nf">save_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="k">def</span><span class="w"> </span><span class="nf">save_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">"""Save the trained model."""</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">"hoeffding_tree.pkl"</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">f</span><span class="p">)</span>
@@ -4005,10 +4006,10 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">pickle</span>
-<span class="kn">from</span> <span class="nn">river</span> <span class="kn">import</span> <span class="n">compose</span><span class="p">,</span> <span class="n">tree</span>
-<span class="kn">from</span> <span class="nn">streampipes.function_zoo.river_function</span> <span class="kn">import</span> <span class="n">OnlineML</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.utils.data_stream_generator</span> <span class="kn">import</span> <span class="n">RuntimeType</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">pickle</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">river</span><span class="w"> </span><span class="kn">import</span> <span class="n">compose</span><span class="p">,</span> <span class="n">tree</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.function_zoo.river_function</span><span class="w"> </span><span class="kn">import</span> <span class="n">OnlineML</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.utils.data_stream_generator</span><span class="w"> </span><span class="kn">import</span> <span class="n">RuntimeType</span>
<span class="n">decision_tree</span> <span class="o">=</span> <span class="n">compose</span><span class="o">.</span><span class="n">Pipeline</span><span class="p">(</span>
<span class="p">(</span><span class="s2">"drop_features"</span><span class="p">,</span> <span class="n">compose</span><span class="o">.</span><span class="n">Discard</span><span class="p">(</span><span class="s2">"sensorId"</span><span class="p">,</span> <span class="s2">"timestamp"</span><span class="p">)),</span>
@@ -4016,14 +4017,14 @@
<span class="p">)</span>
-<span class="k">def</span> <span class="nf">draw_tree</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">):</span>
+<span class="k">def</span><span class="w"> </span><span class="nf">draw_tree</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">streamId</span><span class="p">):</span>
<span class="w"> </span><span class="sd">"""Draw the tree and save the image."""</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">learning</span><span class="p">:</span>
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">n_nodes</span> <span class="o">!=</span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">draw</span><span class="p">()</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="s2">"decicion_tree"</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="s2">"png"</span><span class="p">,</span> <span class="n">cleanup</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-<span class="k">def</span> <span class="nf">save_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+<span class="k">def</span><span class="w"> </span><span class="nf">save_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="w"> </span><span class="sd">"""Save the trained model."""</span>
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">"decision_tree.pkl"</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
<span class="n">pickle</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model</span><span class="p">,</span> <span class="n">f</span><span class="p">)</span>
@@ -4190,7 +4191,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">April 3, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="April 3, 2024 07:17:12">April 3, 2024</span>
</small>
diff --git a/docs-python/dev/tutorials/5-applying-interoperable-machine-learning-in-streampipes/index.html b/docs-python/dev/tutorials/5-applying-interoperable-machine-learning-in-streampipes/index.html
index 033e51b..5ec5ce8 100644
--- a/docs-python/dev/tutorials/5-applying-interoperable-machine-learning-in-streampipes/index.html
+++ b/docs-python/dev/tutorials/5-applying-interoperable-machine-learning-in-streampipes/index.html
@@ -3323,6 +3323,7 @@
processEnvironments: true
},
displayAlign: 'center',
+ messageStyle: 'none',
CommonHTML: {
linebreaks: {
automatic: true
@@ -3405,10 +3406,10 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
-<span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"BROKER-HOST"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"localhost"</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"KAFKA-PORT"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"9094"</span> <span class="c1"># When using Kafka as message broker</span>
@@ -3576,7 +3577,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="kn">import</span> <span class="n">IsolationForest</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.ensemble</span><span class="w"> </span><span class="kn">import</span> <span class="n">IsolationForest</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">IsolationForest</span><span class="p">(</span><span class="n">contamination</span><span class="o">=</span><span class="mf">0.01</span><span class="p">)</span>
<span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
@@ -4047,7 +4048,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
<span class="n">flowrate_df</span><span class="p">[</span><span class="s2">"anomaly"</span><span class="p">]</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">X</span><span class="p">)</span>
@@ -4115,8 +4116,8 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">onnxconverter_common</span> <span class="kn">import</span> <span class="n">FloatTensorType</span>
-<span class="kn">from</span> <span class="nn">skl2onnx</span> <span class="kn">import</span> <span class="n">to_onnx</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">onnxconverter_common</span><span class="w"> </span><span class="kn">import</span> <span class="n">FloatTensorType</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">skl2onnx</span><span class="w"> </span><span class="kn">import</span> <span class="n">to_onnx</span>
<span class="n">model_onnx</span> <span class="o">=</span> <span class="n">to_onnx</span><span class="p">(</span>
<span class="n">model</span><span class="p">,</span>
@@ -4175,21 +4176,21 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
-<span class="kn">import</span> <span class="nn">onnxruntime</span> <span class="k">as</span> <span class="nn">rt</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
+<span class="kn">import</span><span class="w"> </span><span class="nn">onnxruntime</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">rt</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.broker.broker_handler</span> <span class="kn">import</span> <span class="n">get_broker_description</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.streampipes_function</span> <span class="kn">import</span> <span class="n">StreamPipesFunction</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.utils.data_stream_generator</span> <span class="kn">import</span> <span class="n">create_data_stream</span><span class="p">,</span> <span class="n">RuntimeType</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.utils.function_context</span> <span class="kn">import</span> <span class="n">FunctionContext</span>
-<span class="kn">from</span> <span class="nn">streampipes.model.resource</span> <span class="kn">import</span> <span class="n">FunctionDefinition</span><span class="p">,</span> <span class="n">DataStream</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.broker.broker_handler</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_broker_description</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.streampipes_function</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesFunction</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.utils.data_stream_generator</span><span class="w"> </span><span class="kn">import</span> <span class="n">create_data_stream</span><span class="p">,</span> <span class="n">RuntimeType</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.utils.function_context</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionContext</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.model.resource</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionDefinition</span><span class="p">,</span> <span class="n">DataStream</span>
-<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span><span class="p">,</span> <span class="n">List</span>
-<span class="k">class</span> <span class="nc">ONNXFunction</span><span class="p">(</span><span class="n">StreamPipesFunction</span><span class="p">):</span>
+<span class="k">class</span><span class="w"> </span><span class="nc">ONNXFunction</span><span class="p">(</span><span class="n">StreamPipesFunction</span><span class="p">):</span>
- <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">feature_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">input_stream</span><span class="p">:</span> <span class="n">DataStream</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">feature_names</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">input_stream</span><span class="p">:</span> <span class="n">DataStream</span><span class="p">):</span>
<span class="n">output_stream</span> <span class="o">=</span> <span class="n">create_data_stream</span><span class="p">(</span>
<span class="n">name</span><span class="o">=</span><span class="s2">"flowrate-prediction"</span><span class="p">,</span>
<span class="n">attributes</span><span class="o">=</span><span class="p">{</span>
@@ -4209,7 +4210,7 @@
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">function_definition</span><span class="o">=</span><span class="n">function_definition</span><span class="p">)</span>
- <span class="k">def</span> <span class="nf">onServiceStarted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="n">FunctionContext</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onServiceStarted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="n">FunctionContext</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">session</span> <span class="o">=</span> <span class="n">rt</span><span class="o">.</span><span class="n">InferenceSession</span><span class="p">(</span>
<span class="n">path_or_bytes</span><span class="o">=</span><span class="s2">"isolation_forest.onnx"</span><span class="p">,</span>
<span class="n">providers</span><span class="o">=</span><span class="n">rt</span><span class="o">.</span><span class="n">get_available_providers</span><span class="p">(),</span>
@@ -4217,7 +4218,7 @@
<span class="bp">self</span><span class="o">.</span><span class="n">input_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">get_inputs</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span>
<span class="bp">self</span><span class="o">.</span><span class="n">output_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">get_outputs</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span>
- <span class="k">def</span> <span class="nf">onEvent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">streamId</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onEvent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">streamId</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
<span class="n">feature_vector</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">feature</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">feature_names</span><span class="p">:</span>
<span class="n">feature_vector</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">event</span><span class="p">[</span><span class="n">feature</span><span class="p">])</span>
@@ -4236,7 +4237,7 @@
<span class="n">event</span><span class="o">=</span><span class="n">output</span>
<span class="p">)</span>
- <span class="k">def</span> <span class="nf">onServiceStopped</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onServiceStopped</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
<span class="k">pass</span>
</pre></div>
<div class="clipboard-copy-txt" id="cell-7">import numpy as np
@@ -4346,8 +4347,8 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">streampipes.functions.registration</span> <span class="kn">import</span> <span class="n">Registration</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.function_handler</span> <span class="kn">import</span> <span class="n">FunctionHandler</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.registration</span><span class="w"> </span><span class="kn">import</span> <span class="n">Registration</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.function_handler</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionHandler</span>
<span class="n">stream</span> <span class="o">=</span> <span class="p">[</span>
<span class="n">stream</span>
@@ -4462,7 +4463,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">June 18, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 18, 2024 20:36:12">June 18, 2024</span>
</small>
diff --git a/docs-python/dev/tutorials/6-streampipes-function-output-stream/index.html b/docs-python/dev/tutorials/6-streampipes-function-output-stream/index.html
index beb08d0..17d09f0 100644
--- a/docs-python/dev/tutorials/6-streampipes-function-output-stream/index.html
+++ b/docs-python/dev/tutorials/6-streampipes-function-output-stream/index.html
@@ -3323,6 +3323,7 @@
processEnvironments: true
},
displayAlign: 'center',
+ messageStyle: 'none',
CommonHTML: {
linebreaks: {
automatic: true
@@ -3391,7 +3392,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"BROKER-HOST"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"localhost"</span>
<span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"KAFKA-PORT"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"9094"</span>
@@ -3426,9 +3427,9 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span> <span class="nn">streampipes.client</span> <span class="kn">import</span> <span class="n">StreamPipesClient</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.config</span> <span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
-<span class="kn">from</span> <span class="nn">streampipes.client.credential_provider</span> <span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClient</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.config</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesClientConfig</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.client.credential_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesApiKeyCredentials</span>
<span class="n">client_config</span> <span class="o">=</span> <span class="n">StreamPipesClientConfig</span><span class="p">(</span>
<span class="n">credential_provider</span><span class="o">=</span><span class="n">StreamPipesApiKeyCredentials</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="s2">"admin@streampipes.apache.org"</span><span class="p">,</span> <span class="n">api_key</span><span class="o">=</span><span class="n">api_key</span><span class="p">),</span>
@@ -3499,7 +3500,7 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">input_stream</span><span class="p">:</span> <span class="n">DataStream</span><span class="p">):</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">input_stream</span><span class="p">:</span> <span class="n">DataStream</span><span class="p">):</span>
<span class="n">output_stream</span> <span class="o">=</span> <span class="n">create_data_stream</span><span class="p">(</span>
<span class="n">name</span><span class="o">=</span><span class="s2">"example-stream"</span><span class="p">,</span>
<span class="n">stream_id</span><span class="o">=</span><span class="s2">"example-stream"</span><span class="p">,</span>
@@ -3651,18 +3652,18 @@
</div>
</clipboard-copy>
</div>
-<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
-<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.streampipes_function</span> <span class="kn">import</span> <span class="n">StreamPipesFunction</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.utils.data_stream_generator</span> <span class="kn">import</span> <span class="n">create_data_stream</span><span class="p">,</span> <span class="n">RuntimeType</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.broker.broker_handler</span> <span class="kn">import</span> <span class="n">get_broker_description</span>
-<span class="kn">from</span> <span class="nn">streampipes.model.resource</span> <span class="kn">import</span> <span class="n">FunctionDefinition</span><span class="p">,</span> <span class="n">DataStream</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.utils.function_context</span> <span class="kn">import</span> <span class="n">FunctionContext</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.function_handler</span> <span class="kn">import</span> <span class="n">FunctionHandler</span>
-<span class="kn">from</span> <span class="nn">streampipes.functions.registration</span> <span class="kn">import</span> <span class="n">Registration</span>
+<div class="highlight-ipynb hl-python"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">Dict</span><span class="p">,</span> <span class="n">Any</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.streampipes_function</span><span class="w"> </span><span class="kn">import</span> <span class="n">StreamPipesFunction</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.utils.data_stream_generator</span><span class="w"> </span><span class="kn">import</span> <span class="n">create_data_stream</span><span class="p">,</span> <span class="n">RuntimeType</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.broker.broker_handler</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_broker_description</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.model.resource</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionDefinition</span><span class="p">,</span> <span class="n">DataStream</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.utils.function_context</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionContext</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.function_handler</span><span class="w"> </span><span class="kn">import</span> <span class="n">FunctionHandler</span>
+<span class="kn">from</span><span class="w"> </span><span class="nn">streampipes.functions.registration</span><span class="w"> </span><span class="kn">import</span> <span class="n">Registration</span>
-<span class="k">class</span> <span class="nc">SimpleFunction</span><span class="p">(</span><span class="n">StreamPipesFunction</span><span class="p">):</span>
- <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">input_stream</span><span class="p">:</span> <span class="n">DataStream</span><span class="p">):</span>
+<span class="k">class</span><span class="w"> </span><span class="nc">SimpleFunction</span><span class="p">(</span><span class="n">StreamPipesFunction</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">input_stream</span><span class="p">:</span> <span class="n">DataStream</span><span class="p">):</span>
<span class="n">output_stream</span> <span class="o">=</span> <span class="n">create_data_stream</span><span class="p">(</span>
<span class="n">name</span><span class="o">=</span><span class="s2">"example-stream"</span><span class="p">,</span>
<span class="n">stream_id</span><span class="o">=</span><span class="s2">"example-stream"</span><span class="p">,</span>
@@ -3678,10 +3679,10 @@
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">function_definition</span><span class="o">=</span><span class="n">function_definition</span><span class="p">)</span>
- <span class="k">def</span> <span class="nf">onServiceStarted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="n">FunctionContext</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onServiceStarted</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">:</span> <span class="n">FunctionContext</span><span class="p">):</span>
<span class="k">pass</span>
- <span class="k">def</span> <span class="nf">onEvent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">streamId</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onEvent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">],</span> <span class="n">streamId</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
<span class="n">output</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">"number"</span><span class="p">:</span> <span class="mi">1</span>
<span class="p">}</span>
@@ -3691,7 +3692,7 @@
<span class="n">event</span><span class="o">=</span><span class="n">output</span>
<span class="p">)</span>
- <span class="k">def</span> <span class="nf">onServiceStopped</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
+ <span class="k">def</span><span class="w"> </span><span class="nf">onServiceStopped</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
</pre></div>
<div class="clipboard-copy-txt" id="cell-6">import pandas as pd
@@ -3906,7 +3907,7 @@
<small>
Last update:
- <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 31, 2024</span>
+ <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="July 31, 2024 11:47:45">July 31, 2024</span>
</small>