histomicsui 1.8.1.dev208__tar.gz → 1.8.1.dev213__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 (86) hide show
  1. {histomicsui-1.8.1.dev208/histomicsui.egg-info → histomicsui-1.8.1.dev213}/PKG-INFO +1 -1
  2. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213/histomicsui.egg-info}/PKG-INFO +1 -1
  3. histomicsui-1.8.1.dev213/histomicsui.egg-info/scm_version.json +8 -0
  4. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/allowedGroupsSpec.js +42 -0
  5. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/annotationSpec.js +6 -4
  6. histomicsui-1.8.1.dev208/histomicsui.egg-info/scm_version.json +0 -8
  7. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/.circleci/config.yml +0 -0
  8. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/.circleci/get_version.py +0 -0
  9. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/.circleci/publish_pypi.sh +0 -0
  10. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/.editorconfig +0 -0
  11. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/.git-blame-ignore-revs +0 -0
  12. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/.gitignore +0 -0
  13. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/.pre-commit-config.yaml +0 -0
  14. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/LICENSE +0 -0
  15. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/MANIFEST.in +0 -0
  16. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/NOTICE +0 -0
  17. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/README.rst +0 -0
  18. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/codecov.yml +0 -0
  19. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/annotation_group_restrictions.rst +0 -0
  20. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/config_options.rst +0 -0
  21. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/controls.rst +0 -0
  22. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/images/cut.gif +0 -0
  23. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/images/difference.gif +0 -0
  24. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/images/intersect.gif +0 -0
  25. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/images/union.gif +0 -0
  26. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/images/xor.gif +0 -0
  27. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/docs/slicer_cli_plugins.rst +0 -0
  28. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/__init__.py +0 -0
  29. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/constants.py +0 -0
  30. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/girder_worker_plugin.py +0 -0
  31. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/handlers.py +0 -0
  32. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/models/__init__.py +0 -0
  33. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/models/aperio.py +0 -0
  34. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/models/case.py +0 -0
  35. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/models/cohort.py +0 -0
  36. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/models/image.py +0 -0
  37. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/models/meta.py +0 -0
  38. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/models/pathology.py +0 -0
  39. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/models/slide.py +0 -0
  40. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/rest/__init__.py +0 -0
  41. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/rest/aperio.py +0 -0
  42. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/rest/hui_resource.py +0 -0
  43. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/rest/image_browse_resource.py +0 -0
  44. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/rest/system.py +0 -0
  45. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui/rest/tcga.py +0 -0
  46. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/SOURCES.txt +0 -0
  47. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/dependency_links.txt +0 -0
  48. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/entry_points.txt +0 -0
  49. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/not-zip-safe +0 -0
  50. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/requires.txt +0 -0
  51. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/scm_file_list.json +0 -0
  52. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/top_level.txt +0 -0
  53. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/pyproject.toml +0 -0
  54. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/requirements-dev.txt +0 -0
  55. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/ruff.toml +0 -0
  56. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/sample_data/Easy1.png +0 -0
  57. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/sample_data/sample_svs_image.TCGA-DU-6399-01A-01-TS1.e8eb65de-d63e-42db-af6f-14fefbbdf7bd.svs +0 -0
  58. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/setup.cfg +0 -0
  59. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/setup.py +0 -0
  60. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/__init__.py +0 -0
  61. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/conftest.py +0 -0
  62. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/datastore.py +0 -0
  63. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/girder_utilities.py +0 -0
  64. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_files/.histomicsui_config.yaml +0 -0
  65. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_files/sample.anot +0 -0
  66. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_files/sample.meta +0 -0
  67. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_files/sample_girder_id.anot +0 -0
  68. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_files/test_analysis_detection.xml +0 -0
  69. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_files/test_analysis_features.xml +0 -0
  70. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_handlers.py +0 -0
  71. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_hui_rest.py +0 -0
  72. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_image_browse_endpoints.py +0 -0
  73. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_load.py +0 -0
  74. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/test_tcga.py +0 -0
  75. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/.eslintrc +0 -0
  76. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/analysisSpec.js +0 -0
  77. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/girderUISpec.js +0 -0
  78. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/huiSpec.js +0 -0
  79. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/huiTest.js +0 -0
  80. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/itemSpec.js +0 -0
  81. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/metadataPanelSpec.js +0 -0
  82. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/metadataPlotSpec.js +0 -0
  83. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/overviewPanelSpec.js +0 -0
  84. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/panelLayoutSpec.js +0 -0
  85. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tests/web_client_specs/pixelmapCategorySpec.js +0 -0
  86. {histomicsui-1.8.1.dev208 → histomicsui-1.8.1.dev213}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: histomicsui
3
- Version: 1.8.1.dev208
3
+ Version: 1.8.1.dev213
4
4
  Summary: Organize, visualize, and analyze histology images.
5
5
  Home-page: https://github.com/DigitalSlideArchive/histomicsui
6
6
  Author: Kitware, Inc.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: histomicsui
3
- Version: 1.8.1.dev208
3
+ Version: 1.8.1.dev213
4
4
  Summary: Organize, visualize, and analyze histology images.
5
5
  Home-page: https://github.com/DigitalSlideArchive/histomicsui
6
6
  Author: Kitware, Inc.
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.8.0",
3
+ "distance": 213,
4
+ "node": "gbb53f6af702b35d917fbc4519b16d2359fbc56aa",
5
+ "dirty": false,
6
+ "branch": "girder-5",
7
+ "node_date": "2026-11-03"
8
+ }
@@ -279,6 +279,48 @@ girderTest.promise.done(function () {
279
279
  });
280
280
  });
281
281
 
282
+ describe('context menu offers the intersection of restrictions across a multi-selection', function () {
283
+ var first = {};
284
+ var second = {};
285
+ var unrestricted = {};
286
+
287
+ it('creates annotations with overlapping restrictions', function () {
288
+ createAnnotation('restricted annotation 1 for intersection', {
289
+ allowed_groups: ['groupM', 'groupN']
290
+ }, [rectangleElement(80, 80)], first);
291
+ });
292
+
293
+ it('creates the second restricted annotation', function () {
294
+ createAnnotation('restricted annotation 2 for intersection', {
295
+ allowed_groups: ['groupN', 'groupO']
296
+ }, [rectangleElement(90, 90)], second);
297
+ });
298
+
299
+ it('creates an unrestricted annotation', function () {
300
+ createAnnotation('unrestricted annotation for intersection', {}, [rectangleElement(100, 100)], unrestricted);
301
+ });
302
+
303
+ it('offers only groups allowed by every selected element\'s annotation', function () {
304
+ var bodyView = huiTest.app.bodyView;
305
+ bodyView._resetSelection();
306
+ bodyView._selectElement(first.annotation.elements().first());
307
+ bodyView._selectElement(second.annotation.elements().first());
308
+ expect(bodyView.contextMenu._getAnnotationGroups()).toEqual(['groupN']);
309
+
310
+ bodyView._selectElement(unrestricted.annotation.elements().first());
311
+ expect(bodyView.contextMenu._getAnnotationGroups()).toEqual(['groupN']);
312
+ });
313
+
314
+ it('offers no groups when the restrictions are disjoint', function () {
315
+ var bodyView = huiTest.app.bodyView;
316
+ first.annotation.get('annotation').attributes = {allowed_groups: ['groupM']};
317
+ bodyView._resetSelection();
318
+ bodyView._selectElement(first.annotation.elements().first());
319
+ bodyView._selectElement(second.annotation.elements().first());
320
+ expect(bodyView.contextMenu._getAnnotationGroups()).toEqual([]);
321
+ });
322
+ });
323
+
282
324
  describe('#3/#5: live metadata updates without reselecting or reloading', function () {
283
325
  var result = {};
284
326
  var drawWidget;
@@ -662,10 +662,12 @@ girderTest.promise.done(function () {
662
662
  runs(function () {
663
663
  drawWidget = huiTest.app.bodyView.drawWidget;
664
664
  drawWidget.collection.add([
665
- {id: 'sort-test-charlie', type: 'point', label: {value: 'Charlie'}, group: 'rareGroup'},
666
- {id: 'sort-test-alpha', type: 'point', label: {value: 'Alpha'}, group: 'commonGroup'},
667
- {id: 'sort-test-bravo', type: 'rectangle', label: {value: 'Bravo'}, group: 'commonGroup'},
668
- {id: 'sort-test-delta', type: 'polyline', closed: false, label: {value: 'Delta'}, group: 'commonGroup'}
665
+ // give each element valid geometry; the viewer may redraw the
666
+ // annotation and fails on shapes without coordinates
667
+ {id: 'sort-test-charlie', type: 'point', center: [100, 100, 0], label: {value: 'Charlie'}, group: 'rareGroup'},
668
+ {id: 'sort-test-alpha', type: 'point', center: [120, 100, 0], label: {value: 'Alpha'}, group: 'commonGroup'},
669
+ {id: 'sort-test-bravo', type: 'rectangle', center: [140, 100, 0], width: 10, height: 10, rotation: 0, label: {value: 'Bravo'}, group: 'commonGroup'},
670
+ {id: 'sort-test-delta', type: 'polyline', points: [[160, 100, 0], [170, 110, 0]], closed: false, label: {value: 'Delta'}, group: 'commonGroup'}
669
671
  ]);
670
672
  });
671
673
  waitsFor(function () {
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "1.8.0",
3
- "distance": 208,
4
- "node": "gee5f4c0da27b6692ba33edd716ec8b96517c16d3",
5
- "dirty": false,
6
- "branch": "girder-5",
7
- "node_date": "2026-10-20"
8
- }