Skip to content

Commit 6f972ea

Browse files
committed
versions 1.1
1 parent ef5f94b commit 6f972ea

File tree

6 files changed

+32
-15
lines changed

6 files changed

+32
-15
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Changelog
22

33

4+
## v 1.1
5+
6+
* Warning messages included with `query_iterative` outputs.
7+
48
## v 1.0.3
59

610
* Added DSL grammar for DSL V2.7

dimcli/VERSION.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# !/usr/bin/env python
22
# -*- coding: UTF-8 -*-
33

4-
__version__ = "1.0.3" # LATEST? => https://pypi.org/project/dimcli/
4+
__version__ = "1.1" # LATEST? => https://pypi.org/project/dimcli/
55
__copyright__ = "CopyRight (C) 2018-2023 by Digital Science"
66
__license__ = "MIT"
77
__author__ = "Michele Pasin"

dimcli/core/api.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,9 +200,11 @@ def query(self, q, show_results=None, retry=0, verbose=None):
200200
def query_iterative(self, q, show_results=None, limit=1000, skip=0, pause=1.5, force=False, maxlimit=0, verbose=None, _tot_count_prev_query=0, _warnings_tot=None):
201201
"""Runs a DSL query and then keep querying until all matching records have been extracted.
202202
203-
The API returns a maximum of 1000 records per call. If a DSL query results in more than 1000 matches, it is possible to use pagination to get more results.
203+
The API returns a maximum of 1000 records per call. If a DSL query results in more than 1000 matches, it is possible to use pagination to get more results, up to 50k.
204204
205205
Iterative querying works by automatically paginating through all records available for a result set. The original query gets turned into a loop that uses the `limit` / `skip` operators until all the results available have been extracted.
206+
207+
NOTE If any of the iterative queries produce warning messages, these are aggregated and added to the `_warnings`section of the output data.
206208
207209
Parameters
208210
----------
@@ -319,10 +321,11 @@ def query_iterative(self, q, show_results=None, limit=1000, skip=0, pause=1.5, f
319321
printDebug(f"{skip}-{new_skip} / {tot} ({t}s)")
320322

321323
if res["_warnings"]:
324+
warnings = [f"""{x} (iteration: {skip}-{new_skip})""" for x in res["_warnings"]]
322325
if _warnings_tot:
323-
_warnings_tot += res["_warnings"]
326+
_warnings_tot += warnings
324327
else:
325-
_warnings_tot = res["_warnings"]
328+
_warnings_tot = warnings
326329

327330
if flag_force:
328331
output = self.query_iterative(q, show_results, limit, new_skip, pause, force, maxlimit, verbose, _tot_count_prev_query, _warnings_tot)
@@ -357,7 +360,10 @@ def query_iterative(self, q, show_results=None, limit=1000, skip=0, pause=1.5, f
357360
result = DslDataset(response_simulation)
358361
if show_results or (show_results is None and self._show_results):
359362
IPython.display.display(result)
360-
if verbose: printDebug(f"===\nRecords extracted: {len(output)}")
363+
if verbose:
364+
printDebug(f"===\nRecords extracted: {len(output)}")
365+
if _warnings_tot:
366+
printDebug(f"Warnings: {len(_warnings_tot)}")
361367
return result
362368
else:
363369
return output

docs/_modules/dimcli/core/api.html

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,11 @@ <h1>Source code for dimcli.core.api</h1><div class="highlight"><pre>
267267
<div class="viewcode-block" id="Dsl.query_iterative"><a class="viewcode-back" href="../../../modules.html#dimcli.core.api.Dsl.query_iterative">[docs]</a> <span class="k">def</span> <span class="nf">query_iterative</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">q</span><span class="p">,</span> <span class="n">show_results</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">limit</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="n">skip</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">pause</span><span class="o">=</span><span class="mf">1.5</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">maxlimit</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">verbose</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">_tot_count_prev_query</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">_warnings_tot</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
268268
<span class="sd">&quot;&quot;&quot;Runs a DSL query and then keep querying until all matching records have been extracted. </span>
269269
<span class="sd"> </span>
270-
<span class="sd"> The API returns a maximum of 1000 records per call. If a DSL query results in more than 1000 matches, it is possible to use pagination to get more results. </span>
270+
<span class="sd"> The API returns a maximum of 1000 records per call. If a DSL query results in more than 1000 matches, it is possible to use pagination to get more results, up to 50k. </span>
271271
<span class="sd"> </span>
272272
<span class="sd"> Iterative querying works by automatically paginating through all records available for a result set. The original query gets turned into a loop that uses the `limit` / `skip` operators until all the results available have been extracted. </span>
273+
274+
<span class="sd"> NOTE If any of the iterative queries produce warning messages, these are aggregated and added to the `_warnings`section of the output data.</span>
273275
<span class="sd"> </span>
274276
<span class="sd"> Parameters</span>
275277
<span class="sd"> ----------</span>
@@ -386,10 +388,11 @@ <h1>Source code for dimcli.core.api</h1><div class="highlight"><pre>
386388
<span class="n">printDebug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">skip</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="n">new_skip</span><span class="si">}</span><span class="s2"> / </span><span class="si">{</span><span class="n">tot</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">t</span><span class="si">}</span><span class="s2">s)&quot;</span><span class="p">)</span>
387389

388390
<span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;_warnings&quot;</span><span class="p">]:</span>
391+
<span class="n">warnings</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span><span class="si">{</span><span class="n">x</span><span class="si">}</span><span class="s2"> (iteration: </span><span class="si">{</span><span class="n">skip</span><span class="si">}</span><span class="s2">-</span><span class="si">{</span><span class="n">new_skip</span><span class="si">}</span><span class="s2">)&quot;&quot;&quot;</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;_warnings&quot;</span><span class="p">]]</span>
389392
<span class="k">if</span> <span class="n">_warnings_tot</span><span class="p">:</span>
390-
<span class="n">_warnings_tot</span> <span class="o">+=</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;_warnings&quot;</span><span class="p">]</span>
393+
<span class="n">_warnings_tot</span> <span class="o">+=</span> <span class="n">warnings</span>
391394
<span class="k">else</span><span class="p">:</span>
392-
<span class="n">_warnings_tot</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;_warnings&quot;</span><span class="p">]</span>
395+
<span class="n">_warnings_tot</span> <span class="o">=</span> <span class="n">warnings</span>
393396

394397
<span class="k">if</span> <span class="n">flag_force</span><span class="p">:</span>
395398
<span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_iterative</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">show_results</span><span class="p">,</span> <span class="n">limit</span><span class="p">,</span> <span class="n">new_skip</span><span class="p">,</span> <span class="n">pause</span><span class="p">,</span> <span class="n">force</span><span class="p">,</span> <span class="n">maxlimit</span><span class="p">,</span> <span class="n">verbose</span><span class="p">,</span> <span class="n">_tot_count_prev_query</span><span class="p">,</span> <span class="n">_warnings_tot</span><span class="p">)</span>
@@ -424,7 +427,10 @@ <h1>Source code for dimcli.core.api</h1><div class="highlight"><pre>
424427
<span class="n">result</span> <span class="o">=</span> <span class="n">DslDataset</span><span class="p">(</span><span class="n">response_simulation</span><span class="p">)</span>
425428
<span class="k">if</span> <span class="n">show_results</span> <span class="ow">or</span> <span class="p">(</span><span class="n">show_results</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_show_results</span><span class="p">):</span>
426429
<span class="n">IPython</span><span class="o">.</span><span class="n">display</span><span class="o">.</span><span class="n">display</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
427-
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> <span class="n">printDebug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;===</span><span class="se">\n</span><span class="s2">Records extracted: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
430+
<span class="k">if</span> <span class="n">verbose</span><span class="p">:</span>
431+
<span class="n">printDebug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;===</span><span class="se">\n</span><span class="s2">Records extracted: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">output</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
432+
<span class="k">if</span> <span class="n">_warnings_tot</span><span class="p">:</span>
433+
<span class="n">printDebug</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Warnings: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">_warnings_tot</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
428434
<span class="k">return</span> <span class="n">result</span>
429435
<span class="k">else</span><span class="p">:</span>
430436
<span class="k">return</span> <span class="n">output</span></div>

docs/modules.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,9 @@ <h1>Modules Reference<a class="headerlink" href="#modules-reference" title="Perm
270270
<dt class="sig sig-object py" id="dimcli.core.api.Dsl.query_iterative">
271271
<span class="sig-name descname"><span class="pre">query_iterative</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">q</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">show_results</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">limit</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1000</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">skip</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pause</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1.5</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">force</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">maxlimit</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">verbose</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_tot_count_prev_query</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">_warnings_tot</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/dimcli/core/api.html#Dsl.query_iterative"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#dimcli.core.api.Dsl.query_iterative" title="Permalink to this definition"></a></dt>
272272
<dd><p>Runs a DSL query and then keep querying until all matching records have been extracted.</p>
273-
<p>The API returns a maximum of 1000 records per call. If a DSL query results in more than 1000 matches, it is possible to use pagination to get more results.</p>
273+
<p>The API returns a maximum of 1000 records per call. If a DSL query results in more than 1000 matches, it is possible to use pagination to get more results, up to 50k.</p>
274274
<p>Iterative querying works by automatically paginating through all records available for a result set. The original query gets turned into a loop that uses the <cite>limit</cite> / <cite>skip</cite> operators until all the results available have been extracted.</p>
275+
<p>NOTE If any of the iterative queries produce warning messages, these are aggregated and added to the <a href="#id1"><span class="problematic" id="id2">`</span></a>_warnings`section of the output data.</p>
275276
<dl class="field-list simple">
276277
<dt class="field-odd">Parameters</dt>
277278
<dd class="field-odd"><ul class="simple">
@@ -1454,23 +1455,23 @@ <h1>Modules Reference<a class="headerlink" href="#modules-reference" title="Perm
14541455
&lt;<a class="reference external" href="http://click.pocoo.org/5/api/#click.style">http://click.pocoo.org/5/api/#click.style</a>&gt;
14551456
Styles a text with ANSI styles and returns the new string. By default the styling is self contained which means that at the end of the string a reset code is issued. This can be prevented by passing reset=False.</p>
14561457
<p>This works also with inner click styles eg</p>
1457-
<p><a href="#id1"><span class="problematic" id="id2">``</span></a><a href="#id3"><span class="problematic" id="id4">`</span></a>python
1458+
<p><a href="#id3"><span class="problematic" id="id4">``</span></a><a href="#id5"><span class="problematic" id="id6">`</span></a>python
14581459
uri, title = “<a class="reference external" href="http://example.com">http://example.com</a>”, “My ontology”
14591460
printDebug(click.style(“[%d]” % 1, fg=’blue’) +</p>
14601461
<blockquote>
14611462
<div><p>click.style(uri + ” ==&gt; “, fg=’black’) +
14621463
click.style(title, fg=’red’))</p>
14631464
</div></blockquote>
1464-
<p><a href="#id5"><span class="problematic" id="id6">``</span></a><a href="#id7"><span class="problematic" id="id8">`</span></a></p>
1465+
<p><a href="#id7"><span class="problematic" id="id8">``</span></a><a href="#id9"><span class="problematic" id="id10">`</span></a></p>
14651466
<p>Or even with Colorama</p>
1466-
<p><a href="#id9"><span class="problematic" id="id10">``</span></a>`
1467+
<p><a href="#id11"><span class="problematic" id="id12">``</span></a>`
14671468
from colorama import Fore, Style</p>
14681469
<dl class="simple">
14691470
<dt>printDebug(Fore.BLUE + Style.BRIGHT + “[%d]” % 1 +</dt><dd><p>Style.RESET_ALL + uri + ” ==&gt; ” + Fore.RED + title +
14701471
Style.RESET_ALL)</p>
14711472
</dd>
14721473
</dl>
1473-
<p><a href="#id11"><span class="problematic" id="id12">``</span></a><a href="#id13"><span class="problematic" id="id14">`</span></a></p>
1474+
<p><a href="#id13"><span class="problematic" id="id14">``</span></a><a href="#id15"><span class="problematic" id="id16">`</span></a></p>
14741475
<p>Examples:</p>
14751476
<p>click.echo(click.style(‘Hello World!’, fg=’green’))
14761477
click.echo(click.style(‘ATTENTION!’, blink=True))

0 commit comments

Comments
 (0)