histomicsui 1.8.1.dev200__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 (87) hide show
  1. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/.circleci/config.yml +10 -0
  2. {histomicsui-1.8.1.dev200/histomicsui.egg-info → histomicsui-1.8.1.dev213}/PKG-INFO +6 -5
  3. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213/histomicsui.egg-info}/PKG-INFO +6 -5
  4. histomicsui-1.8.1.dev213/histomicsui.egg-info/requires.txt +9 -0
  5. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/scm_file_list.json +1 -0
  6. histomicsui-1.8.1.dev213/histomicsui.egg-info/scm_version.json +8 -0
  7. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/setup.py +5 -4
  8. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/allowedGroupsSpec.js +42 -0
  9. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/annotationSpec.js +26 -4
  10. histomicsui-1.8.1.dev200/histomicsui.egg-info/requires.txt +0 -8
  11. histomicsui-1.8.1.dev200/histomicsui.egg-info/scm_version.json +0 -8
  12. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/.circleci/get_version.py +0 -0
  13. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/.circleci/publish_pypi.sh +0 -0
  14. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/.editorconfig +0 -0
  15. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/.git-blame-ignore-revs +0 -0
  16. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/.gitignore +0 -0
  17. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/.pre-commit-config.yaml +0 -0
  18. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/LICENSE +0 -0
  19. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/MANIFEST.in +0 -0
  20. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/NOTICE +0 -0
  21. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/README.rst +0 -0
  22. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/codecov.yml +0 -0
  23. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/annotation_group_restrictions.rst +0 -0
  24. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/config_options.rst +0 -0
  25. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/controls.rst +0 -0
  26. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/images/cut.gif +0 -0
  27. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/images/difference.gif +0 -0
  28. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/images/intersect.gif +0 -0
  29. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/images/union.gif +0 -0
  30. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/images/xor.gif +0 -0
  31. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/docs/slicer_cli_plugins.rst +0 -0
  32. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/__init__.py +0 -0
  33. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/constants.py +0 -0
  34. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/girder_worker_plugin.py +0 -0
  35. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/handlers.py +0 -0
  36. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/models/__init__.py +0 -0
  37. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/models/aperio.py +0 -0
  38. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/models/case.py +0 -0
  39. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/models/cohort.py +0 -0
  40. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/models/image.py +0 -0
  41. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/models/meta.py +0 -0
  42. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/models/pathology.py +0 -0
  43. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/models/slide.py +0 -0
  44. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/rest/__init__.py +0 -0
  45. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/rest/aperio.py +0 -0
  46. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/rest/hui_resource.py +0 -0
  47. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/rest/image_browse_resource.py +0 -0
  48. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/rest/system.py +0 -0
  49. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui/rest/tcga.py +0 -0
  50. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/SOURCES.txt +0 -0
  51. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/dependency_links.txt +0 -0
  52. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/entry_points.txt +0 -0
  53. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/not-zip-safe +0 -0
  54. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/histomicsui.egg-info/top_level.txt +0 -0
  55. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/pyproject.toml +0 -0
  56. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/requirements-dev.txt +0 -0
  57. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/ruff.toml +0 -0
  58. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/sample_data/Easy1.png +0 -0
  59. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/sample_data/sample_svs_image.TCGA-DU-6399-01A-01-TS1.e8eb65de-d63e-42db-af6f-14fefbbdf7bd.svs +0 -0
  60. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/setup.cfg +0 -0
  61. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/__init__.py +0 -0
  62. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/conftest.py +0 -0
  63. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/datastore.py +0 -0
  64. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/girder_utilities.py +0 -0
  65. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_files/.histomicsui_config.yaml +0 -0
  66. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_files/sample.anot +0 -0
  67. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_files/sample.meta +0 -0
  68. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_files/sample_girder_id.anot +0 -0
  69. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_files/test_analysis_detection.xml +0 -0
  70. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_files/test_analysis_features.xml +0 -0
  71. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_handlers.py +0 -0
  72. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_hui_rest.py +0 -0
  73. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_image_browse_endpoints.py +0 -0
  74. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_load.py +0 -0
  75. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/test_tcga.py +0 -0
  76. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/.eslintrc +0 -0
  77. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/analysisSpec.js +0 -0
  78. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/girderUISpec.js +0 -0
  79. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/huiSpec.js +0 -0
  80. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/huiTest.js +0 -0
  81. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/itemSpec.js +0 -0
  82. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/metadataPanelSpec.js +0 -0
  83. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/metadataPlotSpec.js +0 -0
  84. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/overviewPanelSpec.js +0 -0
  85. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/panelLayoutSpec.js +0 -0
  86. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tests/web_client_specs/pixelmapCategorySpec.js +0 -0
  87. {histomicsui-1.8.1.dev200 → histomicsui-1.8.1.dev213}/tox.ini +0 -0
@@ -8,6 +8,7 @@ executors:
8
8
  - image: mongo:4.4
9
9
  command: bash -c "mkdir /dev/shm/mongo && mongod --nojournal --dbpath=/dev/shm/mongo --noauth --bind_ip_all"
10
10
  - image: rabbitmq
11
+ - image: redis
11
12
  resource_class: large
12
13
  commands:
13
14
  use_nvm:
@@ -134,6 +135,7 @@ jobs:
134
135
  CI: "true"
135
136
  HEADLESS: "true"
136
137
  GIRDER_CLIENT_TESTING_MONGO_URI: mongodb://localhost:27017
138
+ GIRDER_NOTIFICATION_REDIS_URL: redis://localhost:6379
137
139
  steps:
138
140
  - checkout
139
141
  - use_nvm
@@ -141,6 +143,14 @@ jobs:
141
143
  - install_playwright
142
144
  - tox:
143
145
  env: webtest
146
+ - store_artifacts:
147
+ path: histomicsui/web_client/test-results
148
+ destination: playwright-test-results
149
+ when: always
150
+ - store_artifacts:
151
+ path: histomicsui/web_client/playwright-report
152
+ destination: playwright-report
153
+ when: always
144
154
  noanalysis:
145
155
  executor: toxandnode
146
156
  steps:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: histomicsui
3
- Version: 1.8.1.dev200
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.
@@ -22,10 +22,11 @@ License-File: LICENSE
22
22
  License-File: NOTICE
23
23
  Requires-Dist: girder>=5
24
24
  Requires-Dist: girder-jobs>=5
25
- Requires-Dist: girder-large-image==1.34.2a166
26
- Requires-Dist: girder-large-image-annotation==1.34.2a166
27
- Requires-Dist: large-image-tasks==1.34.2a166
28
- Requires-Dist: large-image-converter==1.34.2a166
25
+ Requires-Dist: girder-slicer-cli-web>=5
26
+ Requires-Dist: girder-large-image==1.35.5a199
27
+ Requires-Dist: girder-large-image-annotation==1.35.5a199
28
+ Requires-Dist: large-image-tasks==1.35.5a199
29
+ Requires-Dist: large-image-converter==1.35.5a199
29
30
  Provides-Extra: analysis
30
31
  Dynamic: author
31
32
  Dynamic: author-email
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: histomicsui
3
- Version: 1.8.1.dev200
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.
@@ -22,10 +22,11 @@ License-File: LICENSE
22
22
  License-File: NOTICE
23
23
  Requires-Dist: girder>=5
24
24
  Requires-Dist: girder-jobs>=5
25
- Requires-Dist: girder-large-image==1.34.2a166
26
- Requires-Dist: girder-large-image-annotation==1.34.2a166
27
- Requires-Dist: large-image-tasks==1.34.2a166
28
- Requires-Dist: large-image-converter==1.34.2a166
25
+ Requires-Dist: girder-slicer-cli-web>=5
26
+ Requires-Dist: girder-large-image==1.35.5a199
27
+ Requires-Dist: girder-large-image-annotation==1.35.5a199
28
+ Requires-Dist: large-image-tasks==1.35.5a199
29
+ Requires-Dist: large-image-converter==1.35.5a199
29
30
  Provides-Extra: analysis
30
31
  Dynamic: author
31
32
  Dynamic: author-email
@@ -0,0 +1,9 @@
1
+ girder>=5
2
+ girder-jobs>=5
3
+ girder-slicer-cli-web>=5
4
+ girder-large-image==1.35.5a199
5
+ girder-large-image-annotation==1.35.5a199
6
+ large-image-tasks==1.35.5a199
7
+ large-image-converter==1.35.5a199
8
+
9
+ [analysis]
@@ -130,6 +130,7 @@
130
130
  "histomicsui/web_client/templates/popover/pixelmapContextMenu.pug",
131
131
  "histomicsui/web_client/tests/server.ts",
132
132
  "histomicsui/web_client/tests/spec/viewer.spec.ts",
133
+ "histomicsui/web_client/tests/spec/zoomWidget.spec.ts",
133
134
  "histomicsui/web_client/tests/util.ts",
134
135
  "histomicsui/web_client/tsconfig.json",
135
136
  "histomicsui/web_client/utilities/allowedGroups.js",
@@ -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
+ }
@@ -44,10 +44,11 @@ setup(
44
44
  install_requires=[
45
45
  'girder>=5',
46
46
  'girder-jobs>=5',
47
- 'girder-large-image==1.34.2a166',
48
- 'girder-large-image-annotation==1.34.2a166',
49
- 'large-image-tasks==1.34.2a166',
50
- 'large-image-converter==1.34.2a166',
47
+ 'girder-slicer-cli-web>=5',
48
+ 'girder-large-image==1.35.5a199',
49
+ 'girder-large-image-annotation==1.35.5a199',
50
+ 'large-image-tasks==1.35.5a199',
51
+ 'large-image-converter==1.35.5a199',
51
52
  ],
52
53
  extras_require={
53
54
  'analysis': [], # kept for backwards compatibility
@@ -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;
@@ -173,6 +173,26 @@ girderTest.promise.done(function () {
173
173
  });
174
174
  girderTest.waitForLoad();
175
175
  });
176
+
177
+ it('respects the showDownload setting', function () {
178
+ var originalShowDownlaod;
179
+
180
+ runs(function () {
181
+ originalShowDownlaod = huiTest.app.showDownload;
182
+ huiTest.app.showDownload = function () { return false; };
183
+ huiTest.app.bodyView.zoomWidget.render();
184
+ });
185
+
186
+ runs(function () {
187
+ expect($('.h-download-button-container').length).toBe(0);
188
+ });
189
+
190
+ runs(function () {
191
+ huiTest.app.showDownload = originalShowDownlaod;
192
+ huiTest.app.bodyView.zoomWidget.render();
193
+ expect($('.h-download-button-container').length).toBe(1);
194
+ });
195
+ });
176
196
  });
177
197
 
178
198
  describe('Draw panel', function () {
@@ -642,10 +662,12 @@ girderTest.promise.done(function () {
642
662
  runs(function () {
643
663
  drawWidget = huiTest.app.bodyView.drawWidget;
644
664
  drawWidget.collection.add([
645
- {id: 'sort-test-charlie', type: 'point', label: {value: 'Charlie'}, group: 'rareGroup'},
646
- {id: 'sort-test-alpha', type: 'point', label: {value: 'Alpha'}, group: 'commonGroup'},
647
- {id: 'sort-test-bravo', type: 'rectangle', label: {value: 'Bravo'}, group: 'commonGroup'},
648
- {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'}
649
671
  ]);
650
672
  });
651
673
  waitsFor(function () {
@@ -1,8 +0,0 @@
1
- girder>=5
2
- girder-jobs>=5
3
- girder-large-image==1.34.2a166
4
- girder-large-image-annotation==1.34.2a166
5
- large-image-tasks==1.34.2a166
6
- large-image-converter==1.34.2a166
7
-
8
- [analysis]
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "1.8.0",
3
- "distance": 200,
4
- "node": "g9aaac3bc11f1438e192065eb0f6694c3f954586b",
5
- "dirty": false,
6
- "branch": "girder-5",
7
- "node_date": "2026-09-01"
8
- }