girder-large-image-annotation 1.29.3.dev2__tar.gz → 1.29.3.dev4__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 (90) hide show
  1. {girder-large-image-annotation-1.29.3.dev2/girder_large_image_annotation.egg-info → girder-large-image-annotation-1.29.3.dev4}/PKG-INFO +3 -3
  2. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/utils/__init__.py +23 -15
  3. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4/girder_large_image_annotation.egg-info}/PKG-INFO +3 -3
  4. girder-large-image-annotation-1.29.3.dev4/girder_large_image_annotation.egg-info/requires.txt +6 -0
  5. girder-large-image-annotation-1.29.3.dev2/girder_large_image_annotation.egg-info/requires.txt +0 -6
  6. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/LICENSE +0 -0
  7. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/README.rst +0 -0
  8. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/docs/annotations.rst +0 -0
  9. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/__init__.py +0 -0
  10. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/constants.py +0 -0
  11. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/handlers.py +0 -0
  12. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/models/__init__.py +0 -0
  13. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/models/annotation.py +0 -0
  14. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/models/annotationelement.py +0 -0
  15. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/rest/__init__.py +0 -0
  16. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/rest/annotation.py +0 -0
  17. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/convert.js +0 -0
  18. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/convertFeatures.js +0 -0
  19. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/defaults/circle.js +0 -0
  20. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/defaults/ellipse.js +0 -0
  21. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/defaults/index.js +0 -0
  22. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/defaults/point.js +0 -0
  23. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/defaults/polyline.js +0 -0
  24. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/defaults/rectangle.js +0 -0
  25. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/common.js +0 -0
  26. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/convert.js +0 -0
  27. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/array.js +0 -0
  28. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/index.js +0 -0
  29. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/coordinates/point.js +0 -0
  30. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/index.js +0 -0
  31. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/circle.js +0 -0
  32. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/ellipse.js +0 -0
  33. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/index.js +0 -0
  34. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/line.js +0 -0
  35. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/point.js +0 -0
  36. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/polygon.js +0 -0
  37. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geojs/types/rectangle.js +0 -0
  38. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geometry/circle.js +0 -0
  39. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geometry/ellipse.js +0 -0
  40. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geometry/index.js +0 -0
  41. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geometry/point.js +0 -0
  42. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geometry/polyline.js +0 -0
  43. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/geometry/rectangle.js +0 -0
  44. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/index.js +0 -0
  45. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/rotate.js +0 -0
  46. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/annotations/style.js +0 -0
  47. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/collections/AnnotationCollection.js +0 -0
  48. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/collections/ElementCollection.js +0 -0
  49. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/collections/index.js +0 -0
  50. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/index.js +0 -0
  51. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/main.js +0 -0
  52. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/models/AnnotationModel.js +0 -0
  53. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/models/ElementModel.js +0 -0
  54. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/models/index.js +0 -0
  55. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/package.json +0 -0
  56. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/routes.js +0 -0
  57. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/stylesheets/annotationListWidget.styl +0 -0
  58. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/stylesheets/itemList.styl +0 -0
  59. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/templates/annotationListWidget.pug +0 -0
  60. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/templates/imageViewerAnnotationList.pug +0 -0
  61. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/templates/largeImageAnnotationConfig.pug +0 -0
  62. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/annotationListWidget.js +0 -0
  63. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/configView.js +0 -0
  64. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/hierarchyWidget.js +0 -0
  65. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/imageViewerSelectWidget.js +0 -0
  66. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/imageViewerWidget/base.js +0 -0
  67. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/imageViewerWidget/geojs.js +0 -0
  68. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/imageViewerWidget/index.js +0 -0
  69. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/index.js +0 -0
  70. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation/web_client/views/itemList.js +0 -0
  71. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation.egg-info/SOURCES.txt +0 -0
  72. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation.egg-info/dependency_links.txt +0 -0
  73. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation.egg-info/entry_points.txt +0 -0
  74. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation.egg-info/not-zip-safe +0 -0
  75. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/girder_large_image_annotation.egg-info/top_level.txt +0 -0
  76. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/pyproject.toml +0 -0
  77. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/setup.cfg +0 -0
  78. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/setup.py +0 -0
  79. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/__init__.py +0 -0
  80. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/conftest.py +0 -0
  81. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/girder_utilities.py +0 -0
  82. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/test_annotations.py +0 -0
  83. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/test_annotations_rest.py +0 -0
  84. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/test_web_client.py +0 -0
  85. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/web_client_specs/.eslintrc +0 -0
  86. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/web_client_specs/annotationListSpec.js +0 -0
  87. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/web_client_specs/annotationSpec.js +0 -0
  88. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/web_client_specs/geojsAnnotationSpec.js +0 -0
  89. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/web_client_specs/geojsSpec.js +0 -0
  90. {girder-large-image-annotation-1.29.3.dev2 → girder-large-image-annotation-1.29.3.dev4}/test_annotation/web_client_specs/sample_annotation.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: girder-large-image-annotation
3
- Version: 1.29.3.dev2
3
+ Version: 1.29.3.dev4
4
4
  Summary: A Girder plugin to store and display annotations on large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -18,10 +18,10 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Requires-Python: >=3.8
19
19
  License-File: LICENSE
20
20
  Requires-Dist: jsonschema>=2.5.1
21
- Requires-Dist: girder-large-image>=1.29.3.dev2
21
+ Requires-Dist: girder-large-image>=1.29.3.dev4
22
22
  Requires-Dist: orjson
23
23
  Provides-Extra: tasks
24
- Requires-Dist: girder-large-image[tasks]>=1.29.3.dev2; extra == "tasks"
24
+ Requires-Dist: girder-large-image[tasks]>=1.29.3.dev4; extra == "tasks"
25
25
 
26
26
  A Girder plugin to store and display annotations on large, multiresolution images.
27
27
 
@@ -443,7 +443,7 @@ class PlottableItemData:
443
443
  if hashkey in self._columnKeyCache:
444
444
  return self._columnKeyCache[hashkey]
445
445
  fullkey = f'{root}.{key}.{source}'.lower()
446
- title = f'{root} {key}'
446
+ title = f'{root} {key}' if root is not None else f'{key}'
447
447
  keymap = {
448
448
  r'(?i)(item|image)_(id|name)$': {'key': '_0_item.name', 'title': 'Item Name'},
449
449
  r'(?i)(low|min)(_|)x': {'key': '_bbox.x0', 'title': 'Bounding Box Low X'},
@@ -459,7 +459,7 @@ class PlottableItemData:
459
459
  self._columnKeyCache[hashkey] = fullkey, title
460
460
  return fullkey, title
461
461
 
462
- def _scanColumnByKey(self, result, key, entry, where=0, auxidx=0, item=None):
462
+ def _scanColumnByKey(self, result, key, entry, where=0, auxidx=0, auxidx2=0, item=None):
463
463
  if result['type'] == 'number':
464
464
  try:
465
465
  [float(record[key]) for record in entry
@@ -481,16 +481,19 @@ class PlottableItemData:
481
481
  result['min'] = min(result['min'], v)
482
482
  result['max'] = max(result['max'], v)
483
483
  if self._datacolumns and result['key'] in self._datacolumns:
484
- self._datacolumns[result['key']][(where, (auxidx, ridx))] = v
484
+ self._datacolumns[result['key']][(where, (auxidx, auxidx2, ridx))] = v
485
485
  if item is not None:
486
- self._datacolumns['_0_item.name'][(where, (auxidx, ridx))] = item['name']
487
- self._datacolumns['_2_item.id'][(where, (auxidx, ridx))] = str(item['_id'])
486
+ self._datacolumns['_0_item.name'][
487
+ (where, (auxidx, auxidx2, ridx))] = item['name']
488
+ self._datacolumns['_2_item.id'][
489
+ (where, (auxidx, auxidx2, ridx))] = str(item['_id'])
488
490
 
489
- def _scanColumn(self, meta, source, columns, auxmeta=None, items=None):
490
- for root, entry in meta.items():
491
+ def _scanColumn(self, meta, source, columns, auxmeta=None, auxidx2=0, items=None):
492
+ for root, entry in (list(meta.items()) + [(None, [meta])]):
491
493
  if not isinstance(entry, list) or not len(entry) or not isinstance(entry[0], dict):
492
494
  continue
493
495
  for key in entry[0]:
496
+ print(key)
494
497
  if not isinstance(entry[0][key], self.allowedTypes):
495
498
  continue
496
499
  fullkey, title = self._columnKey(source, root, key)
@@ -498,16 +501,22 @@ class PlottableItemData:
498
501
  columns, fullkey, title, root, key, source)
499
502
  result = columns[fullkey]
500
503
  self._scanColumnByKey(
501
- result, key, entry, where, 0,
504
+ result, key, entry, where, 0, auxidx2,
502
505
  items[0] if items and len(items) > 0 else None)
503
506
  if auxmeta:
504
507
  for auxidx, aux in enumerate(auxmeta):
505
- if (isinstance(aux.get(root), list) and
508
+ if root is None:
509
+ if isinstance(aux, dict) and key in aux:
510
+ self._scanColumnByKey(
511
+ result, key, [aux], where, auxidx + 1, auxidx2,
512
+ items[auxidx + 1] if items and len(items) > auxidx + 1 else
513
+ None)
514
+ elif (isinstance(aux.get(root), list) and
506
515
  len(aux[root]) and
507
516
  isinstance(aux[root][0], dict) and
508
517
  key in aux[root][0]):
509
518
  self._scanColumnByKey(
510
- result, key, aux[root], where, auxidx + 1,
519
+ result, key, aux[root], where, auxidx + 1, auxidx2,
511
520
  items[auxidx + 1] if items and len(items) > auxidx + 1 else None)
512
521
 
513
522
  @property
@@ -542,11 +551,12 @@ class PlottableItemData:
542
551
  self._scanColumn(self.folder.get('meta', {}), 'folder', columns)
543
552
  self._scanColumn(self.item.get('meta', {}), 'item', columns,
544
553
  [item.get('meta', {}) for item in self.items[1:]],
545
- self.items)
554
+ items=self.items)
546
555
  for anidx, annot in enumerate(self.annotations[0] if self.annotations is not None else []):
547
556
  self._scanColumn(
548
- annot.get('attributes', {}), 'annotation', columns,
549
- [itemannot[anidx].get('attributes', {})
557
+ annot.get('annotation', {}).get('attributes', {}),
558
+ 'annotation', columns, None, anidx,
559
+ [itemannot[anidx].get('annotaiton').get('attributes', {})
550
560
  for itemannot in self.annotations[1:]
551
561
  if itemannot[anidx] is not None])
552
562
  if not anidx:
@@ -569,7 +579,6 @@ class PlottableItemData:
569
579
  columns, '_bbox.y1', 'Bounding Box High Y', 'bbox',
570
580
  'highy', 'annotationelement')
571
581
  # TODO: add annotation elements
572
- # TODO: bbox could be from min/max query
573
582
  # TODO: Add csv
574
583
  for result in columns.values():
575
584
  if len(result['distinct']) <= self.maxDistinct:
@@ -597,7 +606,6 @@ class PlottableItemData:
597
606
  columns = columns.split(',')
598
607
  if not isinstance(requiredColumns, list):
599
608
  requiredColumns = requiredColumns.split(',') if requiredColumns is not None else []
600
- # TODO: Always augment columns with item id, annotation id?
601
609
  self._datacolumns = {c: {} for c in columns}
602
610
  rows = set()
603
611
  # collects data as a side effect
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: girder-large-image-annotation
3
- Version: 1.29.3.dev2
3
+ Version: 1.29.3.dev4
4
4
  Summary: A Girder plugin to store and display annotations on large, multiresolution images.
5
5
  Home-page: https://github.com/girder/large_image
6
6
  Author: Kitware, Inc.
@@ -18,10 +18,10 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Requires-Python: >=3.8
19
19
  License-File: LICENSE
20
20
  Requires-Dist: jsonschema>=2.5.1
21
- Requires-Dist: girder-large-image>=1.29.3.dev2
21
+ Requires-Dist: girder-large-image>=1.29.3.dev4
22
22
  Requires-Dist: orjson
23
23
  Provides-Extra: tasks
24
- Requires-Dist: girder-large-image[tasks]>=1.29.3.dev2; extra == "tasks"
24
+ Requires-Dist: girder-large-image[tasks]>=1.29.3.dev4; extra == "tasks"
25
25
 
26
26
  A Girder plugin to store and display annotations on large, multiresolution images.
27
27
 
@@ -0,0 +1,6 @@
1
+ jsonschema>=2.5.1
2
+ girder-large-image>=1.29.3.dev4
3
+ orjson
4
+
5
+ [tasks]
6
+ girder-large-image[tasks]>=1.29.3.dev4
@@ -1,6 +0,0 @@
1
- jsonschema>=2.5.1
2
- girder-large-image>=1.29.3.dev2
3
- orjson
4
-
5
- [tasks]
6
- girder-large-image[tasks]>=1.29.3.dev2