0.9.4: delete 0.9.3 and add 0.9.4
@@ -1,4 +0,0 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: 0eb6a69a1b9eb06359628b622ff60831
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 178 KiB |
|
Before Width: | Height: | Size: 222 KiB |
|
Before Width: | Height: | Size: 453 KiB |
|
Before Width: | Height: | Size: 496 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 442 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 225 KiB |
|
Before Width: | Height: | Size: 8.9 KiB |
@@ -1,129 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.data_context — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.data_context</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.data_context</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""This module contains the definition of the DataContext."""</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="DataContext">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.data_context.html#hansken_extraction_plugin.api.data_context.DataContext">[docs]</a>
|
||||
<span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">DataContext</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""This class contains the data context of a plugin that is processing a trace."""</span>
|
||||
|
||||
<span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span> <span class="c1">#: the named data type that is being processed</span>
|
||||
<span class="n">data_size</span><span class="p">:</span> <span class="nb">int</span> <span class="c1">#: the size / total length of the data stream that is being processed</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="c1"># override the default equality check, a subclass is considered equal as long as it matches all the fields this</span>
|
||||
<span class="c1"># type describes</span>
|
||||
<span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">DataContext</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_size</span><span class="p">)</span> <span class="o">==</span> <span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">data_type</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">data_size</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,227 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.extraction_plugin — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.extraction_plugin</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.extraction_plugin</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">This module contains the different types of Extraction Plugins.</span>
|
||||
|
||||
<span class="sd">The types of Extraction Plugins differ in their process functions.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">ABC</span><span class="p">,</span> <span class="n">abstractmethod</span>
|
||||
<span class="kn">import</span><span class="w"> </span><span class="nn">inspect</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">List</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.data_context</span><span class="w"> </span><span class="kn">import</span> <span class="n">DataContext</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.extraction_trace</span><span class="w"> </span><span class="kn">import</span> <span class="n">ExtractionTrace</span><span class="p">,</span> <span class="n">MetaExtractionTrace</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.plugin_info</span><span class="w"> </span><span class="kn">import</span> <span class="n">PluginInfo</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.trace_searcher</span><span class="w"> </span><span class="kn">import</span> <span class="n">TraceSearcher</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.transformer</span><span class="w"> </span><span class="kn">import</span> <span class="n">Transformer</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.decorators.transformer</span><span class="w"> </span><span class="kn">import</span> <span class="n">transformer_registry</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="BaseExtractionPlugin">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_plugin.html#hansken_extraction_plugin.api.extraction_plugin.BaseExtractionPlugin">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">BaseExtractionPlugin</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""All Extraction Plugins are derived from this class."""</span>
|
||||
|
||||
<div class="viewcode-block" id="BaseExtractionPlugin.plugin_info">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_plugin.html#hansken_extraction_plugin.api.extraction_plugin.BaseExtractionPlugin.plugin_info">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">plugin_info</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">PluginInfo</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""Return information about this extraction plugin."""</span></div>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">transformers</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">Transformer</span><span class="p">]:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Dynamically retrieves the transformer methods that were decorated with @transform.</span>
|
||||
|
||||
<span class="sd"> Note: This method will retrieve transformers for superclasses as well.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Retrieve all super classes of a plugin so that we can also retrieve transformers of super classes.</span>
|
||||
<span class="c1"># Note: This also contains the more specific instance this method might be called on as well.</span>
|
||||
<span class="n">base_classes</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">getmro</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Check for each (super) class of the plugin if transformers have been registered.</span>
|
||||
<span class="n">transformers</span> <span class="o">=</span> <span class="p">[</span>
|
||||
<span class="n">transformer</span> <span class="k">for</span> <span class="n">cl</span> <span class="ow">in</span> <span class="n">base_classes</span>
|
||||
<span class="k">if</span> <span class="n">cl</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="n">transformer_registry</span>
|
||||
<span class="k">for</span> <span class="n">transformer</span> <span class="ow">in</span> <span class="n">transformer_registry</span><span class="p">[</span><span class="n">cl</span><span class="o">.</span><span class="vm">__name__</span><span class="p">]</span>
|
||||
<span class="p">]</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">transformers</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionPlugin">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_plugin.html#hansken_extraction_plugin.api.extraction_plugin.ExtractionPlugin">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">ExtractionPlugin</span><span class="p">(</span><span class="n">BaseExtractionPlugin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Default extraction plugin, that processes a trace and one of its datastreams."""</span>
|
||||
|
||||
<div class="viewcode-block" id="ExtractionPlugin.process">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_plugin.html#hansken_extraction_plugin.api.extraction_plugin.ExtractionPlugin.process">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">process</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trace</span><span class="p">:</span> <span class="n">ExtractionTrace</span><span class="p">,</span> <span class="n">data_context</span><span class="p">:</span> <span class="n">DataContext</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Process a given trace.</span>
|
||||
|
||||
<span class="sd"> This method is called for every trace that is processed by this tool.</span>
|
||||
|
||||
<span class="sd"> :param trace: Trace that is being processed</span>
|
||||
<span class="sd"> :param data_context: Data data_context describing the data stream that is being processed</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MetaExtractionPlugin">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_plugin.html#hansken_extraction_plugin.api.extraction_plugin.MetaExtractionPlugin">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">MetaExtractionPlugin</span><span class="p">(</span><span class="n">BaseExtractionPlugin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Extraction Plugin that processes a trace only with its metadata, without processing its data."""</span>
|
||||
|
||||
<div class="viewcode-block" id="MetaExtractionPlugin.process">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_plugin.html#hansken_extraction_plugin.api.extraction_plugin.MetaExtractionPlugin.process">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">process</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trace</span><span class="p">:</span> <span class="n">MetaExtractionTrace</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Process a given trace.</span>
|
||||
|
||||
<span class="sd"> This method is called for every trace that is processed by this tool.</span>
|
||||
|
||||
<span class="sd"> :param trace: Trace that is being processed</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="DeferredExtractionPlugin">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_plugin.html#hansken_extraction_plugin.api.extraction_plugin.DeferredExtractionPlugin">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">DeferredExtractionPlugin</span><span class="p">(</span><span class="n">BaseExtractionPlugin</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Extraction Plugin that can be run at a different extraction stage.</span>
|
||||
|
||||
<span class="sd"> This type of plugin also allows accessing other traces using the searcher.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="DeferredExtractionPlugin.process">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_plugin.html#hansken_extraction_plugin.api.extraction_plugin.DeferredExtractionPlugin.process">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">process</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trace</span><span class="p">:</span> <span class="n">ExtractionTrace</span><span class="p">,</span> <span class="n">data_context</span><span class="p">:</span> <span class="n">DataContext</span><span class="p">,</span> <span class="n">searcher</span><span class="p">:</span> <span class="n">TraceSearcher</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Process a given trace.</span>
|
||||
|
||||
<span class="sd"> This method is called for every trace that is processed by this tool.</span>
|
||||
|
||||
<span class="sd"> :param trace: Trace that is being processed</span>
|
||||
<span class="sd"> :param data_context: Data data_context describing the data stream that is being processed</span>
|
||||
<span class="sd"> :param searcher: TraceSearcher that can be used to obtain more traces</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,394 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.extraction_trace — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.extraction_trace</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.extraction_trace</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">This module contains the different Trace apis.</span>
|
||||
|
||||
<span class="sd">Note that there are a couple of different traces:</span>
|
||||
<span class="sd"> * The ExtractionTrace and MetaExtractionTrace, which are offered to the process function.</span>
|
||||
<span class="sd"> * ExtractionTraceBuilder, which is a trace that can be built; it does not exist in hansken yet, but it is added after</span>
|
||||
<span class="sd"> building.</span>
|
||||
<span class="sd"> * SearchTrace, which represents an immutable trace which is returned after searching for traces.</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">ABC</span><span class="p">,</span> <span class="n">abstractmethod</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">io</span><span class="w"> </span><span class="kn">import</span> <span class="n">BufferedReader</span><span class="p">,</span> <span class="n">BufferedWriter</span><span class="p">,</span> <span class="n">TextIOBase</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">Any</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Mapping</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.tracelet</span><span class="w"> </span><span class="kn">import</span> <span class="n">Tracelet</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.transformation</span><span class="w"> </span><span class="kn">import</span> <span class="n">Transformation</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTraceBuilder">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTraceBuilder">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">ExtractionTraceBuilder</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> ExtractionTrace that can be build.</span>
|
||||
|
||||
<span class="sd"> Represents child traces.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTraceBuilder.update">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTraceBuilder.update">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key_or_updates</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Mapping</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">value</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">data</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Mapping</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="s1">'ExtractionTraceBuilder'</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Update or add metadata properties for this `.ExtractionTraceBuilder`.</span>
|
||||
|
||||
<span class="sd"> Can be used to update the name of the Trace represented by this builder,</span>
|
||||
<span class="sd"> if not already set.</span>
|
||||
|
||||
<span class="sd"> :param key_or_updates: either a `str` (the metadata property to be</span>
|
||||
<span class="sd"> updated) or a mapping supplying both keys and values to be updated</span>
|
||||
<span class="sd"> :param value: the value to update metadata property *key* to (used</span>
|
||||
<span class="sd"> only when *key_or_updates* is a `str`, an exception will be thrown</span>
|
||||
<span class="sd"> if *key_or_updates* is a mapping)</span>
|
||||
<span class="sd"> :param data: a `dict` mapping data type / stream name to bytes to be</span>
|
||||
<span class="sd"> added to the trace</span>
|
||||
<span class="sd"> :return: this `.ExtractionTraceBuilder`</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTraceBuilder.add_tracelet">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTraceBuilder.add_tracelet">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_tracelet</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">tracelet</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Tracelet</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span>
|
||||
<span class="n">value</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Mapping</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="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="s1">'ExtractionTraceBuilder'</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Add a `.Tracelet` to this `.ExtractionTraceBuilder`.</span>
|
||||
|
||||
<span class="sd"> :param tracelet: the Tracelet or tracelet type (supplied as a `str`) to add</span>
|
||||
<span class="sd"> :param value: the tracelet properties to add (only applicable when *tracelet* is a `str`)</span>
|
||||
<span class="sd"> :return: this `.ExtractionTraceBuilder`</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTraceBuilder.add_transformation">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTraceBuilder.add_transformation">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_transformation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">transformation</span><span class="p">:</span> <span class="n">Transformation</span><span class="p">)</span> <span class="o">-></span> <span class="s1">'ExtractionTraceBuilder'</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Update or add transformations for this `.ExtractionTraceBuilder`.</span>
|
||||
|
||||
<span class="sd"> :param data_type: data type of the Transformation</span>
|
||||
<span class="sd"> :param transformation: the Transformation to add</span>
|
||||
<span class="sd"> :return: this `.ExtractionTraceBuilder`</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTraceBuilder.child_builder">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTraceBuilder.child_builder">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">child_builder</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="n">Optional</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="o">-></span> <span class="s1">'ExtractionTraceBuilder'</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Create a new `.TraceBuilder` to build a child trace to the trace to be represented by this builder.</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
<span class="sd"> Traces should be created and built in depth first order,</span>
|
||||
<span class="sd"> parent before child (pre-order).</span>
|
||||
|
||||
<span class="sd"> :return: a `.TraceBuilder` set up to save a new trace as the child</span>
|
||||
<span class="sd"> trace of this builder</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTraceBuilder.add_data">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTraceBuilder.add_data">[docs]</a>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">data</span><span class="p">:</span> <span class="nb">bytes</span><span class="p">)</span> <span class="o">-></span> <span class="s1">'ExtractionTraceBuilder'</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Add data to this trace as a named stream.</span>
|
||||
|
||||
<span class="sd"> :param stream: name of the data stream to be added</span>
|
||||
<span class="sd"> :param data: data to be attached</span>
|
||||
<span class="sd"> :return: this `.ExtractionTraceBuilder`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="p">{</span><span class="n">stream</span><span class="p">:</span> <span class="n">data</span><span class="p">})</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTraceBuilder.open">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTraceBuilder.open">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_type</span><span class="p">:</span> <span class="n">Optional</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">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">mode</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s1">'rb'</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">,</span> <span class="s1">'wt'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'rb'</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">,</span> <span class="n">buffer_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> \
|
||||
<span class="o">-></span> <span class="n">Union</span><span class="p">[</span><span class="n">BufferedReader</span><span class="p">,</span> <span class="n">BufferedWriter</span><span class="p">,</span> <span class="n">TextIOBase</span><span class="p">]:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Open a data stream to read or write data from or to the `.ExtractionTrace`.</span>
|
||||
|
||||
<span class="sd"> :param data_type: the data type of the datastream, 'raw' by default</span>
|
||||
<span class="sd"> :param offset: byte offset to start the stream on when reading</span>
|
||||
<span class="sd"> :param size: the number of bytes to make available when reading</span>
|
||||
<span class="sd"> :param mode: 'rb' for reading, 'wb' for writing</span>
|
||||
<span class="sd"> :param encoding: encoding for writing text, used to convert `str` values to bytes, \</span>
|
||||
<span class="sd"> only valid for modes 'w' and 'wt'</span>
|
||||
<span class="sd"> :param buffer_size: buffer size for reading (cache read back/ahead) or writing (cache for flush) data</span>
|
||||
<span class="sd"> :return: a file-like object to read or write bytes from the named stream</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTraceBuilder.build">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTraceBuilder.build">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">build</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Save the trace being built by this builder to remote.</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
<span class="sd"> Building more than once will result in an error being raised.</span>
|
||||
|
||||
<span class="sd"> :return: the new trace' id</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Trace">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.Trace">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">Trace</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""All trace classes should be able to return values."""</span>
|
||||
|
||||
<div class="viewcode-block" id="Trace.get">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.Trace.get">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Return metadata properties for this `.ExtractionTrace`.</span>
|
||||
|
||||
<span class="sd"> :param key: the metadata property to be retrieved</span>
|
||||
<span class="sd"> :param default: value returned if property is not set</span>
|
||||
<span class="sd"> :return: the value of the requested metadata property</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SearchTrace">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.SearchTrace">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">SearchTrace</span><span class="p">(</span><span class="n">Trace</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""SearchTraces represent traces returned when searching for traces."""</span>
|
||||
|
||||
<div class="viewcode-block" id="SearchTrace.open">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.SearchTrace.open">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s1">'raw'</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">buffer_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">BufferedReader</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Open a data stream of the data that is being processed.</span>
|
||||
|
||||
<span class="sd"> :param stream: data stream of trace to open. defaults to raw. other examples are html, text, etc.</span>
|
||||
<span class="sd"> :param offset: byte offset to start the stream on</span>
|
||||
<span class="sd"> :param size: the number of bytes to make available</span>
|
||||
<span class="sd"> :param buffer_size: buffer size for reading data</span>
|
||||
<span class="sd"> :return: a file-like object to read bytes from the named stream</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MetaExtractionTrace">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.MetaExtractionTrace">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">MetaExtractionTrace</span><span class="p">(</span><span class="n">Trace</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> MetaExtractionTraces contain only metadata.</span>
|
||||
|
||||
<span class="sd"> This class represenst traces during the extraction of an extraction plugin without a data stream.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="MetaExtractionTrace.update">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.MetaExtractionTrace.update">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key_or_updates</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Mapping</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">value</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">data</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Mapping</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Update or add metadata properties for this `.ExtractionTrace`.</span>
|
||||
|
||||
<span class="sd"> :param key_or_updates: either a `str` (the metadata property to be</span>
|
||||
<span class="sd"> updated) or a mapping supplying both keys and values to be updated</span>
|
||||
<span class="sd"> :param value: the value to update metadata property *key* to (used</span>
|
||||
<span class="sd"> only when *key_or_updates* is a `str`, an exception will be thrown</span>
|
||||
<span class="sd"> if *key_or_updates* is a mapping)</span>
|
||||
<span class="sd"> :param data: a `dict` mapping data type / stream name to bytes to be</span>
|
||||
<span class="sd"> added to the trace</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MetaExtractionTrace.add_tracelet">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.MetaExtractionTrace.add_tracelet">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_tracelet</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span>
|
||||
<span class="n">tracelet</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Tracelet</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span>
|
||||
<span class="n">value</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Mapping</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="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Add a `.Tracelet` to this `.MetaExtractionTrace`.</span>
|
||||
|
||||
<span class="sd"> :param tracelet: the Tracelet or tracelet type to add</span>
|
||||
<span class="sd"> :param value: the tracelet properties to add (only applicable when *tracelet* is a tracelet type)</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MetaExtractionTrace.add_transformation">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.MetaExtractionTrace.add_transformation">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_transformation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">transformation</span><span class="p">:</span> <span class="n">Transformation</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Update or add transformations for this `.ExtractionTraceBuilder`.</span>
|
||||
|
||||
<span class="sd"> :param data_type: data type of the Transformation</span>
|
||||
<span class="sd"> :param transformation: the Transformation to add</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MetaExtractionTrace.child_builder">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.MetaExtractionTrace.child_builder">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">child_builder</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="n">Optional</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="o">-></span> <span class="n">ExtractionTraceBuilder</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Create a `.TraceBuilder` to build a trace to be saved as a child of this `.Trace`.</span>
|
||||
|
||||
<span class="sd"> A new trace will only be added to the index once explicitly saved (e.g.</span>
|
||||
<span class="sd"> through `.TraceBuilder.build`).</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
<span class="sd"> Traces should be created and built in depth first order,</span>
|
||||
<span class="sd"> parent before child (pre-order).</span>
|
||||
|
||||
<span class="sd"> :param name: the name for the trace being built</span>
|
||||
<span class="sd"> :return: a `.TraceBuilder` set up to create a child trace of this `.MetaExtractionTrace`</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTrace">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTrace">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">ExtractionTrace</span><span class="p">(</span><span class="n">MetaExtractionTrace</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Trace offered to be processed."""</span>
|
||||
|
||||
<div class="viewcode-block" id="ExtractionTrace.open">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.extraction_trace.html#hansken_extraction_plugin.api.extraction_trace.ExtractionTrace.open">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">open</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_type</span><span class="p">:</span> <span class="n">Optional</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">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">mode</span><span class="p">:</span> <span class="n">Literal</span><span class="p">[</span><span class="s1">'rb'</span><span class="p">,</span> <span class="s1">'wb'</span><span class="p">,</span> <span class="s1">'w'</span><span class="p">,</span> <span class="s1">'wt'</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'rb'</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s1">'utf-8'</span><span class="p">,</span> <span class="n">buffer_size</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> \
|
||||
<span class="o">-></span> <span class="n">Union</span><span class="p">[</span><span class="n">BufferedReader</span><span class="p">,</span> <span class="n">BufferedWriter</span><span class="p">,</span> <span class="n">TextIOBase</span><span class="p">]:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Open a data stream to read or write data from or to the `.ExtractionTrace`.</span>
|
||||
|
||||
<span class="sd"> :param data_type: the data type of the datastream, 'raw' by default</span>
|
||||
<span class="sd"> :param offset: byte offset to start the stream on when reading</span>
|
||||
<span class="sd"> :param size: the number of bytes to make available when reading</span>
|
||||
<span class="sd"> :param mode: 'rb' for reading, 'wb' for writing</span>
|
||||
<span class="sd"> :param encoding: encoding for writing text, used to convert `str` values to bytes, \</span>
|
||||
<span class="sd"> only valid for modes 'w' and 'wt'</span>
|
||||
<span class="sd"> :param buffer_size: buffer size for reading (cache read back/ahead) or writing (cache for flush) data</span>
|
||||
<span class="sd"> :return: a file-like object to read or write bytes from the named stream</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,237 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.plugin_info — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.plugin_info</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.plugin_info</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""This module contains all definitions to describe meta data of a plugin, a.k.a. PluginInfo."""</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</span><span class="p">,</span> <span class="n">field</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</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">List</span><span class="p">,</span> <span class="n">Optional</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Author">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.plugin_info.html#hansken_extraction_plugin.api.plugin_info.Author">[docs]</a>
|
||||
<span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">Author</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> The author of an Extraction Plugin.</span>
|
||||
|
||||
<span class="sd"> This information can be retrieved by an end-user from Hansken.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
|
||||
<span class="n">email</span><span class="p">:</span> <span class="nb">str</span>
|
||||
<span class="n">organisation</span><span class="p">:</span> <span class="nb">str</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MaturityLevel">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.plugin_info.html#hansken_extraction_plugin.api.plugin_info.MaturityLevel">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">MaturityLevel</span><span class="p">(</span><span class="n">Enum</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""This class represents the maturity level of an extraction plugin."""</span>
|
||||
|
||||
<span class="n">PROOF_OF_CONCEPT</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">READY_FOR_TEST</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="n">PRODUCTION_READY</span> <span class="o">=</span> <span class="mi">2</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PluginId">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.plugin_info.html#hansken_extraction_plugin.api.plugin_info.PluginId">[docs]</a>
|
||||
<span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">PluginId</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""Identifier of a plugin, consisting of domain, category and name. Needs to be unique among all tools/plugins."""</span>
|
||||
|
||||
<span class="n">domain</span><span class="p">:</span> <span class="nb">str</span>
|
||||
<span class="n">category</span><span class="p">:</span> <span class="nb">str</span>
|
||||
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">domain</span><span class="si">}</span><span class="s1">/</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">category</span><span class="si">}</span><span class="s1">/</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s1">'</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PluginResources">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.plugin_info.html#hansken_extraction_plugin.api.plugin_info.PluginResources">[docs]</a>
|
||||
<span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">PluginResources</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""PluginResources contains information about how many resources will be used for a plugin."""</span>
|
||||
|
||||
<span class="n">maximum_cpu</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> CPU resources are measured in cpu units. One cpu is equivalent to 1 vCPU/Core for cloud providers and 1 hyperthread</span>
|
||||
<span class="sd"> on bare-metal Intel processors. Also, fractional requests are allowed. A plugin that asks 0.5 CPU uses half as</span>
|
||||
<span class="sd"> much CPU as one that asks for 1 CPU.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">maximum_memory</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="w"> </span><span class="sd">"""Max usable memory for a plugin, measured in megabytes."""</span>
|
||||
<span class="n">maximum_workers</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="w"> </span><span class="sd">"""The number of concurrent workers(i.e. traces that can be processed)."""</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">maximum_cpu</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">maximum_cpu</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">'maximum_cpu cannot be < 0: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">maximum_cpu</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">maximum_memory</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">maximum_memory</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">'maximum_memory cannot be < 0: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">maximum_memory</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">maximum_workers</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">maximum_workers</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">'maximum_workers cannot be < 0: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">maximum_workers</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TransformerLabel">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.plugin_info.html#hansken_extraction_plugin.api.plugin_info.TransformerLabel">[docs]</a>
|
||||
<span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">TransformerLabel</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> TransformerLabel contains information about a transformer method that a plugin provides.</span>
|
||||
|
||||
<span class="sd"> It is mainly used for storing the properties (name, arguments, return type) of a transformer in PluginInfo objects.</span>
|
||||
<span class="sd"> Unlike the Transformer class it does not contain the actual function reference to the transformer itself.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="w"> </span><span class="sd">"""The method name of the transformer. For example: my_method"""</span>
|
||||
<span class="n">method_name</span><span class="p">:</span> <span class="nb">str</span>
|
||||
|
||||
<span class="w"> </span><span class="sd">"""The parameters of the function where the key is the parameter name and the value is the type of the parameter."""</span>
|
||||
<span class="n">parameters</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>
|
||||
|
||||
<span class="w"> </span><span class="sd">"""The return type of the parameter. See api.Transformer class for supported types."""</span>
|
||||
<span class="n">return_type</span><span class="p">:</span> <span class="nb">str</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PluginInfo">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.plugin_info.html#hansken_extraction_plugin.api.plugin_info.PluginInfo">[docs]</a>
|
||||
<span class="nd">@dataclass</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">PluginInfo</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> This information is used by Hansken to identify and run the plugin.</span>
|
||||
|
||||
<span class="sd"> Note that the build_plugin.py build script is used to build a plugin docker image with PluginInfo docker labels.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="nb">id</span><span class="p">:</span> <span class="n">PluginId</span> <span class="c1">#: a plugin's unique identifier, see PluginId</span>
|
||||
<span class="n">version</span><span class="p">:</span> <span class="nb">str</span> <span class="c1">#: version of the plugin</span>
|
||||
<span class="n">description</span><span class="p">:</span> <span class="nb">str</span> <span class="c1">#: short description of the functionality of the plugin</span>
|
||||
<span class="n">author</span><span class="p">:</span> <span class="n">Author</span> <span class="c1">#: the plugin's author, see Author</span>
|
||||
<span class="n">maturity</span><span class="p">:</span> <span class="n">MaturityLevel</span> <span class="c1">#: maturity level, see MaturityLevel</span>
|
||||
<span class="n">matcher</span><span class="p">:</span> <span class="nb">str</span> <span class="c1">#: this matcher selects the traces offered to the plugin</span>
|
||||
<span class="n">webpage_url</span><span class="p">:</span> <span class="nb">str</span> <span class="c1">#: plugin url</span>
|
||||
<span class="n">license</span><span class="p">:</span> <span class="n">Optional</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="c1">#: license of this plugin</span>
|
||||
<span class="n">deferred_iterations</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span> <span class="c1">#: number of deferred iterations (1 to 20), nly for deferred plugins (optional)</span>
|
||||
<span class="n">resources</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">PluginResources</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1">#: resources to be reserved for a plugin (optional)</span>
|
||||
|
||||
<span class="w"> </span><span class="sd">"""Populated dynamically in pack.plugin_info by collecting all @transformer methods. Do not assign manually."""</span>
|
||||
<span class="n">transformers</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">TransformerLabel</span><span class="p">]</span> <span class="o">=</span> <span class="n">field</span><span class="p">(</span><span class="n">default_factory</span><span class="o">=</span><span class="nb">list</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">__post_init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="mi">1</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">deferred_iterations</span> <span class="o"><=</span> <span class="mi">20</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Invalid value for deferred_iterations: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">deferred_iterations</span><span class="si">}</span><span class="s1">. '</span>
|
||||
<span class="sa">f</span><span class="s1">'Valid values are 1 =< 20.'</span><span class="p">)</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,198 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.search_result — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.search_result</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.search_result</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""This module contains a representation of a search result."""</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">ABC</span><span class="p">,</span> <span class="n">abstractmethod</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">itertools</span><span class="w"> </span><span class="kn">import</span> <span class="n">islice</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">Iterable</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Optional</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.extraction_trace</span><span class="w"> </span><span class="kn">import</span> <span class="n">SearchTrace</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SearchResult">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.search_result.html#hansken_extraction_plugin.api.search_result.SearchResult">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">SearchResult</span><span class="p">(</span><span class="n">ABC</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Class representing a stream of traces, returned when performing a search request.</span>
|
||||
|
||||
<span class="sd"> This result can only be iterated once. Results can be retrieved in three ways:</span>
|
||||
|
||||
<span class="sd"> Treating the result as an iterable:</span>
|
||||
|
||||
<span class="sd"> .. code-block:: python</span>
|
||||
|
||||
<span class="sd"> for trace in result:</span>
|
||||
<span class="sd"> print(trace.name)</span>
|
||||
|
||||
<span class="sd"> Calling `.take` to process one or more batches of traces:</span>
|
||||
|
||||
<span class="sd"> .. code-block:: python</span>
|
||||
|
||||
<span class="sd"> first_100 = result.take(100)</span>
|
||||
<span class="sd"> process_batch(first_100)</span>
|
||||
|
||||
<span class="sd"> Calling `.takeone` to get a single trace:</span>
|
||||
|
||||
<span class="sd"> .. code-block:: python</span>
|
||||
|
||||
<span class="sd"> first = result.takeone()</span>
|
||||
<span class="sd"> second = result.takeone()</span>
|
||||
|
||||
<span class="sd"> print(first.name, second.name)</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="SearchResult.total_results">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.search_result.html#hansken_extraction_plugin.api.search_result.SearchResult.total_results">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">total_results</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Return the total number of hits.</span>
|
||||
|
||||
<span class="sd"> :return: Total number of hits</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SearchResult.takeone">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.search_result.html#hansken_extraction_plugin.api.search_result.SearchResult.takeone">[docs]</a>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">takeone</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">Optional</span><span class="p">[</span><span class="n">SearchTrace</span><span class="p">]:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Return a single trace, if this stream is not exhausted.</span>
|
||||
|
||||
<span class="sd"> :return: A searchtrace, or None if no trace is available</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="fm">__iter__</span><span class="p">(),</span> <span class="kc">None</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SearchResult.take">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.search_result.html#hansken_extraction_plugin.api.search_result.SearchResult.take">[docs]</a>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">take</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">List</span><span class="p">[</span><span class="n">SearchTrace</span><span class="p">]:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Return a list containing at most num number of traces, or less if they are not available.</span>
|
||||
|
||||
<span class="sd"> :param num: Number of traces to take</span>
|
||||
<span class="sd"> :return: List containing zero or more traces</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="n">islice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="fm">__iter__</span><span class="p">(),</span> <span class="n">num</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SearchResult.close">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.search_result.html#hansken_extraction_plugin.api.search_result.SearchResult.close">[docs]</a>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Close this SearchResult if no more traces are to be retrieved.</span>
|
||||
|
||||
<span class="sd"> Required to keep compatibility with hansken.py.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">pass</span></div>
|
||||
</div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,150 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.trace_searcher — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.trace_searcher</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.trace_searcher</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""This module contains the definition of a trace searcher."""</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">abstractmethod</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">enum</span><span class="w"> </span><span class="kn">import</span> <span class="n">Enum</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">Union</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.search_result</span><span class="w"> </span><span class="kn">import</span> <span class="n">SearchResult</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SearchScope">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.trace_searcher.html#hansken_extraction_plugin.api.trace_searcher.SearchScope">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">SearchScope</span><span class="p">(</span><span class="nb">str</span><span class="p">,</span> <span class="n">Enum</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Scope to describe the search context for TraceSearcher.search calls."""</span>
|
||||
|
||||
<span class="n">image</span> <span class="o">=</span> <span class="s1">'image'</span>
|
||||
<span class="n">project</span> <span class="o">=</span> <span class="s1">'project'</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TraceSearcher">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.trace_searcher.html#hansken_extraction_plugin.api.trace_searcher.TraceSearcher">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">TraceSearcher</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""This class can be used to search for traces, using the search method."""</span>
|
||||
|
||||
<div class="viewcode-block" id="TraceSearcher.search">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.trace_searcher.html#hansken_extraction_plugin.api.trace_searcher.TraceSearcher.search">[docs]</a>
|
||||
<span class="nd">@abstractmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">search</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">count</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">scope</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">SearchScope</span><span class="p">]</span> <span class="o">=</span> <span class="n">SearchScope</span><span class="o">.</span><span class="n">image</span><span class="p">)</span> <span class="o">-></span> <span class="n">SearchResult</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Search for indexed traces in Hansken using provided query returning at most count results.</span>
|
||||
|
||||
<span class="sd"> :param query: HQL-query used for searching</span>
|
||||
<span class="sd"> :param count: Maximum number of traces to return</span>
|
||||
<span class="sd"> :param scope: Select search scope: 'image' to search only search for other traces within the image of the trace</span>
|
||||
<span class="sd"> that is being processed, or 'project' to search in the scope of the full project (either Scope-</span>
|
||||
<span class="sd"> enum value can be used, or the str-values directly).</span>
|
||||
<span class="sd"> :return: SearchResult containing found traces</span>
|
||||
<span class="sd"> """</span></div>
|
||||
</div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,142 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.tracelet — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.tracelet</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.tracelet</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""This module contains the definition of a Tracelet."""</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">Any</span><span class="p">,</span> <span class="n">Mapping</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Tracelet">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.tracelet.html#hansken_extraction_plugin.api.tracelet.Tracelet">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">Tracelet</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> A tracelet contains the values of a single fvt (Few Valued Type).</span>
|
||||
|
||||
<span class="sd"> A few valued type is a trace property type that is a collection of tracelets. A trace can contain multiple few</span>
|
||||
<span class="sd"> valued types containing one or more tracelets. For example, the `trace.identity`` type may look like this::</span>
|
||||
|
||||
<span class="sd"> {emailAddress: 'interesting@notreally.com'},</span>
|
||||
<span class="sd"> {firstName: 'piet'},</span>
|
||||
<span class="sd"> {emailAddress: 'anotheremail@notreally.com'},</span>
|
||||
|
||||
<span class="sd"> The trace.identity few valued types contains three different tracelets.</span>
|
||||
<span class="sd"> """</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">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">value</span><span class="p">:</span> <span class="n">Mapping</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="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Initialize a tracelet.</span>
|
||||
|
||||
<span class="sd"> :param name: name or type of the tracelet. In the example this would be ``identity``.</span>
|
||||
<span class="sd"> :param value: Mapping of keys to properties of this tracelet. In the example this could be</span>
|
||||
<span class="sd"> ``{emailAddress: 'anotheremail@notreally.com'}``.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">value</span></div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,193 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.transformation — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.transformation</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.transformation</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""This module contains the definition of a Transformation."""</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">abc</span><span class="w"> </span><span class="kn">import</span> <span class="n">ABC</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">dataclasses</span><span class="w"> </span><span class="kn">import</span> <span class="n">dataclass</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">List</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Transformation">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformation.html#hansken_extraction_plugin.api.transformation.Transformation">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">Transformation</span><span class="p">(</span><span class="n">ABC</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A super class for data transformations. Currently only :class:RangedTransformation is supported."""</span>
|
||||
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Range">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformation.html#hansken_extraction_plugin.api.transformation.Range">[docs]</a>
|
||||
<span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">Range</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""A Range describes a range of bytes with a offset and length."""</span>
|
||||
|
||||
<span class="n">offset</span><span class="p">:</span> <span class="nb">int</span> <span class="c1">#: the starting point of the data</span>
|
||||
<span class="n">length</span><span class="p">:</span> <span class="nb">int</span> <span class="c1">#: the size of the data</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="RangedTransformation">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformation.html#hansken_extraction_plugin.api.transformation.RangedTransformation">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">RangedTransformation</span><span class="p">(</span><span class="n">Transformation</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""A :class:RangedTransformation describes a data transformation consisting of a list of :class:Range."""</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">ranges</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Range</span><span class="p">]):</span>
|
||||
<span class="w"> </span><span class="sd">""":type ranges: list of :class:Range."""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ranges</span> <span class="o">=</span> <span class="n">ranges</span>
|
||||
|
||||
<div class="viewcode-block" id="RangedTransformation.builder">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformation.html#hansken_extraction_plugin.api.transformation.RangedTransformation.builder">[docs]</a>
|
||||
<span class="nd">@staticmethod</span>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">builder</span><span class="p">():</span>
|
||||
<span class="w"> </span><span class="sd">""":return a Builder."""</span>
|
||||
<span class="k">return</span> <span class="n">RangedTransformation</span><span class="o">.</span><span class="n">Builder</span><span class="p">()</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="RangedTransformation.Builder">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformation.html#hansken_extraction_plugin.api.transformation.RangedTransformation.Builder">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">Builder</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""Helper class that implements a transformation builder."""</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="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""Initialize a Builder."""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_ranges</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Range</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
<div class="viewcode-block" id="RangedTransformation.Builder.add_range">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformation.html#hansken_extraction_plugin.api.transformation.RangedTransformation.Builder.add_range">[docs]</a>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">add_range</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">offset</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">length</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="s1">'RangedTransformation.Builder'</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Add a range to a ranged transformation by providing the range's offset and length.</span>
|
||||
|
||||
<span class="sd"> :param offset the offset of the data transformation</span>
|
||||
<span class="sd"> :param length the length of the data transformation</span>
|
||||
<span class="sd"> :return: this `.RangedTransformation.Builder`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">offset</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'offset is required'</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s1">'length is required'</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_ranges</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Range</span><span class="p">(</span><span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> <span class="n">length</span><span class="o">=</span><span class="n">length</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="RangedTransformation.Builder.build">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformation.html#hansken_extraction_plugin.api.transformation.RangedTransformation.Builder.build">[docs]</a>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">build</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="s1">'RangedTransformation'</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Return a RangedTransformation.</span>
|
||||
|
||||
<span class="sd"> :return: a :class:RangedTransformation</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">RangedTransformation</span><span class="p">(</span><span class="n">ranges</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_ranges</span><span class="p">)</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,243 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../../../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>hansken_extraction_plugin.api.transformer — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../../../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../../../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../../../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../../../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../../../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../../../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../../../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item"><a href="../../index.html">Module code</a></li>
|
||||
<li class="breadcrumb-item active">hansken_extraction_plugin.api.transformer</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>Source code for hansken_extraction_plugin.api.transformer</h1><div class="highlight"><pre>
|
||||
<span></span><span class="sd">"""</span>
|
||||
<span class="sd">This module contains the Transformer class that holds the function reference of the transformer.</span>
|
||||
|
||||
<span class="sd">Instances of this class are constructed by BaseExtractionPlugin when retrieving transformers dynamically.</span>
|
||||
<span class="sd">It also validates whether the method to which @transformer is applied adheres to the requirements of a transformer.</span>
|
||||
<span class="sd">"""</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">inspect</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">Mapping</span><span class="p">,</span> <span class="n">Sequence</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken.util</span><span class="w"> </span><span class="kn">import</span> <span class="n">GeographicLocation</span><span class="p">,</span> <span class="n">Vector</span>
|
||||
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.api.plugin_info</span><span class="w"> </span><span class="kn">import</span> <span class="n">TransformerLabel</span>
|
||||
<span class="kn">from</span><span class="w"> </span><span class="nn">hansken_extraction_plugin.utility.type_conversion</span><span class="w"> </span><span class="kn">import</span> <span class="n">get_type_name</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Transformer">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformer.html#hansken_extraction_plugin.api.transformer.Transformer">[docs]</a>
|
||||
<span class="k">class</span><span class="w"> </span><span class="nc">Transformer</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> A transformer is an exposed method of a plugin that can be executed remotely outside extraction-time.</span>
|
||||
|
||||
<span class="sd"> This allows for on-demand analysis during an investigation.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> This dictionary holds the supported types that transformer methods can as arguments and return types.</span>
|
||||
|
||||
<span class="sd"> The keys are the supported Python types and the values the generic type names as in the Hansken trace model.</span>
|
||||
<span class="sd"> Note that these types should also be defined in _primitive_matchers in runtime.pack for successful serialization.</span>
|
||||
<span class="sd"> In order to not create circular dependencies and separate the runtime module and the api module this is defined</span>
|
||||
<span class="sd"> separately here.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">supported_primitives</span> <span class="o">=</span> <span class="p">{</span><span class="nb">bytes</span><span class="p">:</span> <span class="s1">'binary'</span><span class="p">,</span>
|
||||
<span class="nb">bool</span><span class="p">:</span> <span class="s1">'boolean'</span><span class="p">,</span>
|
||||
<span class="nb">int</span><span class="p">:</span> <span class="s1">'long'</span><span class="p">,</span>
|
||||
<span class="nb">float</span><span class="p">:</span> <span class="s1">'double'</span><span class="p">,</span>
|
||||
<span class="nb">str</span><span class="p">:</span> <span class="s1">'string'</span><span class="p">,</span>
|
||||
<span class="n">datetime</span><span class="p">:</span> <span class="s1">'date'</span><span class="p">,</span>
|
||||
<span class="n">GeographicLocation</span><span class="p">:</span> <span class="s1">'latLong'</span><span class="p">,</span>
|
||||
<span class="n">Vector</span><span class="p">:</span> <span class="s1">'vector'</span><span class="p">,</span>
|
||||
<span class="n">Sequence</span><span class="p">:</span> <span class="s1">'list'</span><span class="p">,</span>
|
||||
<span class="n">Mapping</span><span class="p">:</span> <span class="s1">'map'</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</span><span class="p">):</span>
|
||||
<span class="w"> </span><span class="sd">"""Create a transformer and validate whether the passed function meets the requirements."""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">function</span> <span class="o">=</span> <span class="n">function</span>
|
||||
|
||||
<span class="c1"># Retrieve the signature so that we can validate whether it complies to the transformer requirements.</span>
|
||||
<span class="n">signature</span> <span class="o">=</span> <span class="n">inspect</span><span class="o">.</span><span class="n">signature</span><span class="p">(</span><span class="n">function</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Validate that @transformer was applied to a function/method and not any other type of object (i.e. a class)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">function</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'function'</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'@transformer was applied to something other than a function/method. '</span>
|
||||
<span class="s1">'@transformer may only be applied to methods of classes derived from BaseExtractionPlugin.'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Validate that @transformer was applied to a method instead of a function.</span>
|
||||
<span class="k">if</span> <span class="s1">'.'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="vm">__qualname__</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span>
|
||||
<span class="s1">'@transformer was applied to a function instead of a method of a class derived from '</span>
|
||||
<span class="s1">'BaseExtractionPlugin. '</span>
|
||||
<span class="s1">'@transformer may only be applied to methods of classes derived from BaseExtractionPlugin.'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Extract the method name for ease of use.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">method_name</span> <span class="o">=</span> <span class="n">function</span><span class="o">.</span><span class="vm">__qualname__</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># Validate if this function is not a static method.</span>
|
||||
<span class="c1"># Note: This is not entirely foolproof since the self parameter may officially also be named differently or as</span>
|
||||
<span class="c1"># a non-first argument.</span>
|
||||
<span class="k">if</span> <span class="s1">'self'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">signature</span><span class="o">.</span><span class="n">parameters</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'@transformer may not be applied to static methods.'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Validate all the parameters and store them.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">parameters</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="k">for</span> <span class="n">parameter</span> <span class="ow">in</span> <span class="n">signature</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
|
||||
|
||||
<span class="c1"># Other than validating the self property we don't include it in the parameters field because we do not</span>
|
||||
<span class="c1"># want to expose it externally.</span>
|
||||
<span class="c1"># Note: This check is not fool-proof since parameters called self can be defined as non-first parameters.</span>
|
||||
<span class="k">if</span> <span class="n">parameter</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s1">'self'</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">parameter</span><span class="o">.</span><span class="n">annotation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">empty</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'@transformer methods should have a parameter self without a type annotation.'</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
|
||||
<span class="c1"># Validate if annotations are present on each parameter.</span>
|
||||
<span class="k">if</span> <span class="n">parameter</span><span class="o">.</span><span class="n">annotation</span> <span class="ow">is</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">empty</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'The parameters of @transformer methods must have type hints.'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Validate that parameters do not have default values.</span>
|
||||
<span class="k">if</span> <span class="n">parameter</span><span class="o">.</span><span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">inspect</span><span class="o">.</span><span class="n">Parameter</span><span class="o">.</span><span class="n">empty</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'@transformer methods are currently not allowed to have parameters with a '</span>
|
||||
<span class="s1">'default value.'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Do not allow variable arguments or positional only arguments.</span>
|
||||
<span class="k">if</span> <span class="n">parameter</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="p">[</span><span class="n">parameter</span><span class="o">.</span><span class="n">POSITIONAL_ONLY</span><span class="p">,</span> <span class="n">parameter</span><span class="o">.</span><span class="n">VAR_POSITIONAL</span><span class="p">,</span> <span class="n">parameter</span><span class="o">.</span><span class="n">VAR_KEYWORD</span><span class="p">]:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s1">'@transformer methods are currently not allowed to have positional only parameters or '</span>
|
||||
<span class="s1">'variable parameters (like *args and **kwargs).'</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Validate if a parameter is one of the supported serializable types.</span>
|
||||
<span class="k">if</span> <span class="n">parameter</span><span class="o">.</span><span class="n">annotation</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">Transformer</span><span class="o">.</span><span class="n">supported_primitives</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s1">'The parameters of @transformer methods should be one of '</span>
|
||||
<span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="p">[</span><span class="n">get_type_name</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">Transformer</span><span class="o">.</span><span class="n">supported_primitives</span><span class="p">]</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="p">[</span><span class="n">parameter</span><span class="o">.</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">parameter</span><span class="o">.</span><span class="n">annotation</span>
|
||||
|
||||
<span class="c1"># Validate if the return annotation is present and one of the supported serializable types.</span>
|
||||
<span class="k">if</span> <span class="n">signature</span><span class="o">.</span><span class="n">return_annotation</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">Transformer</span><span class="o">.</span><span class="n">supported_primitives</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="sa">f</span><span class="s1">'The return type of @transformer methods should be one of '</span>
|
||||
<span class="sa">f</span><span class="s1">'</span><span class="si">{</span><span class="p">[</span><span class="n">get_type_name</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">Transformer</span><span class="o">.</span><span class="n">supported_primitives</span><span class="o">.</span><span class="n">keys</span><span class="p">()]</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||||
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">return_type</span> <span class="o">=</span> <span class="n">signature</span><span class="o">.</span><span class="n">return_annotation</span>
|
||||
|
||||
<div class="viewcode-block" id="Transformer.generate_label">
|
||||
<a class="viewcode-back" href="../../../dev/python/api/hansken_extraction_plugin.api.transformer.html#hansken_extraction_plugin.api.transformer.Transformer.generate_label">[docs]</a>
|
||||
<span class="k">def</span><span class="w"> </span><span class="nf">generate_label</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">TransformerLabel</span><span class="p">:</span>
|
||||
<span class="w"> </span><span class="sd">"""</span>
|
||||
<span class="sd"> Generate a TransformerLabel given the transformer method. TransformerLabels are used in PluginInfo objects.</span>
|
||||
|
||||
<span class="sd"> Unlike Transformers TransformerLabels can be serialized and sent to a client that wishes to call a transformer.</span>
|
||||
<span class="sd"> The specific Python types are converted to the generic types that are used in the Hansken trace model.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Convert the parameters to a generic Hansken parameter names.</span>
|
||||
<span class="c1"># No checks are needed here because they are already performed upon initialization of a Transformer.</span>
|
||||
<span class="n">parameters</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">supported_primitives</span><span class="p">[</span><span class="n">param_type</span><span class="p">]</span> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">param_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">parameters</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
|
||||
<span class="n">return_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">supported_primitives</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">return_type</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">TransformerLabel</span><span class="p">(</span><span class="n">method_name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">method_name</span><span class="p">,</span>
|
||||
<span class="n">parameters</span><span class="o">=</span><span class="n">parameters</span><span class="p">,</span>
|
||||
<span class="n">return_type</span><span class="o">=</span><span class="n">return_type</span><span class="p">)</span></div>
|
||||
</div>
|
||||
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,119 +0,0 @@
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="writer-html5" lang="en" data-content_root="../">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Overview: module code — Hansken Extraction Plugins for plugin developers SNAPSHOT
|
||||
documentation</title>
|
||||
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d75fae25" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/wider_pages.css?v=32ad70ab" />
|
||||
|
||||
|
||||
<script src="../_static/jquery.js?v=5d32c60e"></script>
|
||||
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
||||
<script src="../_static/documentation_options.js?v=b03376c1"></script>
|
||||
<script src="../_static/doctools.js?v=9a2dae69"></script>
|
||||
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
||||
<script src="../_static/js/theme.js"></script>
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
<div class="wy-grid-for-nav">
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" >
|
||||
|
||||
|
||||
|
||||
<a href="../index.html" class="icon icon-home">
|
||||
Hansken Extraction Plugins for plugin developers
|
||||
</a>
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||||
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../dev/introduction.html">Introduction</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../dev/concepts.html">General concepts</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../dev/spec.html">Extraction Plugin specifications</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../dev/java.html">Java</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../dev/python.html">Python</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../dev/examples.html">Examples</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../dev/faq.html">Frequently Asked Questions</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../contact.html">Contact</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="../changes.html">Changelog</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="../index.html">Hansken Extraction Plugins for plugin developers</a>
|
||||
</nav>
|
||||
|
||||
<div class="wy-nav-content">
|
||||
<div class="rst-content">
|
||||
<div role="navigation" aria-label="Page navigation">
|
||||
<ul class="wy-breadcrumbs">
|
||||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||||
<li class="breadcrumb-item active">Overview: module code</li>
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
</li>
|
||||
</ul>
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<h1>All modules for which code is available</h1>
|
||||
<ul><li><a href="hansken_extraction_plugin/api/data_context.html">hansken_extraction_plugin.api.data_context</a></li>
|
||||
<li><a href="hansken_extraction_plugin/api/extraction_plugin.html">hansken_extraction_plugin.api.extraction_plugin</a></li>
|
||||
<li><a href="hansken_extraction_plugin/api/extraction_trace.html">hansken_extraction_plugin.api.extraction_trace</a></li>
|
||||
<li><a href="hansken_extraction_plugin/api/plugin_info.html">hansken_extraction_plugin.api.plugin_info</a></li>
|
||||
<li><a href="hansken_extraction_plugin/api/search_result.html">hansken_extraction_plugin.api.search_result</a></li>
|
||||
<li><a href="hansken_extraction_plugin/api/trace_searcher.html">hansken_extraction_plugin.api.trace_searcher</a></li>
|
||||
<li><a href="hansken_extraction_plugin/api/tracelet.html">hansken_extraction_plugin.api.tracelet</a></li>
|
||||
<li><a href="hansken_extraction_plugin/api/transformation.html">hansken_extraction_plugin.api.transformation</a></li>
|
||||
<li><a href="hansken_extraction_plugin/api/transformer.html">hansken_extraction_plugin.api.transformer</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>© Copyright 2020-2025 Netherlands Forensic Institute.</p>
|
||||
</div>
|
||||
|
||||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||||
|
||||
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,506 +0,0 @@
|
||||
# Python API Changelog
|
||||
|
||||
This document summarizes all important API changes in the Extraction Plugin API. This document only shows changes that
|
||||
are important to plugin developers. For a full list of changes per version, please refer to the general
|
||||
:ref:`changelog <changelog>`.
|
||||
|
||||
.. If present, remove `..` before `## |version|` if you create a new entry after a previous release.
|
||||
|
||||
## |version|
|
||||
|
||||
* This release supports providing all types of transformer arguments when using the `execute_transformer` script.
|
||||
|
||||
## 0.9.2
|
||||
|
||||
* This release introduces a simple flow-control mechanism that fixes `connection RST` errors that can occur when a
|
||||
plugin produces traces too fast. Plugins built with this version are **not backwards compatible**.
|
||||
|
||||
* Python plugins now support transformers, remote methods which can be executed using the Hansken REST API. More information can be found in [the docs](transformers.md).
|
||||
|
||||
* The `build_plugin` and `label_plugin` utilities prematurely shut down containers if the building and labeling process takes too long causing the process for slow containers to fail. If your plugin takes a long time to start, you may want to increase the timeout before the script stops trying to connect and aborts the process of building the plugin. This can be done using the new optional `--timeout` argument. The default is set to 30 seconds.
|
||||
|
||||
* The optional image name argument of `build_plugin` is changed to a flag. Build scripts can be updated using `--target-name DOCKER_IMAGE_NAME`.
|
||||
|
||||
## 0.8.3
|
||||
|
||||
* This release addresses important load balancing issues. Please use release `0.8.3` as a drop-in-replacement for releases `0.8.2` and `0.8.1`.
|
||||
|
||||
|
||||
## 0.8.2
|
||||
|
||||
* ⚠️ This release is deprecated, please upgrade to `0.8.3`
|
||||
|
||||
* The `build_plugin` utility has been updated and the deprecation status has been removed.
|
||||
As with `label_plugin`, `build_plugin` now no longer requires a full (virtual) environment
|
||||
with all plugin dependencies and resources. This will greatly reduce build times for plugins with
|
||||
big dependencies and/or large models.
|
||||
|
||||
The first argument of the command (a pointer to your `plugin.py` file) has been removed.
|
||||
Please do not forget to remove the first argument of `build_plugin` in your `tox.ini` or other build tooling.
|
||||
|
||||
For usage read further in [packaging](packaging.md).
|
||||
|
||||
* The default read-buffer of `trace.open('rb')` as been changed from 1 Megabyte to 6 Megabyte to reduce overhead while data reading.
|
||||
|
||||
* The data stream writer of `trace.open('wb')` is now buffered as well. This means that multiple small writes will be flushed after every 6 Megabytes of data has been written (or when the writer is closed).
|
||||
|
||||
* The read-buffer or write-buffer size can be overridden by the user, by passing the `buffer_size=` argument to `trace.open()`:
|
||||
|
||||
```python
|
||||
with trace.open('rb', buffer_size=1024*1024): # set a 1 Megabyte buffer size
|
||||
pass
|
||||
|
||||
with trace.open('wb', buffer_size=1024*1024*12): # set a 12 Megabyte buffer size
|
||||
pass
|
||||
|
||||
with trace.open('wb', buffer_size=1): # a buffer_size of 1 effectively disables the buffer:
|
||||
pass # each write will be flushed to Hansken directly
|
||||
```
|
||||
|
||||
* It is now possible to write `str` values to `trace.open(..)`. To do so, pass `mode='w'` as additional argument.
|
||||
By default, it is assumed that the written text is 'utf-8' encoded. The default can be overwritten by using the `'encoding='` argument.
|
||||
|
||||
In a future Hansken update, Hansken will set the correct data-stream properties for your text stream (`mimeType`, `mimeClass`, and `fileType`).
|
||||
|
||||
Example use cases are:
|
||||
|
||||
* write picture-to-text (OCR) data to a trace
|
||||
* write translations to a trace
|
||||
* write audio-to-text (audio transcriptions) to a trace
|
||||
* write the results of a JSON dump, e.g.: `json.dump(['your', 'data'], text_writer)`
|
||||
|
||||
Examples in code:
|
||||
|
||||
```python
|
||||
with trace.open(data_type='raw', mode='w', encoding='utf-8') as text_writer:
|
||||
text_writer.write('hello.world') # write strings directly to it
|
||||
json.dump({'hello': 'world'}, text_writer) # or pass the writer to json.dump
|
||||
```
|
||||
|
||||
See also :ref:`the python code snippet<python_snippets_data_streaming>`.
|
||||
|
||||
|
||||
## 0.8.1
|
||||
|
||||
* ⚠️ This release is deprecated, please upgrade to `0.8.3`
|
||||
|
||||
|
||||
## 0.8.0
|
||||
|
||||
* The trace property `imageId` is renamed to `image`. This is to be in line with the Hansken REST API and Python API.
|
||||
When updating your plugin, please update your calls `trace.get('imageId')` to `trace.get('image')`.
|
||||
|
||||
* [#774](https://git.eminjenv.nl/hansken/hbacklog/-/issues/774)
|
||||
By default, deferred extraction plugin searches are now scoped to the image
|
||||
of the trace that is currently being processed. Optionally, a project-wide
|
||||
search can be done by passing an optional scope argument.
|
||||
|
||||
```python
|
||||
def process(trace, data_context, searcher):
|
||||
# only search for traces inside the same image as the trace that is being processed
|
||||
searcher.search('*')
|
||||
searcher.search('*', scope='image') # explicit alternative, using a str
|
||||
searcher.search('*', scope=SearchScope.image) # explicit alternative, using the SearchScope enum
|
||||
|
||||
# only search for traces inside the same image as the trace that is being processed
|
||||
searcher.search('*', scope='project')
|
||||
searcher.search('*', scope=SearchScope.project)
|
||||
```
|
||||
|
||||
* Support trace properties of type `list[float]`. This enables you to write
|
||||
multiple offsets and confidence scores in tracelets of type prediction.
|
||||
|
||||
For example:
|
||||
|
||||
```python
|
||||
trace.add_tracelet('prediction', {
|
||||
'modelName': 'my_cat_detector',
|
||||
'modelVersion': '0.0.BETA',
|
||||
'type': 'classification',
|
||||
'label': 'cat',
|
||||
|
||||
# the best score
|
||||
'offset': 3.0,
|
||||
'confidence': 0.4,
|
||||
|
||||
# all scores
|
||||
'offsets': [0.0, 3.0, 6.0, 9.0],
|
||||
'confidences': [0.1, 0.4, 0.03, 0.09],
|
||||
})
|
||||
```
|
||||
|
||||
|
||||
## 0.7.3
|
||||
|
||||
* This version introduces a new docker image build utility `label_plugin`.
|
||||
This utility will eventually replace `build_plugin`. `build_plugin` is now deprecated.
|
||||
|
||||
`label_plugin` is a utility to add labels to an extraction plugin image. Labeling a plugin is required for
|
||||
Hansken to detect extraction plugins in a plugin image registry.
|
||||
|
||||
To label a plugin, first build the plugin image with [docker build](https://docs.docker.com/reference/cli/docker/image/build/);
|
||||
for example by using one of the following commands:
|
||||
|
||||
```shell
|
||||
docker build . -t my_plugin
|
||||
docker build . -t my_plugin --build-arg https_proxy=http://your_proxy:8080
|
||||
```
|
||||
|
||||
Next, run the `label_plugin` utility to label the build plugin container:
|
||||
```shell
|
||||
label_plugin my_plugin
|
||||
```
|
||||
|
||||
The result of `label_plugin` is a plugin image that can be :ref:`uploaded to Hansken<upload_plugin>`.
|
||||
|
||||
`label_plugin` is preferred over `build_plugin`, as it does not require a full (virtual) environment
|
||||
with all plugin dependencies and resources. This is especially preferred when the plugin uses (big)
|
||||
data models or (external) dependencies.
|
||||
|
||||
For usage read further in [packaging](packaging.md).
|
||||
|
||||
|
||||
## 0.7.0
|
||||
|
||||
* Escaping the `/` character in matchers is optional.
|
||||
This simplifies and aims for better HQL and HQL-Lite compatability.
|
||||
See for more information and examples the :ref:`HQL-Lite syntax documentation<hqllite syntax>`.
|
||||
|
||||
Examples:
|
||||
|
||||
* Old: `file.path:\/Users\/*\/AppData` -> new: `file.path:/Users/*/AppData`
|
||||
* Old: `file.path:\\/Users\\/*\\/AppData` -> new: `file.path:/Users/*/AppData`
|
||||
* Old: `registryEntry.key:\/Software\/Dropbox\/ks*\/Client-p` -> new: `registryEntry.key:/Software/Dropbox/ks*/Client-p`
|
||||
|
||||
* Hansken returns `file.path` properties (outside the scope of matchers) as a `String` property,
|
||||
instead of a list of strings.
|
||||
Example: `trace.get('file.path')` now returns `'/dev/null'`, this was `['dev', 'null']`.
|
||||
|
||||
* Improved plugin loading when using `serve_plugin` and `build_plugin`:
|
||||
`import` statements now work for modules (python files) that are located the same directory structure of a plugin.
|
||||
|
||||
* A plugin can now stream data to a trace using `trace.open(mode='wb')`.
|
||||
This removes the limit on the size of data that could be written.
|
||||
See also :ref:`the python code snippet<python_snippets_data_streaming>`.
|
||||
|
||||
Example:
|
||||
|
||||
```python
|
||||
with trace.open(mode='wb') as writer:
|
||||
writer.write(b'a string')
|
||||
writer.write(bytes(another_string, 'utf-8'))
|
||||
```
|
||||
|
||||
_note_: this does not work when using `run_with_hanskenpy`.
|
||||
|
||||
## 0.6.1
|
||||
|
||||
* The docker image build script `build_plugin` has been updated to allow for extension of the docker command.
|
||||
This can be especially handy for specifying a proxy. You should build your plugin container image with the following
|
||||
command:
|
||||
|
||||
```bash
|
||||
build_plugin PLUGIN_FILE DOCKER_FILE_DIRECTORY [DOCKER_IMAGE_NAME] [DOCKER_ARGS]
|
||||
```
|
||||
|
||||
.. warning:: Note that the `DOCKER_IMAGE_NAME` argument no longer requires a `-n` parameter to be specified.
|
||||
|
||||
For usage read further in [packaging](packaging.md).
|
||||
|
||||
## 0.6.0
|
||||
|
||||
.. warning:: This is an API breaking change.
|
||||
Upgrading your plugin to this version will require code changes.
|
||||
Plugins built with previous versions of the SDK from `0.3.0` will still work with Hansken.
|
||||
|
||||
.. warning:: It is strongly recommended to upgrade your plugins to this new version because it significantly improves
|
||||
the start-up time of Hansken. See the migration steps below.
|
||||
|
||||
This release contains both build pipeline changes and API changes.
|
||||
Please read all changes carefully.
|
||||
|
||||
### Build pipeline change
|
||||
|
||||
* Extraction plugin container images are now labeled with PluginInfo. This
|
||||
allows Hansken to efficiently load extraction plugins.
|
||||
Migration steps from earlier versions:
|
||||
|
||||
1. Update the SDK version in your `setup.py` / `requirements.txt`
|
||||
2. If you come from a version prior to `0.4.0`, or if you use a plugin name
|
||||
instead of a plugin id in your `pluginInfo()`, switch to the plugin id style
|
||||
(read instructions for version `0.4.0`)
|
||||
3. Update your build scripts to build your plugin (Docker) container image.
|
||||
Be sure to [have the Extraction Plugins SDK installed](getting_started.md#Installation).
|
||||
Then, you should build your plugin container image with the following command:
|
||||
|
||||
```bash
|
||||
build_plugin PLUGIN_FILE DOCKER_FILE_DIRECTORY -n [DOCKER_IMAGE_NAME]
|
||||
```
|
||||
|
||||
For example:
|
||||
```bash
|
||||
build_plugin plugin/chatplugin.py . -n extraction-plugins/chatplugin
|
||||
```
|
||||
|
||||
This will generate a plugin image:
|
||||
|
||||
* The extraction plugin is added to your local image registry (`docker images`),
|
||||
* Note that DOCKER\_IMAGE\_NAME is optional and will default to `extraction-plugin/PLUGINID`, e.g.
|
||||
`extraction-plugin/nfi.nl/extract/chat/whatsapp`,
|
||||
* The image is tagged with two tags: `latest`, and your plugin version.
|
||||
|
||||
|
||||
### API changes
|
||||
|
||||
* The field `plugin` has been removed from `PluginInfo`.
|
||||
* The field `pluginId` should now be the first argument of PluginInfo (when using unnamed arguments).
|
||||
|
||||
Old (unnamed arguments):
|
||||
|
||||
```python
|
||||
def plugin_info(self):
|
||||
return PluginInfo(self, '1.0.0', 'description', author,
|
||||
MaturityLevel.PROOF_OF_CONCEPT, '*, 'https://hansken.org',
|
||||
PluginId(...), 'Apache License 2.0')
|
||||
```
|
||||
|
||||
New (removed `self`, and moved `PluginId(...)` to first argument position):
|
||||
|
||||
```python
|
||||
def plugin_info(self):
|
||||
return PluginInfo(PluginId(...), '1.0.0', 'description',
|
||||
author, MaturityLevel.PROOF_OF_CONCEPT,
|
||||
'*', 'https://hansken.org', 'Apache License 2.0')
|
||||
```
|
||||
|
||||
Old (named arguments):
|
||||
|
||||
```python
|
||||
def plugin_info(self):
|
||||
return PluginInfo(plugin=self,
|
||||
version='1.0.0',
|
||||
...)
|
||||
```
|
||||
|
||||
New (removed `plugin=self`):
|
||||
|
||||
```python
|
||||
def plugin_info(self):
|
||||
return PluginInfo(version='1.0.0',
|
||||
...)
|
||||
```
|
||||
|
||||
* Plugin `data_context.data_size` is now a variable instead of a method:
|
||||
|
||||
Old:
|
||||
|
||||
```python
|
||||
def process(self, trace: ExtractionTrace, data_context: DataContext):
|
||||
size = data_context.data_size()
|
||||
```
|
||||
|
||||
New:
|
||||
|
||||
```python
|
||||
def process(self, trace: ExtractionTrace, data_context: DataContext):
|
||||
size = data_context.data_size
|
||||
```
|
||||
|
||||
* Simplify declaring required runtime resources in a plugin's info.
|
||||
|
||||
Extraction plugin resources don't use the builder pattern anymore.
|
||||
|
||||
Old:
|
||||
|
||||
```python
|
||||
return PluginInfo(
|
||||
...,
|
||||
resources=PluginResources.builder().maximum_cpu(0.5).maximum_memory(1000).build())
|
||||
)
|
||||
```
|
||||
|
||||
New:
|
||||
|
||||
```python
|
||||
# no need for a builder, declare resources by direct instantiation
|
||||
return PluginInfo(
|
||||
...,
|
||||
resources=PluginResources(maximum_cpu=2.0, maximum_memory=2048)
|
||||
)
|
||||
# or, as before, specify just on resource
|
||||
return PluginInfo(
|
||||
...,
|
||||
resources=PluginResources(maximum_memory=4096)
|
||||
)
|
||||
```
|
||||
|
||||
## 0.5.1
|
||||
|
||||
* Simplify tracelet properties by making the tracelet type prefix optional.
|
||||
|
||||
```python
|
||||
# using a Tracelet object
|
||||
trace.add_tracelet(Tracelet("prediction", {
|
||||
"type": "example",
|
||||
"confidence": 0.8
|
||||
}))
|
||||
# or without a Tracelet object
|
||||
trace.add_tracelet("identity", {"name": "John Doe", "status": "online"})
|
||||
```
|
||||
|
||||
* Enabled _manual_ plugin testing, as described on :ref:`advanced use of the test framework in Python<python testing>`.
|
||||
|
||||
## 0.5.0
|
||||
|
||||
* Support vector data type in trace properties.
|
||||
|
||||
```python
|
||||
embedding = Vector.from_sequence((width, height))
|
||||
tracelet = Tracelet("prediction", {
|
||||
"prediction.type": "example-vector",
|
||||
"prediction.embedding": embedding
|
||||
})
|
||||
trace.add_tracelet(tracelet)
|
||||
```
|
||||
|
||||
## 0.4.13
|
||||
|
||||
* When writing input search traces for tests, it is no longer required to explicitly set an `id` property.
|
||||
These are automatically generated when executing tests.
|
||||
|
||||
## 0.4.7
|
||||
|
||||
* More `$data` matchers are supported in Hansken.py plugin runner. Before this improvement it was only possible to match
|
||||
on `$data.type`. Now it is also possible to match for example on `$data.mimeType` and `$data.mimeClass`. The `$data`
|
||||
matcher should still be at the end of the query as before.
|
||||
|
||||
## 0.4.6
|
||||
|
||||
* It is now possible to specify maximum system resources in the `PluginInfo`. To run a plugin with 0.5 cpu (= 0.5
|
||||
vCPU/Core/hyperthread) and 1 gb memory, for example, the following configuration can be added to `PluginInfo`:
|
||||
|
||||
```python
|
||||
plugin_info = PluginInfo(...,
|
||||
resources=PluginResources.builder().maximum_cpu(0.5).maximum_memory(1000).build())
|
||||
```
|
||||
|
||||
## 0.4.0
|
||||
|
||||
* Extraction Plugins are now identified with a `PluginInfo.PluginId` containing a domain, category and name. The
|
||||
method `PluginInfo.name(pluginName)` has been replaced by `PluginInfo.id(new PluginId(domain, category, name)`. More
|
||||
details on the plugin naming conventions can be found at the :doc:`../concepts/plugin_naming_convention` section.
|
||||
|
||||
* `PluginInfo.name()` is now deprecated (but will still work for backwards compatibility).
|
||||
|
||||
* A new license field `PluginInfo.license` has also been added in this release.
|
||||
|
||||
* The following example creates a PluginInfo for a plugin with the name `TestPlugin`, licensed under
|
||||
the `Apache License 2.0` license:
|
||||
|
||||
```python
|
||||
class TestPlugin(ExtractionPlugin):
|
||||
def plugin_info(self) -> PluginInfo:
|
||||
return PluginInfo(self,
|
||||
version='1.0.0',
|
||||
description='A plugin for testing.',
|
||||
author=Author('The Externals', 'tester@holmes.nl', 'NFI'),
|
||||
maturity=MaturityLevel.PROOF_OF_CONCEPT,
|
||||
webpage_url='https://hansken.org',
|
||||
matcher='file.extension=txt',
|
||||
id=PluginId(domain='nfi.nl', category='test', name='TestPlugin'),
|
||||
license='Apache License 2.0'
|
||||
)
|
||||
```
|
||||
|
||||
## 0.3.0
|
||||
|
||||
* Extraction Plugins can now create new datastreams on a Trace through data transformations. Data transformations
|
||||
describe how data can be obtained from a source.
|
||||
|
||||
An example case is an extraction plugin that processes an archive file. The plugin creates a child trace per entry in
|
||||
the archive file. Each child trace will have a datastream that is a transformation that marks the start and length of
|
||||
the entry in the original archive data. By just describing the data instead of specifying the actual data, a lot of
|
||||
space is saved.
|
||||
|
||||
Although Hansken supports various transformations, the Extraction Plugins SDK for now only supports ranged data
|
||||
transformations. Ranged data transformations define data as a list of ranges, each range with an offset and length in
|
||||
a bytearray.
|
||||
|
||||
The following example sets a new datastream with dataType `html` on a trace, by setting a ranged data transformation:
|
||||
|
||||
```python
|
||||
trace.add_transformation('html', RangedTransformation(Range(offset, length)))
|
||||
```
|
||||
|
||||
The following example creates a child trace and sets a new datastream with dataType `raw` on it, by setting a ranged
|
||||
data transformation with two ranges:
|
||||
|
||||
```python
|
||||
child = trace.child_builder('new trace')
|
||||
child.add_transformation('raw', RangedTransformation.builder()
|
||||
.add_range(10, 20)
|
||||
.add_range(50, 30)
|
||||
.build())
|
||||
});
|
||||
```
|
||||
|
||||
More detailed documentation will follow in an upcoming SDK release.
|
||||
|
||||
## 0.2.0
|
||||
|
||||
.. warning:: This is an API breaking change.
|
||||
Plugins created with an earlier version of the extraction plugin
|
||||
SDK are not compatible with Hansken that uses `0.2.0` or later.
|
||||
|
||||
* Introduced a new extraction plugin type `api.extraction_plugin.DeferredExtractioPlugin`.
|
||||
Deferred Extraction plugins can be run at a different extraction stage.
|
||||
This type of plugin also allows accessing other traces using the searcher.
|
||||
|
||||
* The class `api.extraction_context.ExtractionContext` has been renamed to `api.data_context.DataContext`.
|
||||
The new name `DataContext` represents the class contents better.
|
||||
Plugins have to update matching import statements accordingly.
|
||||
Plugins should also update the named argument `context` to `data_context` of the plugin `process()` method.
|
||||
This change has no functional changes.
|
||||
|
||||
Old:
|
||||
|
||||
```python
|
||||
from hansken_extraction_plugin.api.extraction_context import ExtractionContext
|
||||
|
||||
def process(self, trace, context):
|
||||
pass
|
||||
```
|
||||
|
||||
New:
|
||||
|
||||
```python
|
||||
from hansken_extraction_plugin.api.data_context import DataContext
|
||||
|
||||
def process(self, trace, data_context):
|
||||
pass
|
||||
```
|
||||
|
||||
* Moved `api.author.Author` to `api.plugin_info.Author`, and moved `api.maturity_level.MaturityLevel`
|
||||
to `api.plugin_info.MaturityLevel`
|
||||
This is a more *pythonic* way of grouping of classes into modules. This change has no functional side effects.
|
||||
|
||||
Plugins have to update matching import statements accordingly.
|
||||
|
||||
Old:
|
||||
|
||||
```python
|
||||
from hansken_extraction_plugin.api.author import Author
|
||||
from hansken_extraction_plugin.api.maturity_level import MaturityLevel
|
||||
from hansken_extraction_plugin.api.plugin_info import PluginInfo
|
||||
```
|
||||
|
||||
New:
|
||||
|
||||
```python
|
||||
from hansken_extraction_plugin.api.plugin_info import Author, MaturityLevel, PluginInfo
|
||||
```
|
||||
|
||||
* Removed `DataContext.get_first_bytes()` from the public API.
|
||||
|
||||
* Removed `api.extraction_trace.validate_update_arguments(..)` from the public API. This method is still invoked
|
||||
implicitly when setting trace properties.
|
||||
@@ -1,13 +0,0 @@
|
||||
const DOCUMENTATION_OPTIONS = {
|
||||
VERSION: 'SNAPSHOT',
|
||||
LANGUAGE: 'en',
|
||||
COLLAPSE_INDEX: false,
|
||||
BUILDER: 'html',
|
||||
FILE_SUFFIX: '.html',
|
||||
LINK_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt',
|
||||
NAVIGATION_WITH_KEYS: false,
|
||||
SHOW_SEARCH_SUMMARY: true,
|
||||
ENABLE_SEARCH_SHORTCUTS: true,
|
||||
};
|
||||
|
Before Width: | Height: | Size: 286 B |