labelimgplusplus 2.3.1__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.
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/HISTORY.rst +84 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/PKG-INFO +4 -5
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/README.rst +1 -1
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/labelImgPlusPlus.py +214 -631
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/PKG-INFO +4 -5
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/SOURCES.txt +7 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/__init__.py +2 -2
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/core/commands.py +7 -3
- labelimgplusplus-2.3.3/libs/core/settings.py +119 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/core/shape.py +2 -2
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/core/shortcut_config.py +21 -6
- labelimgplusplus-2.3.3/libs/data/predefined_classes.txt +15 -0
- labelimgplusplus-2.3.3/libs/formats/annotation_loader.py +87 -0
- labelimgplusplus-2.3.3/libs/formats/annotation_probe.py +197 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/formats/coco_io.py +22 -12
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/formats/create_ml_io.py +21 -9
- labelimgplusplus-2.3.3/libs/formats/format_metadata.py +80 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/formats/labelFile.py +9 -8
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/formats/pascal_voc_io.py +16 -7
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/formats/yolo_io.py +21 -3
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/formats/yolo_seg_io.py +20 -8
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/resources.py +43 -43
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/tools/dataset_splitter.py +83 -27
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/tools/label_checker.py +0 -2
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/utils/stringBundle.py +3 -2
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/utils/styles.py +3 -1
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/utils/utils.py +3 -3
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/canvas.py +104 -18
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/galleryWidget.py +5 -3
- labelimgplusplus-2.3.3/libs/widgets/gallery_status_controller.py +91 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/keypointPanel.py +18 -8
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/shortcutsDialog.py +23 -10
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/splitDialog.py +11 -1
- labelimgplusplus-2.3.3/libs/widgets/stats_controller.py +89 -0
- labelimgplusplus-2.3.3/libs/widgets/view_scaling.py +39 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/pyproject.toml +3 -4
- labelimgplusplus-2.3.1/libs/core/settings.py +0 -50
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/CONTRIBUTING.rst +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/LICENSE +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/MANIFEST.in +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/data/predefined_classes.txt +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/dependency_links.txt +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/entry_points.txt +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/requires.txt +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/labelimgplusplus.egg-info/top_level.txt +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/core/__init__.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/core/keypoint_config.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/formats/__init__.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/tools/__init__.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/utils/__init__.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/utils/constants.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/utils/hashableQListWidgetItem.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/utils/ustr.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/__init__.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/batchVerifyDialog.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/colorDialog.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/combobox.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/default_label_combobox.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/labelCheckerDialog.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/labelDialog.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/lightWidget.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/statsWidget.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/toolBar.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/libs/widgets/zoomWidget.py +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/resources.qrc +0 -0
- {labelimgplusplus-2.3.1 → labelimgplusplus-2.3.3}/setup.cfg +0 -0
|
@@ -1,6 +1,90 @@
|
|
|
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
|
+
|
|
64
|
+
2.3.2 (2026-05-20)
|
|
65
|
+
------------------
|
|
66
|
+
|
|
67
|
+
Patch release hardening the annotation format loaders against malformed
|
|
68
|
+
input. Slightly corrupt or hand-edited label files previously crashed the
|
|
69
|
+
load or silently dropped valid annotations.
|
|
70
|
+
|
|
71
|
+
* Skip individual malformed YOLO lines instead of discarding the whole
|
|
72
|
+
file — a line with non-numeric values no longer raises an error that
|
|
73
|
+
drops every annotation in that file
|
|
74
|
+
* Report corrupt CreateML JSON through an error dialog instead of
|
|
75
|
+
silently loading zero annotations, and defer the format switch until
|
|
76
|
+
the reader succeeds so a bad file no longer flips the saved format
|
|
77
|
+
* Fix the CreateML branch of label extraction, which passed the wrong
|
|
78
|
+
number of constructor arguments and could never return labels
|
|
79
|
+
* Replace a mutable default argument in the YOLO writer that could leak
|
|
80
|
+
class names across files and corrupt class indices in ``classes.txt``
|
|
81
|
+
* Guard ``load_predefined_classes`` against a missing class-file path
|
|
82
|
+
|
|
83
|
+
Internal: tolerate a PyQt5/coverage shutdown segfault in CI, ignore
|
|
84
|
+
coverage and local working-directory artifacts, and add 8 regression
|
|
85
|
+
tests (full suite now 471 passing).
|
|
86
|
+
|
|
87
|
+
|
|
4
88
|
2.3.1 (2026-05-14)
|
|
5
89
|
------------------
|
|
6
90
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: labelimgplusplus
|
|
3
|
-
Version: 2.3.
|
|
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.
|
|
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.
|
|
278
|
+
rm ~/.labelImgSettings.json
|
|
280
279
|
|
|
281
280
|
Or use **Menu > File > Reset All**
|
|
282
281
|
|