euler-eval 2.1.0__tar.gz → 2.2.0__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 (52) hide show
  1. {euler_eval-2.1.0 → euler_eval-2.2.0}/PKG-INFO +1 -1
  2. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/evaluate.py +51 -0
  3. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/PKG-INFO +1 -1
  4. {euler_eval-2.1.0 → euler_eval-2.2.0}/pyproject.toml +1 -1
  5. {euler_eval-2.1.0 → euler_eval-2.2.0}/README.md +0 -0
  6. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/__init__.py +0 -0
  7. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/cli.py +0 -0
  8. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/data.py +0 -0
  9. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/__init__.py +0 -0
  10. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/absrel.py +0 -0
  11. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/daniel_error.py +0 -0
  12. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/depth_binned_error.py +0 -0
  13. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/depth_edge_f1.py +0 -0
  14. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/depth_standard.py +0 -0
  15. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/fid_kid.py +0 -0
  16. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/gpu_depth_batch.py +0 -0
  17. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/gpu_image_batch.py +0 -0
  18. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/high_freq_energy.py +0 -0
  19. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/lpips_metric.py +0 -0
  20. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/normal_consistency.py +0 -0
  21. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/psnr.py +0 -0
  22. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rgb_edge_f1.py +0 -0
  23. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rgb_lpips.py +0 -0
  24. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rgb_psnr_ssim.py +0 -0
  25. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rho_a.py +0 -0
  26. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/rmse.py +0 -0
  27. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/scale_invariant_log.py +0 -0
  28. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/ssim.py +0 -0
  29. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/tail_errors.py +0 -0
  30. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/metrics/utils.py +0 -0
  31. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/sanity_checker.py +0 -0
  32. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval/utils/hierarchy_parser.py +0 -0
  33. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/SOURCES.txt +0 -0
  34. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/dependency_links.txt +0 -0
  35. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/entry_points.txt +0 -0
  36. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/requires.txt +0 -0
  37. {euler_eval-2.1.0 → euler_eval-2.2.0}/euler_eval.egg-info/top_level.txt +0 -0
  38. {euler_eval-2.1.0 → euler_eval-2.2.0}/init_cache.py +0 -0
  39. {euler_eval-2.1.0 → euler_eval-2.2.0}/setup.cfg +0 -0
  40. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_alignment.py +0 -0
  41. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_cli_device.py +0 -0
  42. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_config.py +0 -0
  43. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_data.py +0 -0
  44. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_depth_alignment_output.py +0 -0
  45. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_depth_standard.py +0 -0
  46. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_evaluate_helpers.py +0 -0
  47. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_init_cache.py +0 -0
  48. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_integration.py +0 -0
  49. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_meta_output.py +0 -0
  50. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_rgb_fid_output.py +0 -0
  51. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_rho_a.py +0 -0
  52. {euler_eval-2.1.0 → euler_eval-2.2.0}/tests/test_save_results.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: euler-eval
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Depth map evaluation toolkit with comprehensive metrics
5
5
  Author: Depth Eval Contributors
6
6
  License: MIT
@@ -310,6 +310,55 @@ def _identity_collate(batch):
310
310
  return batch[0]
311
311
 
312
312
 
313
+ _sharing_strategy_set = False
314
+ _fd_limit_raised = False
315
+
316
+
317
+ def _ensure_file_system_sharing() -> None:
318
+ """Switch torch multiprocessing to the ``file_system`` sharing strategy.
319
+
320
+ The default ``file_descriptor`` strategy hands tensor storage between
321
+ workers and the main process via file descriptors; long DataLoader
322
+ runs accumulate FDs and eventually trip ``EMFILE`` ("Too many open
323
+ files") mid-iteration. ``file_system`` uses ``/dev/shm`` file-backed
324
+ storage instead, sidestepping the FD cap. Idempotent.
325
+ """
326
+ global _sharing_strategy_set
327
+ if _sharing_strategy_set:
328
+ return
329
+ try:
330
+ import torch.multiprocessing as torch_mp
331
+
332
+ torch_mp.set_sharing_strategy("file_system")
333
+ except (RuntimeError, AttributeError, ValueError):
334
+ pass
335
+ _sharing_strategy_set = True
336
+
337
+
338
+ def _raise_fd_soft_limit() -> None:
339
+ """Raise ``RLIMIT_NOFILE`` soft cap to the hard cap.
340
+
341
+ Belt-and-suspenders against ``EMFILE`` for environments where the
342
+ ``file_system`` sharing strategy is unavailable (e.g. ``/dev/shm``
343
+ locked down) or still insufficient under long runs. The hard cap is
344
+ typically much higher than the default soft cap (e.g. 65536 vs 1024)
345
+ and raising only within that envelope needs no privileges. Idempotent
346
+ and best-effort: platforms without ``resource`` silently no-op.
347
+ """
348
+ global _fd_limit_raised
349
+ if _fd_limit_raised:
350
+ return
351
+ try:
352
+ import resource
353
+
354
+ soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
355
+ if soft < hard:
356
+ resource.setrlimit(resource.RLIMIT_NOFILE, (hard, hard))
357
+ except (ImportError, ValueError, OSError):
358
+ pass
359
+ _fd_limit_raised = True
360
+
361
+
313
362
  def _prefetched_iter(
314
363
  dataset,
315
364
  num_workers: int,
@@ -332,6 +381,8 @@ def _prefetched_iter(
332
381
  yield i, dataset[i]
333
382
  return
334
383
 
384
+ _raise_fd_soft_limit()
385
+ _ensure_file_system_sharing()
335
386
  indices = list(range(skip, total))
336
387
  subset = Subset(dataset, indices)
337
388
  loader = DataLoader(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: euler-eval
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Depth map evaluation toolkit with comprehensive metrics
5
5
  Author: Depth Eval Contributors
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "euler-eval"
7
- version = "2.1.0"
7
+ version = "2.2.0"
8
8
  description = "Depth map evaluation toolkit with comprehensive metrics"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
File without changes
File without changes
File without changes
File without changes