cognite-extractor-utils 7.4.2__tar.gz → 7.4.3__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.

Potentially problematic release.


This version of cognite-extractor-utils might be problematic. Click here for more details.

Files changed (32) hide show
  1. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/PKG-INFO +1 -1
  2. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/__init__.py +1 -1
  3. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/files.py +34 -41
  4. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/pyproject.toml +1 -1
  5. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/LICENSE +0 -0
  6. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/README.md +0 -0
  7. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/_inner_util.py +0 -0
  8. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/base.py +0 -0
  9. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/configtools/__init__.py +0 -0
  10. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/configtools/_util.py +0 -0
  11. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/configtools/elements.py +0 -0
  12. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/configtools/loaders.py +0 -0
  13. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/exceptions.py +0 -0
  14. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/metrics.py +0 -0
  15. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/py.typed +0 -0
  16. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/statestore/__init__.py +0 -0
  17. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/statestore/_base.py +0 -0
  18. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/statestore/hashing.py +0 -0
  19. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/statestore/watermark.py +0 -0
  20. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/threading.py +0 -0
  21. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/unstable/__init__.py +0 -0
  22. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/__init__.py +0 -0
  23. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/_base.py +0 -0
  24. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/_metrics.py +0 -0
  25. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/assets.py +0 -0
  26. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/data_modeling.py +0 -0
  27. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/events.py +0 -0
  28. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/raw.py +0 -0
  29. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader/time_series.py +0 -0
  30. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader_extractor.py +0 -0
  31. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/uploader_types.py +0 -0
  32. {cognite_extractor_utils-7.4.2 → cognite_extractor_utils-7.4.3}/cognite/extractorutils/util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cognite-extractor-utils
3
- Version: 7.4.2
3
+ Version: 7.4.3
4
4
  Summary: Utilities for easier development of extractors for CDF
5
5
  Home-page: https://github.com/cognitedata/python-extractor-utils
6
6
  License: Apache-2.0
@@ -16,5 +16,5 @@
16
16
  Cognite extractor utils is a Python package that simplifies the development of new extractors.
17
17
  """
18
18
 
19
- __version__ = "7.4.2"
19
+ __version__ = "7.4.3"
20
20
  from .base import Extractor
@@ -251,43 +251,38 @@ class IOFileUploadQueue(AbstractUploadQueue):
251
251
  return node.as_id()
252
252
 
253
253
  def _upload_empty(
254
- self, meta_or_apply: FileMetadataOrCogniteExtractorFile
254
+ self, file_meta: FileMetadataOrCogniteExtractorFile
255
255
  ) -> tuple[FileMetadataOrCogniteExtractorFile, str]:
256
- if isinstance(meta_or_apply, CogniteExtractorFileApply):
257
- node_id = self._apply_cognite_file(meta_or_apply)
258
- meta_or_apply, url = self._create_cdm(instance_id=node_id)
256
+ if isinstance(file_meta, CogniteExtractorFileApply):
257
+ node_id = self._apply_cognite_file(file_meta)
258
+ file_meta, url = self._create_cdm(instance_id=node_id)
259
259
  else:
260
- meta_or_apply, url = self.cdf_client.files.create(
261
- file_metadata=meta_or_apply, overwrite=self.overwrite_existing
262
- )
263
- return meta_or_apply, url
260
+ file_meta, url = self.cdf_client.files.create(file_metadata=file_meta, overwrite=self.overwrite_existing)
261
+ return file_meta, url
264
262
 
265
- def _upload_bytes(self, size: int, file: BinaryIO, meta_or_apply: FileMetadataOrCogniteExtractorFile) -> None:
266
- meta_or_apply, url = self._upload_empty(meta_or_apply)
267
- resp = self._httpx_client.send(self._get_file_upload_request(url, file, size, meta_or_apply.mime_type))
263
+ def _upload_bytes(self, size: int, file: BinaryIO, file_meta: FileMetadataOrCogniteExtractorFile) -> None:
264
+ file_meta, url = self._upload_empty(file_meta)
265
+ resp = self._httpx_client.send(self._get_file_upload_request(url, file, size, file_meta.mime_type))
268
266
  resp.raise_for_status()
269
267
 
270
- def _upload_multipart(self, size: int, file: BinaryIO, meta_or_apply: FileMetadataOrCogniteExtractorFile) -> None:
268
+ def _upload_multipart(self, size: int, file: BinaryIO, file_meta: FileMetadataOrCogniteExtractorFile) -> None:
271
269
  chunks = ChunkedStream(file, self.max_file_chunk_size, size)
272
270
  self.logger.debug(
273
- f"File {meta_or_apply.external_id} is larger than 5GiB ({size})"
274
- f", uploading in {chunks.chunk_count} chunks"
271
+ f"File {file_meta.external_id} is larger than 5GiB ({size})" f", uploading in {chunks.chunk_count} chunks"
275
272
  )
276
273
 
277
- returned_file_metadata = self._create_multi_part(meta_or_apply, chunks)
274
+ returned_file_metadata = self._create_multi_part(file_meta, chunks)
278
275
  upload_urls = returned_file_metadata["uploadUrls"]
279
276
  upload_id = returned_file_metadata["uploadId"]
280
277
  file_meta = FileMetadata.load(returned_file_metadata)
281
278
 
282
279
  for url in upload_urls:
283
280
  chunks.next_chunk()
284
- resp = self._httpx_client.send(
285
- self._get_file_upload_request(url, chunks, len(chunks), meta_or_apply.mime_type)
286
- )
281
+ resp = self._httpx_client.send(self._get_file_upload_request(url, chunks, len(chunks), file_meta.mime_type))
287
282
  resp.raise_for_status()
288
283
 
289
284
  completed_headers = (
290
- _CDF_ALPHA_VERSION_HEADER if isinstance(meta_or_apply, CogniteExtractorFileApply) is not None else None
285
+ _CDF_ALPHA_VERSION_HEADER if isinstance(file_meta, CogniteExtractorFileApply) is not None else None
291
286
  )
292
287
 
293
288
  res = self.cdf_client.files._post(
@@ -297,9 +292,9 @@ class IOFileUploadQueue(AbstractUploadQueue):
297
292
  )
298
293
  res.raise_for_status()
299
294
 
300
- def _create_multi_part(self, meta_or_apply: FileMetadataOrCogniteExtractorFile, chunks: ChunkedStream) -> dict:
301
- if isinstance(meta_or_apply, CogniteExtractorFileApply):
302
- node_id = self._apply_cognite_file(meta_or_apply)
295
+ def _create_multi_part(self, file_meta: FileMetadataOrCogniteExtractorFile, chunks: ChunkedStream) -> dict:
296
+ if isinstance(file_meta, CogniteExtractorFileApply):
297
+ node_id = self._apply_cognite_file(file_meta)
303
298
  identifiers = IdentifierSequence.load(instance_ids=node_id).as_singleton()
304
299
  self.cdf_client.files._warn_alpha()
305
300
  res = self.cdf_client.files._post(
@@ -313,7 +308,7 @@ class IOFileUploadQueue(AbstractUploadQueue):
313
308
  else:
314
309
  res = self.cdf_client.files._post(
315
310
  url_path="/files/initmultipartupload",
316
- json=meta_or_apply.dump(camel_case=True),
311
+ json=file_meta.dump(camel_case=True),
317
312
  params={"overwrite": self.overwrite_existing, "parts": chunks.chunk_count},
318
313
  )
319
314
  res.raise_for_status()
@@ -321,7 +316,7 @@ class IOFileUploadQueue(AbstractUploadQueue):
321
316
 
322
317
  def add_io_to_upload_queue(
323
318
  self,
324
- meta_or_apply: FileMetadataOrCogniteExtractorFile,
319
+ file_meta: FileMetadataOrCogniteExtractorFile,
325
320
  read_file: Callable[[], BinaryIO],
326
321
  extra_retries: Optional[
327
322
  Union[Tuple[Type[Exception], ...], Dict[Type[Exception], Callable[[Any], bool]]]
@@ -351,36 +346,34 @@ class IOFileUploadQueue(AbstractUploadQueue):
351
346
  max_delay=RETRY_MAX_DELAY,
352
347
  backoff=RETRY_BACKOFF_FACTOR,
353
348
  )
354
- def upload_file(read_file: Callable[[], BinaryIO], meta_or_apply: FileMetadataOrCogniteExtractorFile) -> None:
349
+ def upload_file(read_file: Callable[[], BinaryIO], file_meta: FileMetadataOrCogniteExtractorFile) -> None:
355
350
  with read_file() as file:
356
351
  size = super_len(file)
357
352
  if size == 0:
358
353
  # upload just the file metadata witout data
359
- meta_or_apply, _ = self._upload_empty(meta_or_apply)
354
+ file_meta, _ = self._upload_empty(file_meta)
360
355
  elif size >= self.max_single_chunk_file_size:
361
356
  # The minimum chunk size is 4000MiB.
362
- self._upload_multipart(size, file, meta_or_apply)
357
+ self._upload_multipart(size, file, file_meta)
363
358
 
364
359
  else:
365
- self._upload_bytes(size, file, meta_or_apply)
360
+ self._upload_bytes(size, file, file_meta)
366
361
 
367
- if isinstance(meta_or_apply, CogniteExtractorFileApply):
368
- meta_or_apply.is_uploaded = True
362
+ if isinstance(file_meta, CogniteExtractorFileApply):
363
+ file_meta.is_uploaded = True
369
364
 
370
365
  if self.post_upload_function:
371
366
  try:
372
- self.post_upload_function([meta_or_apply])
367
+ self.post_upload_function([file_meta])
373
368
  except Exception as e:
374
369
  self.logger.error("Error in upload callback: %s", str(e))
375
370
 
376
- def wrapped_upload(
377
- read_file: Callable[[], BinaryIO], meta_or_apply: FileMetadataOrCogniteExtractorFile
378
- ) -> None:
371
+ def wrapped_upload(read_file: Callable[[], BinaryIO], file_meta: FileMetadataOrCogniteExtractorFile) -> None:
379
372
  try:
380
- upload_file(read_file, meta_or_apply)
373
+ upload_file(read_file, file_meta)
381
374
 
382
375
  except Exception as e:
383
- self.logger.exception(f"Unexpected error while uploading file: {meta_or_apply.external_id}")
376
+ self.logger.exception(f"Unexpected error while uploading file: {file_meta.external_id}")
384
377
  self.errors.append(e)
385
378
 
386
379
  finally:
@@ -397,7 +390,7 @@ class IOFileUploadQueue(AbstractUploadQueue):
397
390
  pass
398
391
 
399
392
  with self.lock:
400
- self.upload_queue.append(self._pool.submit(wrapped_upload, read_file, meta_or_apply))
393
+ self.upload_queue.append(self._pool.submit(wrapped_upload, read_file, file_meta))
401
394
  self.upload_queue_size += 1
402
395
  self.files_queued.inc()
403
396
  self.queue_size.set(self.upload_queue_size)
@@ -522,7 +515,7 @@ class FileUploadQueue(IOFileUploadQueue):
522
515
  )
523
516
 
524
517
  def add_to_upload_queue(
525
- self, meta_or_apply: FileMetadataOrCogniteExtractorFile, file_name: Union[str, PathLike]
518
+ self, file_meta: FileMetadataOrCogniteExtractorFile, file_name: Union[str, PathLike]
526
519
  ) -> None:
527
520
  """
528
521
  Add file to upload queue. The queue will be uploaded if the queue size is larger than the threshold
@@ -537,7 +530,7 @@ class FileUploadQueue(IOFileUploadQueue):
537
530
  def load_file_from_path() -> BinaryIO:
538
531
  return open(file_name, "rb")
539
532
 
540
- self.add_io_to_upload_queue(meta_or_apply, load_file_from_path)
533
+ self.add_io_to_upload_queue(file_meta, load_file_from_path)
541
534
 
542
535
 
543
536
  class BytesUploadQueue(IOFileUploadQueue):
@@ -574,7 +567,7 @@ class BytesUploadQueue(IOFileUploadQueue):
574
567
  cancellation_token,
575
568
  )
576
569
 
577
- def add_to_upload_queue(self, content: bytes, meta_or_apply: FileMetadataOrCogniteExtractorFile) -> None:
570
+ def add_to_upload_queue(self, content: bytes, file_meta: FileMetadataOrCogniteExtractorFile) -> None:
578
571
  """
579
572
  Add object to upload queue. The queue will be uploaded if the queue size is larger than the threshold
580
573
  specified in the __init__.
@@ -586,4 +579,4 @@ class BytesUploadQueue(IOFileUploadQueue):
586
579
  def get_byte_io() -> BinaryIO:
587
580
  return BytesIO(content)
588
581
 
589
- self.add_io_to_upload_queue(meta_or_apply, get_byte_io)
582
+ self.add_io_to_upload_queue(file_meta, get_byte_io)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "cognite-extractor-utils"
3
- version = "7.4.2"
3
+ version = "7.4.3"
4
4
  description = "Utilities for easier development of extractors for CDF"
5
5
  authors = ["Mathias Lohne <mathias.lohne@cognite.com>"]
6
6
  license = "Apache-2.0"