flow.record 3.19.dev3__tar.gz → 3.19.dev4__tar.gz

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.
Files changed (84) hide show
  1. {flow_record-3.19.dev3/flow.record.egg-info → flow_record-3.19.dev4}/PKG-INFO +2 -2
  2. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/elastic.py +5 -2
  3. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/version.py +2 -2
  4. {flow_record-3.19.dev3 → flow_record-3.19.dev4/flow.record.egg-info}/PKG-INFO +2 -2
  5. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/COPYRIGHT +0 -0
  6. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/LICENSE +0 -0
  7. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/MANIFEST.in +0 -0
  8. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/README.md +0 -0
  9. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/examples/filesystem.py +0 -0
  10. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/examples/passivedns.py +0 -0
  11. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/examples/records.json +0 -0
  12. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/examples/tcpconn.py +0 -0
  13. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/__init__.py +0 -0
  14. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/__init__.py +0 -0
  15. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/archive.py +0 -0
  16. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/avro.py +0 -0
  17. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/broker.py +0 -0
  18. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/csvfile.py +0 -0
  19. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/duckdb.py +0 -0
  20. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/jsonfile.py +0 -0
  21. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/line.py +0 -0
  22. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/mongo.py +0 -0
  23. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/split.py +0 -0
  24. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/splunk.py +0 -0
  25. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/sqlite.py +0 -0
  26. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/stream.py +0 -0
  27. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/text.py +0 -0
  28. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/adapter/xlsx.py +0 -0
  29. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/base.py +0 -0
  30. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/exceptions.py +0 -0
  31. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/fieldtypes/__init__.py +0 -0
  32. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/fieldtypes/credential.py +0 -0
  33. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/fieldtypes/net/__init__.py +0 -0
  34. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/fieldtypes/net/ip.py +0 -0
  35. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/fieldtypes/net/ipv4.py +0 -0
  36. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/fieldtypes/net/tcp.py +0 -0
  37. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/fieldtypes/net/udp.py +0 -0
  38. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/jsonpacker.py +0 -0
  39. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/packer.py +0 -0
  40. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/selector.py +0 -0
  41. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/stream.py +0 -0
  42. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/tools/__init__.py +0 -0
  43. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/tools/geoip.py +0 -0
  44. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/tools/rdump.py +0 -0
  45. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/utils.py +0 -0
  46. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow/record/whitelist.py +0 -0
  47. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow.record.egg-info/SOURCES.txt +0 -0
  48. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow.record.egg-info/dependency_links.txt +0 -0
  49. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow.record.egg-info/entry_points.txt +0 -0
  50. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow.record.egg-info/requires.txt +0 -0
  51. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/flow.record.egg-info/top_level.txt +0 -0
  52. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/pyproject.toml +0 -0
  53. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/setup.cfg +0 -0
  54. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/__init__.py +0 -0
  55. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/_utils.py +0 -0
  56. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/docs/Makefile +0 -0
  57. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/docs/conf.py +0 -0
  58. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/docs/index.rst +0 -0
  59. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/selector_explain_example.py +0 -0
  60. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/standalone_test.py +0 -0
  61. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_adapter_line.py +0 -0
  62. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_adapter_text.py +0 -0
  63. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_avro.py +0 -0
  64. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_avro_adapter.py +0 -0
  65. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_compiled_selector.py +0 -0
  66. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_csv_adapter.py +0 -0
  67. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_deprecations.py +0 -0
  68. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_elastic_adapter.py +0 -0
  69. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_fieldtype_ip.py +0 -0
  70. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_fieldtypes.py +0 -0
  71. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_json_packer.py +0 -0
  72. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_json_record_adapter.py +0 -0
  73. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_multi_timestamp.py +0 -0
  74. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_packer.py +0 -0
  75. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_rdump.py +0 -0
  76. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_record.py +0 -0
  77. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_record_adapter.py +0 -0
  78. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_record_descriptor.py +0 -0
  79. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_regression.py +0 -0
  80. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_selector.py +0 -0
  81. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_splunk_adapter.py +0 -0
  82. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_sqlite_duckdb_adapter.py +0 -0
  83. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tests/test_xlsx_adapter.py +0 -0
  84. {flow_record-3.19.dev3 → flow_record-3.19.dev4}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: flow.record
3
- Version: 3.19.dev3
3
+ Version: 3.19.dev4
4
4
  Summary: A library for defining and creating structured data (called records) that can be streamed to disk or piped to other tools that use flow.record
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
@@ -25,6 +25,7 @@ Read usage: rdump elastic+[PROTOCOL]://[IP]:[PORT]?index=[INDEX]
25
25
 
26
26
  Optional arguments:
27
27
  [API_KEY]: base64 encoded api key to authenticate with (default: False)
28
+ [QUEUE_SIZE]: maximum queue size for writing records; limits memory usage (default: 100000)
28
29
  [INDEX]: name of the index to use (default: records)
29
30
  [VERIFY_CERTS]: verify certs of Elasticsearch instance (default: True)
30
31
  [HASH_RECORD]: make record unique by hashing record [slow] (default: False)
@@ -43,6 +44,7 @@ class ElasticWriter(AbstractWriter):
43
44
  http_compress: str | bool = True,
44
45
  hash_record: str | bool = False,
45
46
  api_key: str | None = None,
47
+ queue_size: int = 100000,
46
48
  **kwargs,
47
49
  ) -> None:
48
50
  self.index = index
@@ -50,11 +52,12 @@ class ElasticWriter(AbstractWriter):
50
52
  verify_certs = str(verify_certs).lower() in ("1", "true")
51
53
  http_compress = str(http_compress).lower() in ("1", "true")
52
54
  self.hash_record = str(hash_record).lower() in ("1", "true")
55
+ queue_size = int(queue_size)
53
56
 
54
57
  if not uri.lower().startswith(("http://", "https://")):
55
58
  uri = "http://" + uri
56
59
 
57
- self.queue: queue.Queue[Record | StopIteration] = queue.Queue()
60
+ self.queue: queue.Queue[Record | StopIteration] = queue.Queue(maxsize=queue_size)
58
61
  self.event = threading.Event()
59
62
 
60
63
  self.es = elasticsearch.Elasticsearch(
@@ -147,7 +150,7 @@ class ElasticWriter(AbstractWriter):
147
150
  self.event.set()
148
151
 
149
152
  def write(self, record: Record) -> None:
150
- self.queue.put_nowait(record)
153
+ self.queue.put(record)
151
154
 
152
155
  def flush(self) -> None:
153
156
  pass
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '3.19.dev3'
16
- __version_tuple__ = version_tuple = (3, 19, 'dev3')
15
+ __version__ = version = '3.19.dev4'
16
+ __version_tuple__ = version_tuple = (3, 19, 'dev4')
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: flow.record
3
- Version: 3.19.dev3
3
+ Version: 3.19.dev4
4
4
  Summary: A library for defining and creating structured data (called records) that can be streamed to disk or piped to other tools that use flow.record
5
5
  Author-email: Dissect Team <dissect@fox-it.com>
6
6
  License: Affero General Public License v3
File without changes
File without changes