labelimgplusplus 2.3.2__tar.gz → 2.3.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.
Files changed (66) hide show
  1. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/HISTORY.rst +60 -0
  2. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/PKG-INFO +4 -5
  3. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/README.rst +1 -1
  4. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/labelImgPlusPlus.py +205 -629
  5. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/PKG-INFO +4 -5
  6. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/SOURCES.txt +7 -0
  7. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/core/commands.py +7 -3
  8. labelimgplusplus-2.3.3/libs/core/settings.py +119 -0
  9. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/core/shape.py +2 -2
  10. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/core/shortcut_config.py +21 -6
  11. labelimgplusplus-2.3.3/libs/data/predefined_classes.txt +15 -0
  12. labelimgplusplus-2.3.3/libs/formats/annotation_loader.py +87 -0
  13. labelimgplusplus-2.3.3/libs/formats/annotation_probe.py +197 -0
  14. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/formats/coco_io.py +22 -12
  15. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/formats/create_ml_io.py +18 -5
  16. labelimgplusplus-2.3.3/libs/formats/format_metadata.py +80 -0
  17. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/formats/labelFile.py +9 -8
  18. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/formats/pascal_voc_io.py +16 -7
  19. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/formats/yolo_seg_io.py +20 -8
  20. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/resources.py +43 -43
  21. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/tools/dataset_splitter.py +83 -27
  22. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/utils/stringBundle.py +3 -2
  23. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/utils/styles.py +3 -1
  24. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/utils/utils.py +3 -3
  25. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/canvas.py +104 -18
  26. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/galleryWidget.py +5 -3
  27. labelimgplusplus-2.3.3/libs/widgets/gallery_status_controller.py +91 -0
  28. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/keypointPanel.py +18 -8
  29. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/shortcutsDialog.py +23 -10
  30. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/splitDialog.py +11 -1
  31. labelimgplusplus-2.3.3/libs/widgets/stats_controller.py +89 -0
  32. labelimgplusplus-2.3.3/libs/widgets/view_scaling.py +39 -0
  33. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/pyproject.toml +3 -4
  34. labelimgplusplus-2.3.2/libs/core/settings.py +0 -50
  35. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/CONTRIBUTING.rst +0 -0
  36. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/LICENSE +0 -0
  37. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/MANIFEST.in +0 -0
  38. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/data/predefined_classes.txt +0 -0
  39. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/dependency_links.txt +0 -0
  40. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/entry_points.txt +0 -0
  41. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/requires.txt +0 -0
  42. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/top_level.txt +0 -0
  43. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/__init__.py +0 -0
  44. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/core/__init__.py +0 -0
  45. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/core/keypoint_config.py +0 -0
  46. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/formats/__init__.py +0 -0
  47. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/formats/yolo_io.py +0 -0
  48. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/tools/__init__.py +0 -0
  49. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/tools/label_checker.py +0 -0
  50. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/utils/__init__.py +0 -0
  51. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/utils/constants.py +0 -0
  52. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/utils/hashableQListWidgetItem.py +0 -0
  53. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/utils/ustr.py +0 -0
  54. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/__init__.py +0 -0
  55. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/batchVerifyDialog.py +0 -0
  56. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/colorDialog.py +0 -0
  57. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/combobox.py +0 -0
  58. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/default_label_combobox.py +0 -0
  59. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/labelCheckerDialog.py +0 -0
  60. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/labelDialog.py +0 -0
  61. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/lightWidget.py +0 -0
  62. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/statsWidget.py +0 -0
  63. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/toolBar.py +0 -0
  64. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/libs/widgets/zoomWidget.py +0 -0
  65. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/resources.qrc +0 -0
  66. {labelimgplusplus-2.3.2 → labelimgplusplus-2.3.3}/setup.cfg +0 -0
@@ -1,6 +1,66 @@
1
1
  History
2
2
  =======
3
3
 
4
+ 2.3.3 (2026-06-09)
5
+ ------------------
6
+
7
+ Security, correctness, and reliability release. Hardens settings storage and
8
+ annotation parsing against untrusted input, closes several undo/redo gaps, and
9
+ decomposes the monolithic main window into focused, unit-tested modules. No new
10
+ features and no breaking changes.
11
+
12
+ Security
13
+ ~~~~~~~~
14
+
15
+ * Store user settings as JSON instead of a Python pickle, removing an
16
+ arbitrary-code-execution vector (the old ``~/.labelImgSettings.pkl`` is no
17
+ longer read; settings start fresh on upgrade)
18
+ * Harden the PASCAL VOC XML reader against entity-expansion (billion-laughs)
19
+ and external-entity / network (XXE) attacks
20
+
21
+ Bug fixes
22
+ ~~~~~~~~~
23
+
24
+ * Make whole-shape moves, rectangle resizes, arrow-key nudges, the
25
+ context-menu "Move here", and in-mode keypoint Ctrl-Z all undoable — these
26
+ mutations previously bypassed the undo stack (#68)
27
+ * Defer the annotation-format switch until the reader succeeds for the YOLO and
28
+ PASCAL VOC loaders, so a malformed file no longer flips the saved format;
29
+ PASCAL VOC now reports parse errors gracefully instead of crashing (#69)
30
+ * Stop PASCAL VOC bounding-box coordinate data loss on save (round rather than
31
+ truncate), and round polygon coordinates likewise
32
+ * Harden the COCO, YOLO-seg, and CreateML readers against malformed input
33
+ * Report a clear error instead of crashing when an annotation file is opened
34
+ as an image
35
+ * Restore label-list ordering on delete and refresh the label combo on edit so
36
+ undo/redo stays consistent
37
+ * Surface batch-verify failures instead of silently swallowing them
38
+ * Validate imported shortcut configurations instead of crashing on bad input
39
+ * Deep-copy points in ``Shape.copy()`` and preserve a ``None`` label
40
+ * Correct the label-fix status message and make "Reset All" relaunch through
41
+ the Python interpreter so installed entry points restart correctly
42
+ * Theme the gallery regardless of the thumbnail-size slider, and source the
43
+ keypoint-panel and shortcuts-dialog colors from the active palette
44
+ * Zoom-scale the keypoint hit-test and cache the canvas overlay composite
45
+
46
+ Packaging
47
+ ~~~~~~~~~
48
+
49
+ * Ship the default class list inside the installed wheel
50
+ * Require Python >= 3.8 and drop dead Py2 / Qt4 shims
51
+
52
+ Internal
53
+ ~~~~~~~~
54
+
55
+ * Decompose the ~3,700-line ``MainWindow``: extract annotation loading,
56
+ fit-to-window scaling, the statistics controller, the gallery
57
+ status-refresh controller, and the format-metadata registry into focused,
58
+ unit-tested modules
59
+ * Unify annotation status / label probing across the gallery and stats views
60
+ * Run the CI test matrix on the ``dev`` branch and cache pip
61
+ * Add a real mouse-event polygon insert/drag/undo integration test (#70);
62
+ the full suite now runs 592 tests (up from 471)
63
+
4
64
  2.3.2 (2026-05-20)
5
65
  ------------------
6
66
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: labelimgplusplus
3
- Version: 2.3.2
3
+ Version: 2.3.3
4
4
  Summary: labelImg++ is an enhanced graphical image annotation tool with Gallery Mode for browsing and labeling images
5
5
  Author-email: Abhik Sarkar <abhiksark@gmail.com>
6
6
  License: Copyright (c) <2015-Present> Tzutalin
@@ -21,15 +21,14 @@ Classifier: Intended Audience :: Developers
21
21
  Classifier: Intended Audience :: Science/Research
22
22
  Classifier: Natural Language :: English
23
23
  Classifier: Programming Language :: Python :: 3
24
- Classifier: Programming Language :: Python :: 3.6
25
- Classifier: Programming Language :: Python :: 3.7
26
24
  Classifier: Programming Language :: Python :: 3.8
27
25
  Classifier: Programming Language :: Python :: 3.9
28
26
  Classifier: Programming Language :: Python :: 3.10
29
27
  Classifier: Programming Language :: Python :: 3.11
28
+ Classifier: Programming Language :: Python :: 3.12
30
29
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
31
30
  Classifier: Topic :: Scientific/Engineering :: Image Recognition
32
- Requires-Python: >=3.6
31
+ Requires-Python: >=3.8
33
32
  Description-Content-Type: text/x-rst
34
33
  License-File: LICENSE
35
34
  Requires-Dist: pyqt5
@@ -276,7 +275,7 @@ If you encounter issues, reset the settings:
276
275
 
277
276
  .. code:: shell
278
277
 
279
- rm ~/.labelImgSettings.pkl
278
+ rm ~/.labelImgSettings.json
280
279
 
281
280
  Or use **Menu > File > Reset All**
282
281
 
@@ -239,7 +239,7 @@ If you encounter issues, reset the settings:
239
239
 
240
240
  .. code:: shell
241
241
 
242
- rm ~/.labelImgSettings.pkl
242
+ rm ~/.labelImgSettings.json
243
243
 
244
244
  Or use **Menu > File > Reset All**
245
245