tellaro-query-language 0.1.7__py3-none-any.whl → 0.1.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tellaro-query-language
3
- Version: 0.1.7
3
+ Version: 0.1.8
4
4
  Summary: A flexible, human-friendly query language for searching and filtering structured data
5
5
  Home-page: https://github.com/tellaro/tellaro-query-language
6
6
  License: MIT
@@ -4,11 +4,11 @@ tql/cache/__init__.py,sha256=GIzIEMZUZEYJj72sAhuVLEG-OJEKUG2srUWNM3Ix-T8,213
4
4
  tql/cache/base.py,sha256=0b-8uyh3JltayGmXQI45snTqsM5sQu9u0KcNvZIRa-I,687
5
5
  tql/cache/memory.py,sha256=ibcmQSAxNvqCy6DksbU7gLu6UArYp1u3fW-oLubxtV0,2056
6
6
  tql/cache/redis.py,sha256=ZU_IsVDvpSYpNvPfnZ4iulJDODpEGx3c4dkXLzPzPVc,2309
7
- tql/core.py,sha256=zAkTStN_3logY9ARABDZNsQJfXV5rITiiTKoX5bo274,40859
7
+ tql/core.py,sha256=zIihZijiwqejG78EIRikTtaDvzMgcy2cwBCL3-HwZy8,40797
8
8
  tql/core_components/README.md,sha256=Rm7w4UHdQ0vPBEFybE5b62IOvSA5Nzq2GRvtBHOapmc,3068
9
9
  tql/core_components/__init__.py,sha256=v8BBybPlqV7dkVY9mw1mblvqyAFJZ7Pf_bEc-jAL7FI,643
10
10
  tql/core_components/file_operations.py,sha256=Jr0kkxz_OP2KHOAsIr7KMtYe_lbu8LuBUySt2LQbjJw,3925
11
- tql/core_components/opensearch_operations.py,sha256=X9xtVnrC37O-9eSTbdilvi_cjvm0jXHZIPdldM0yM7g,38028
11
+ tql/core_components/opensearch_operations.py,sha256=HIiSosL2uek88H6aPkX_QDnlgV8bT1fbotG652Z2vdE,37900
12
12
  tql/core_components/stats_operations.py,sha256=zAfDhVOFFPMrRIMw6Qtjxbobbdi7ao_HuHBCcVc3BGY,7579
13
13
  tql/core_components/validation_operations.py,sha256=_VPXh0HABBjsXF99jFT7B6-5QAPsADOCy6poinGrxeE,22454
14
14
  tql/evaluator.py,sha256=YdgS1vuxUEPAHhUsZey-Y4NydeS8CTYOy_O8R5_K8cE,15421
@@ -36,7 +36,7 @@ tql/opensearch_components/field_mapping.py,sha256=N4r7VkzNeXjIhNDt2cfnd1LbkvaS_9
36
36
  tql/opensearch_components/lucene_converter.py,sha256=ZbupWZ2smGhWfE9cSIrNo7MZVY35l2t86HYM-bd7nKw,12436
37
37
  tql/opensearch_components/query_converter.py,sha256=9Nkhehb8X7jIQcyRaHCa5WCKWtovdRGKuSdDsBulrG0,36722
38
38
  tql/opensearch_mappings.py,sha256=zJCCdMrxK7mswrkxd5LiOhunQ9GIJNZdhktVoGXgVgk,11529
39
- tql/opensearch_stats.py,sha256=03mjvnUJpNtCDpU-E1ZkugDJMIKC-F76Hekd4gppPxU,17812
39
+ tql/opensearch_stats.py,sha256=h-hA2EZ-sc4S1zxr7jaInmonfrgTXoGBbb9sOYurdFE,17823
40
40
  tql/parser.py,sha256=dnjgc-sDVihe-VIVPT_SRULeng4OWaLtkbM23dluT6M,75532
41
41
  tql/parser_components/README.md,sha256=lvQX72ckq2zyotGs8QIHHCIFqaA7bOHwkP44wU8Zoiw,2322
42
42
  tql/parser_components/__init__.py,sha256=zBwHBMPJyHSBbaOojf6qTrJYjJg5A6tPUE8nHFdRiQs,521
@@ -46,11 +46,11 @@ tql/parser_components/field_extractor.py,sha256=TumeuUo2c5gPYVbTPsmU43C3TJFC8chA
46
46
  tql/parser_components/grammar.py,sha256=lSvjABvEBaH29-ad-_UGD4WmofdNwC_pO2OKQJ_It-U,19309
47
47
  tql/post_processor.py,sha256=-vA2wgbuLij2FVnj5I9HDHtw5bKj9Cu3EE9mtoeSWk8,28859
48
48
  tql/scripts.py,sha256=VOr5vCjIvKlW36kwvJx7JGFIRM16IJZlbJcWlBexBtk,3728
49
- tql/stats_evaluator.py,sha256=GtmygLdPPMhAMR5bN1h69cQsNBYqg-jQl6bN5rwEx6Q,15692
49
+ tql/stats_evaluator.py,sha256=lOEbICFuP0krZZqEjREz37xlpm35_P6eRgkHVgJLNI4,15703
50
50
  tql/stats_transformer.py,sha256=MT-4rDWZSySgn4Fuq9H0c-mvwFYLM6FqWpPv2rHX-rE,7588
51
51
  tql/validators.py,sha256=e9MlX-zQ_O3M8YP8vXyMjKU8iiJMTh6mMK0iv0_4gTY,3771
52
- tellaro_query_language-0.1.7.dist-info/LICENSE,sha256=zRhQ85LnW55fWgAjQctckwQ67DX5Jmt64lq343ThZFU,1063
53
- tellaro_query_language-0.1.7.dist-info/METADATA,sha256=IDzVPrFm_GQJTRZRX4iLNw45Nqszf3TqBW6ZW6UUKBo,15109
54
- tellaro_query_language-0.1.7.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
55
- tellaro_query_language-0.1.7.dist-info/entry_points.txt,sha256=H43APfGBMsZkKsUCnFTaqprQPW-Kce2yz2qsBL3dZrw,164
56
- tellaro_query_language-0.1.7.dist-info/RECORD,,
52
+ tellaro_query_language-0.1.8.dist-info/LICENSE,sha256=zRhQ85LnW55fWgAjQctckwQ67DX5Jmt64lq343ThZFU,1063
53
+ tellaro_query_language-0.1.8.dist-info/METADATA,sha256=7dSseBpILkxyeAW0B7QQ3psZORRfkM0Cai7l5uiQGCU,15109
54
+ tellaro_query_language-0.1.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
55
+ tellaro_query_language-0.1.8.dist-info/entry_points.txt,sha256=H43APfGBMsZkKsUCnFTaqprQPW-Kce2yz2qsBL3dZrw,164
56
+ tellaro_query_language-0.1.8.dist-info/RECORD,,
tql/core.py CHANGED
@@ -167,7 +167,7 @@ class TQL:
167
167
  return f"NOT {operand}"
168
168
  return str(ast)
169
169
 
170
- def query(
170
+ def query( # noqa: C901
171
171
  self, data: Union[List[Dict], str], query: str, size: int = 10, save_enrichment: bool = False
172
172
  ) -> Dict[str, Any]: # noqa: C901
173
173
  """Execute a TQL query against data and return results in execute_opensearch format.
@@ -470,8 +470,7 @@ class TQL:
470
470
  size: Number of results to return (default: 500)
471
471
  from_: Starting offset for pagination (default: 0)
472
472
  timestamp_field: Field name for timestamp filtering (default: "@timestamp")
473
- time_range: Optional time range dict with 'gte' and/or 'lte' keys.
474
- If None, defaults to 'gte': 'now-15m', 'lte': 'now'
473
+ time_range: Optional time range dict with 'gte' and/or 'lte' keys
475
474
  scan_all: If True, use scroll API to retrieve all matching documents
476
475
  scroll_size: Size per scroll when scan_all=True (default: 1000)
477
476
  scroll_timeout: Scroll timeout when scan_all=True (default: "5m")
@@ -311,10 +311,6 @@ class OpenSearchOperations:
311
311
  search_body = opensearch_query.copy()
312
312
 
313
313
  # Handle time range filtering
314
- if time_range is None:
315
- # Default time range: last 15 minutes
316
- time_range = {"gte": "now-15m", "lte": "now"}
317
-
318
314
  # Add time range filter to the query
319
315
  if time_range:
320
316
  base_query = search_body.get("query", {})
@@ -492,7 +488,7 @@ class OpenSearchOperations:
492
488
  }
493
489
  else:
494
490
  # Multiple aggregations
495
- results = {}
491
+ agg_results = {}
496
492
  for i, agg in enumerate(aggregations):
497
493
  func = agg.get("function", "")
498
494
  field = agg.get("field", "*")
@@ -522,11 +518,11 @@ class OpenSearchOperations:
522
518
  value = agg_result
523
519
 
524
520
  key = agg.get("alias") or f"{func}_{field}"
525
- results[key] = value
521
+ agg_results[key] = value
526
522
 
527
523
  stats_results = {
528
524
  "type": "stats",
529
- "results": results,
525
+ "results": agg_results,
530
526
  }
531
527
  else:
532
528
  stats_results = {"type": "stats", "operation": "unknown", "field": "*", "values": 0, "group_by": []}
tql/opensearch_stats.py CHANGED
@@ -404,7 +404,7 @@ class OpenSearchStatsTranslator:
404
404
 
405
405
  def _extract_aggregation_value( # noqa: C901
406
406
  self, agg_result: Dict[str, Any], function: str
407
- ) -> Union[int, float, Dict[str, Any], None]:
407
+ ) -> Union[int, float, Dict[str, Any], List[Any], None]:
408
408
  """Extract value from OpenSearch aggregation result.
409
409
 
410
410
  Args:
tql/stats_evaluator.py CHANGED
@@ -198,7 +198,7 @@ class TQLStatsEvaluator:
198
198
 
199
199
  def _calculate_aggregation( # noqa: C901
200
200
  self, records: List[Dict[str, Any]], agg_spec: Dict[str, Any]
201
- ) -> Union[int, float, Dict[str, Any], None]:
201
+ ) -> Union[int, float, Dict[str, Any], List[Any], None]:
202
202
  """Calculate a single aggregation value.
203
203
 
204
204
  Args: