plexora 0.0.28__tar.gz → 0.0.29__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.
- plexora-0.0.29/LICENSE +377 -0
- plexora-0.0.29/PKG-INFO +241 -0
- plexora-0.0.29/README.md +162 -0
- plexora-0.0.29/plexora/__init__.py +520 -0
- plexora-0.0.29/plexora/agent/bridge_provider.py +460 -0
- plexora-0.0.29/plexora/agent/core/__init__.py +26 -0
- plexora-0.0.29/plexora/agent/core/surface.py +565 -0
- plexora-0.0.29/plexora/agent/core/viewer.py +748 -0
- plexora-0.0.29/plexora/agent/core/volume.py +877 -0
- plexora-0.0.29/plexora/agent/errors.py +147 -0
- plexora-0.0.29/plexora/agent/evidence/collage.py +636 -0
- plexora-0.0.29/plexora/agent/policy.py +345 -0
- plexora-0.0.29/plexora/agent/registry.py +447 -0
- plexora-0.0.29/plexora/agent/tokens.py +169 -0
- plexora-0.0.29/plexora/ai/bench.py +1287 -0
- plexora-0.0.29/plexora/ai/bench_data.py +458 -0
- plexora-0.0.29/plexora/ai/bench_qc.py +809 -0
- plexora-0.0.29/plexora/ai/delegation.py +293 -0
- plexora-0.0.29/plexora/ai/harness/prefix.py +155 -0
- plexora-0.0.29/plexora/ai/knowledge/markers.yaml +553 -0
- plexora-0.0.29/plexora/ai/qc_scenes.py +367 -0
- plexora-0.0.29/plexora/ai/setup.py +486 -0
- plexora-0.0.29/plexora/ai/skill_manifest.yaml +207 -0
- plexora-0.0.29/plexora/ai/skills/analysis-handoff/SKILL.md +108 -0
- plexora-0.0.29/plexora/ai/skills/dataset-triage/SKILL.md +82 -0
- plexora-0.0.29/plexora/ai/skills/gate-image/SKILL.md +91 -0
- plexora-0.0.29/plexora/ai/skills/gate-packets/SKILL.md +62 -0
- plexora-0.0.29/plexora/ai/skills/gate-review/SKILL.md +176 -0
- plexora-0.0.29/plexora/ai/skills/gating/dataset.md +109 -0
- plexora-0.0.29/plexora/ai/skills/gating/decisions.md +85 -0
- plexora-0.0.29/plexora/ai/skills/gating/qc-cells.md +37 -0
- plexora-0.0.29/plexora/ai/skills/gating/setup.md +80 -0
- plexora-0.0.29/plexora/ai/skills/gating/visual-gating.md +113 -0
- plexora-0.0.29/plexora/ai/skills/marker-qc/SKILL.md +67 -0
- plexora-0.0.29/plexora/ai/skills/qc-checks/SKILL.md +203 -0
- plexora-0.0.29/plexora/ai/skills/qc-image/SKILL.md +368 -0
- plexora-0.0.29/plexora/ai/skills/qc-packets/SKILL.md +75 -0
- plexora-0.0.29/plexora/ai/skills/qc-visual-artifacts/SKILL.md +167 -0
- plexora-0.0.29/plexora/ai/skills/review-objects/SKILL.md +82 -0
- plexora-0.0.29/plexora/ai/skills/review-qc/SKILL.md +131 -0
- plexora-0.0.29/plexora/ai/skills/surface-rendering/SKILL.md +113 -0
- plexora-0.0.29/plexora/ai/skills/video-storyboard/SKILL.md +96 -0
- plexora-0.0.29/plexora/ai/skills/visual-inspection/SKILL.md +80 -0
- plexora-0.0.29/plexora/ai/skills/volume-triage/SKILL.md +128 -0
- plexora-0.0.29/plexora/ai/skills.py +508 -0
- plexora-0.0.29/plexora/ai/tasks.yaml +192 -0
- plexora-0.0.29/plexora/api/plugin.py +1022 -0
- plexora-0.0.29/plexora/client/src/css/explorer.css +1451 -0
- plexora-0.0.29/plexora/client/src/css/main.css +10005 -0
- plexora-0.0.29/plexora/client/src/css/quickView.css +1436 -0
- plexora-0.0.29/plexora/client/src/css/settings.css +1538 -0
- plexora-0.0.29/plexora/client/src/css/tokens.css +65 -0
- plexora-0.0.29/plexora/client/src/css/viewer.css +6898 -0
- plexora-0.0.29/plexora/client/src/js/main.js +2481 -0
- plexora-0.0.29/plexora/client/src/js/services/agentBridge.js +2582 -0
- plexora-0.0.29/plexora/client/src/js/services/bookmarks.js +383 -0
- plexora-0.0.29/plexora/client/src/js/services/browsePicker.js +816 -0
- plexora-0.0.29/plexora/client/src/js/services/canvasLayout.js +814 -0
- plexora-0.0.29/plexora/client/src/js/services/connectionModal.js +3192 -0
- plexora-0.0.29/plexora/client/src/js/services/dataLocation.js +964 -0
- plexora-0.0.29/plexora/client/src/js/services/desktopBridge.js +446 -0
- plexora-0.0.29/plexora/client/src/js/services/explorer/explorerCrumbs.js +321 -0
- plexora-0.0.29/plexora/client/src/js/services/explorer/explorerListing.js +918 -0
- plexora-0.0.29/plexora/client/src/js/services/explorer/explorerSidebar.js +312 -0
- plexora-0.0.29/plexora/client/src/js/services/explorer/explorerTypes.js +442 -0
- plexora-0.0.29/plexora/client/src/js/services/explorer/fileExplorer.js +1609 -0
- plexora-0.0.29/plexora/client/src/js/services/explorer/floatingWindow.js +577 -0
- plexora-0.0.29/plexora/client/src/js/services/fileLocation.js +721 -0
- plexora-0.0.29/plexora/client/src/js/services/inspectGeometry.js +427 -0
- plexora-0.0.29/plexora/client/src/js/services/inspectState.js +376 -0
- plexora-0.0.29/plexora/client/src/js/services/maskSurfaces.js +455 -0
- plexora-0.0.29/plexora/client/src/js/services/placePicker.js +252 -0
- plexora-0.0.29/plexora/client/src/js/services/proFeature.js +174 -0
- plexora-0.0.29/plexora/client/src/js/services/remoteGlobe.js +757 -0
- plexora-0.0.29/plexora/client/src/js/services/remoteState.js +720 -0
- plexora-0.0.29/plexora/client/src/js/services/resourceStatus.js +583 -0
- plexora-0.0.29/plexora/client/src/js/services/surfaceLayers.js +717 -0
- plexora-0.0.29/plexora/client/src/js/services/tooltip.js +215 -0
- plexora-0.0.29/plexora/client/src/js/services/viewControls.js +479 -0
- plexora-0.0.29/plexora/client/src/js/services/viewHistory.js +197 -0
- plexora-0.0.29/plexora/client/src/js/services/viewRaster.js +138 -0
- plexora-0.0.29/plexora/client/src/js/services/viewState.js +1121 -0
- plexora-0.0.29/plexora/client/src/js/services/viewerPrefs.js +327 -0
- plexora-0.0.29/plexora/client/src/js/services/viewerScene.js +439 -0
- plexora-0.0.29/plexora/client/src/js/views/agentPanel.js +1977 -0
- plexora-0.0.29/plexora/client/src/js/views/areaTool.js +373 -0
- plexora-0.0.29/plexora/client/src/js/views/backButton.js +111 -0
- plexora-0.0.29/plexora/client/src/js/views/bookmarkTray.js +601 -0
- plexora-0.0.29/plexora/client/src/js/views/channelNamesUpload.js +932 -0
- plexora-0.0.29/plexora/client/src/js/views/datasetNav.js +332 -0
- plexora-0.0.29/plexora/client/src/js/views/depthSettings.js +724 -0
- plexora-0.0.29/plexora/client/src/js/views/depthStrip.js +791 -0
- plexora-0.0.29/plexora/client/src/js/views/depthTools.js +573 -0
- plexora-0.0.29/plexora/client/src/js/views/fileSourceRow.js +484 -0
- plexora-0.0.29/plexora/client/src/js/views/helpMenu.js +247 -0
- plexora-0.0.29/plexora/client/src/js/views/importHelp.js +625 -0
- plexora-0.0.29/plexora/client/src/js/views/importSample.js +3445 -0
- plexora-0.0.29/plexora/client/src/js/views/locators.js +102 -0
- plexora-0.0.29/plexora/client/src/js/views/miniMap.js +1274 -0
- plexora-0.0.29/plexora/client/src/js/views/orientationGizmo.js +224 -0
- plexora-0.0.29/plexora/client/src/js/views/quickViewLanding.js +924 -0
- plexora-0.0.29/plexora/client/src/js/views/sectionPanes.js +1845 -0
- plexora-0.0.29/plexora/client/src/js/views/settingsPage.js +2502 -0
- plexora-0.0.29/plexora/client/src/js/views/surfaceCard.js +344 -0
- plexora-0.0.29/plexora/client/src/js/views/surfaceInspect.js +236 -0
- plexora-0.0.29/plexora/client/src/js/views/surfaceRenderer.js +1334 -0
- plexora-0.0.29/plexora/client/src/js/views/surfaceStudio.js +782 -0
- plexora-0.0.29/plexora/client/src/js/views/toolLoader.js +1483 -0
- plexora-0.0.29/plexora/client/src/js/views/viewerControls.js +1230 -0
- plexora-0.0.29/plexora/client/src/js/views/volumeAtlas.js +922 -0
- plexora-0.0.29/plexora/client/src/js/views/volumeDock.js +622 -0
- plexora-0.0.29/plexora/client/src/js/views/volumeHandles.js +639 -0
- plexora-0.0.29/plexora/client/src/js/views/volumeRenderer.js +3792 -0
- plexora-0.0.29/plexora/client/templates/base.html +595 -0
- plexora-0.0.29/plexora/client/templates/index.html +831 -0
- plexora-0.0.29/plexora/client/templates/settings.html +803 -0
- plexora-0.0.29/plexora/connect.py +3380 -0
- plexora-0.0.29/plexora/datasource.py +1950 -0
- plexora-0.0.29/plexora/licensing/__init__.py +101 -0
- plexora-0.0.29/plexora/licensing/cli.py +381 -0
- plexora-0.0.29/plexora/licensing/guards.py +273 -0
- plexora-0.0.29/plexora/licensing/manifest.py +332 -0
- plexora-0.0.29/plexora/licensing/tokens.py +155 -0
- plexora-0.0.29/plexora/links.py +41 -0
- plexora-0.0.29/plexora/mcp/profiles.py +177 -0
- plexora-0.0.29/plexora/mcp/prompts.py +134 -0
- plexora-0.0.29/plexora/mcp/server.py +664 -0
- plexora-0.0.29/plexora/mcp/tools.py +212 -0
- plexora-0.0.29/plexora/memory.py +973 -0
- plexora-0.0.29/plexora/nodes.py +1381 -0
- plexora-0.0.29/plexora/paths.py +982 -0
- plexora-0.0.29/plexora/plugins/figure_builder/__init__.py +184 -0
- plexora-0.0.29/plexora/plugins/figure_builder/server/captures.py +581 -0
- plexora-0.0.29/plexora/plugins/figure_builder/server/export.py +1176 -0
- plexora-0.0.29/plexora/plugins/figure_builder/server/pixels.py +283 -0
- plexora-0.0.29/plexora/plugins/figure_builder/server/routes.py +799 -0
- plexora-0.0.29/plexora/plugins/figure_builder/server/sources.py +135 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureBookmarkStore.js +104 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureBuilderApi.js +416 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureCaptureBin.js +255 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureCaptureBinGrid.js +465 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureCaptureDock.js +837 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureCaptureTool.js +1146 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureQuickEdit.js +1441 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureSceneSnapshot.js +385 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureSidebarController.js +1248 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figureWorkspace.js +2815 -0
- plexora-0.0.29/plexora/plugins/figure_builder/static/figure_builder.css +6253 -0
- plexora-0.0.29/plexora/plugins/figure_builder/templates/figure_builder/captures.html +45 -0
- plexora-0.0.29/plexora/plugins/figure_builder/templates/figure_builder/workspace.html +37 -0
- plexora-0.0.29/plexora/plugins/figure_builder/templates/figure_builder/workspace_body.html +577 -0
- plexora-0.0.29/plexora/plugins/gating/__init__.py +96 -0
- plexora-0.0.29/plexora/plugins/gating/capabilities_session.py +2457 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/answers.py +266 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/bulk.py +429 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/context.py +367 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/engine.py +1885 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/hypotheses/__init__.py +771 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/hypotheses/calibration.py +165 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/hypotheses/candidates.py +109 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/hypotheses/classifier_check.py +199 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/hypotheses/controller.py +631 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/hypotheses/evidence.py +593 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/hypotheses/panel.py +153 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/packets.py +1733 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/provenance.py +15 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/regression.py +163 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/schemas.py +397 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/tableops.py +207 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/transfer.py +262 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/transitions.py +1084 -0
- plexora-0.0.29/plexora/plugins/gating/server/autogate/views.py +186 -0
- plexora-0.0.29/plexora/plugins/gating/server/classifier/geometry.py +60 -0
- plexora-0.0.29/plexora/plugins/gating/server/mixture.py +105 -0
- plexora-0.0.29/plexora/plugins/gating/static/gating.css +1290 -0
- plexora-0.0.29/plexora/plugins/gating/static/gatingSidebarController.js +1959 -0
- plexora-0.0.29/plexora/plugins/gating/templates/gating/panel.html +313 -0
- plexora-0.0.29/plexora/plugins/qc/__init__.py +93 -0
- plexora-0.0.29/plexora/plugins/qc/capabilities.py +1512 -0
- plexora-0.0.29/plexora/plugins/qc/capabilities_checks.py +1650 -0
- plexora-0.0.29/plexora/plugins/qc/capabilities_segment.py +837 -0
- plexora-0.0.29/plexora/plugins/qc/capabilities_visual.py +156 -0
- plexora-0.0.29/plexora/plugins/qc/server/artifacts.py +2440 -0
- plexora-0.0.29/plexora/plugins/qc/server/region_write.py +202 -0
- plexora-0.0.29/plexora/plugins/qc/server/results.py +429 -0
- plexora-0.0.29/plexora/plugins/qc/server/routes.py +963 -0
- plexora-0.0.29/plexora/plugins/roi/__init__.py +118 -0
- plexora-0.0.29/plexora/plugins/roi/server/routes.py +483 -0
- plexora-0.0.29/plexora/plugins/roi/static/roiTools.js +1760 -0
- plexora-0.0.29/plexora/plugins/roi/static/roiTree.js +912 -0
- plexora-0.0.29/plexora/plugins/transcripts/__init__.py +113 -0
- plexora-0.0.29/plexora/plugins/video_studio/__init__.py +113 -0
- plexora-0.0.29/plexora/plugins/video_studio/capabilities.py +438 -0
- plexora-0.0.29/plexora/plugins/video_studio/static/videoSceneState.js +488 -0
- plexora-0.0.29/plexora/plugins/video_studio/static/videoTracking.js +100 -0
- plexora-0.0.29/plexora/plugins/video_studio/static/videoViewerState.js +193 -0
- plexora-0.0.29/plexora/plugins/visium_hd/__init__.py +73 -0
- plexora-0.0.29/plexora/server/models/data_migration.py +316 -0
- plexora-0.0.29/plexora/server/models/data_model.py +5855 -0
- plexora-0.0.29/plexora/server/models/import_proposal.py +4376 -0
- plexora-0.0.29/plexora/server/models/recipes.py +1241 -0
- plexora-0.0.29/plexora/server/models/remote_sessions.py +1409 -0
- plexora-0.0.29/plexora/server/models/remote_sources.py +636 -0
- plexora-0.0.29/plexora/server/models/remotes.py +441 -0
- plexora-0.0.29/plexora/server/node/api.py +3161 -0
- plexora-0.0.29/plexora/server/plugins.py +335 -0
- plexora-0.0.29/plexora/server/providers/base.py +435 -0
- plexora-0.0.29/plexora/server/providers/node.py +1345 -0
- plexora-0.0.29/plexora/server/providers/remote.py +286 -0
- plexora-0.0.29/plexora/server/providers/wire.py +138 -0
- plexora-0.0.29/plexora/server/routes/agent_routes.py +384 -0
- plexora-0.0.29/plexora/server/routes/ai_chat_routes.py +199 -0
- plexora-0.0.29/plexora/server/routes/browse_routes.py +792 -0
- plexora-0.0.29/plexora/server/routes/data_routes.py +1650 -0
- plexora-0.0.29/plexora/server/routes/desktop_routes.py +205 -0
- plexora-0.0.29/plexora/server/routes/import_routes.py +1158 -0
- plexora-0.0.29/plexora/server/routes/license_routes.py +238 -0
- plexora-0.0.29/plexora/server/routes/page_routes.py +706 -0
- plexora-0.0.29/plexora/server/routes/settings_routes.py +1419 -0
- plexora-0.0.29/plexora/server/routes/surface_routes.py +668 -0
- plexora-0.0.29/plexora/server/routes/tool_routes.py +578 -0
- plexora-0.0.29/plexora/server/routes/transfer_routes.py +259 -0
- plexora-0.0.29/plexora/server/routes/volume_routes.py +1303 -0
- plexora-0.0.29/plexora/server/utils/dataset_marks.py +192 -0
- plexora-0.0.29/plexora/server/utils/dir_listing.py +351 -0
- plexora-0.0.29/plexora/server/utils/dir_search.py +185 -0
- plexora-0.0.29/plexora/server/utils/fs_places.py +994 -0
- plexora-0.0.29/plexora/server/utils/remote_image.py +121 -0
- plexora-0.0.29/plexora/server/utils/remote_store.py +2668 -0
- plexora-0.0.29/plexora/server/utils/segmentation_pyramid.py +1468 -0
- plexora-0.0.29/plexora/server/utils/sftp.py +997 -0
- plexora-0.0.29/plexora/server/utils/tiff_region.py +521 -0
- plexora-0.0.29/plexora/server/volume/labels.py +523 -0
- plexora-0.0.29/plexora/server/volume/sources/__init__.py +96 -0
- plexora-0.0.29/plexora/server/volume/sources/ims.py +1191 -0
- plexora-0.0.29/plexora/server/volume/sources/ims_index.py +380 -0
- plexora-0.0.29/plexora/telemetry/client.py +636 -0
- plexora-0.0.29/plexora/telemetry/config.py +200 -0
- plexora-0.0.29/plexora/telemetry/schema.py +763 -0
- plexora-0.0.29/plexora/updates.py +572 -0
- plexora-0.0.29/plexora.egg-info/PKG-INFO +241 -0
- plexora-0.0.29/plexora.egg-info/SOURCES.txt +1391 -0
- plexora-0.0.29/plexora.egg-info/requires.txt +78 -0
- plexora-0.0.29/pyproject.toml +307 -0
- plexora-0.0.29/setup.cfg +4 -0
- plexora-0.0.29/tests/test_agent_cell_gallery.py +150 -0
- plexora-0.0.29/tests/test_agent_gate_panel.py +110 -0
- plexora-0.0.29/tests/test_agent_http_capabilities.py +247 -0
- plexora-0.0.29/tests/test_agent_report.py +113 -0
- plexora-0.0.29/tests/test_agent_scope.py +120 -0
- plexora-0.0.29/tests/test_agent_vertical_slice.py +103 -0
- plexora-0.0.29/tests/test_agent_viewer_api.py +484 -0
- plexora-0.0.29/tests/test_agent_volume.py +348 -0
- plexora-0.0.29/tests/test_ai_bench.py +40 -0
- plexora-0.0.29/tests/test_ai_chat.py +813 -0
- plexora-0.0.29/tests/test_ai_context.py +355 -0
- plexora-0.0.29/tests/test_ai_harness.py +973 -0
- plexora-0.0.29/tests/test_ai_harness_qc.py +246 -0
- plexora-0.0.29/tests/test_ai_models_mcp.py +303 -0
- plexora-0.0.29/tests/test_ai_parallel_markers.py +496 -0
- plexora-0.0.29/tests/test_ai_route_bench.py +153 -0
- plexora-0.0.29/tests/test_ai_routes.py +272 -0
- plexora-0.0.29/tests/test_ai_skills.py +167 -0
- plexora-0.0.29/tests/test_ai_tasks.py +111 -0
- plexora-0.0.29/tests/test_autogate_units.py +2023 -0
- plexora-0.0.29/tests/test_bench_run_arms.py +302 -0
- plexora-0.0.29/tests/test_bookmarks.py +65 -0
- plexora-0.0.29/tests/test_bridge_mcp.py +191 -0
- plexora-0.0.29/tests/test_browse_routes.py +1187 -0
- plexora-0.0.29/tests/test_cell_mode_control.py +466 -0
- plexora-0.0.29/tests/test_desktop_bridge.py +72 -0
- plexora-0.0.29/tests/test_desktop_menu.py +79 -0
- plexora-0.0.29/tests/test_dir_listing.py +399 -0
- plexora-0.0.29/tests/test_dir_search.py +172 -0
- plexora-0.0.29/tests/test_docs_links.py +66 -0
- plexora-0.0.29/tests/test_file_explorer.py +738 -0
- plexora-0.0.29/tests/test_file_location.py +232 -0
- plexora-0.0.29/tests/test_files_server.py +359 -0
- plexora-0.0.29/tests/test_fs_places.py +726 -0
- plexora-0.0.29/tests/test_gating_3d.py +38 -0
- plexora-0.0.29/tests/test_gating_candidates.py +408 -0
- plexora-0.0.29/tests/test_gating_channel_match.py +288 -0
- plexora-0.0.29/tests/test_gating_classifier_layer.py +444 -0
- plexora-0.0.29/tests/test_gating_delta.py +232 -0
- plexora-0.0.29/tests/test_gating_experience.py +114 -0
- plexora-0.0.29/tests/test_gating_hypotheses.py +1225 -0
- plexora-0.0.29/tests/test_gating_limits.py +483 -0
- plexora-0.0.29/tests/test_gating_panel_replay.py +138 -0
- plexora-0.0.29/tests/test_gating_session.py +1905 -0
- plexora-0.0.29/tests/test_gating_tiles.py +224 -0
- plexora-0.0.29/tests/test_hd_default.py +55 -0
- plexora-0.0.29/tests/test_home_landing.py +341 -0
- plexora-0.0.29/tests/test_import_dialog.py +526 -0
- plexora-0.0.29/tests/test_import_proposal.py +912 -0
- plexora-0.0.29/tests/test_import_sample_association.py +393 -0
- plexora-0.0.29/tests/test_import_sample_routes.py +433 -0
- plexora-0.0.29/tests/test_ims_index.py +266 -0
- plexora-0.0.29/tests/test_ims_masks.py +291 -0
- plexora-0.0.29/tests/test_license_js.py +76 -0
- plexora-0.0.29/tests/test_license_routes.py +231 -0
- plexora-0.0.29/tests/test_license_transcriptomics.py +328 -0
- plexora-0.0.29/tests/test_license_visibility.py +133 -0
- plexora-0.0.29/tests/test_license_volume.py +205 -0
- plexora-0.0.29/tests/test_licensing_cli.py +226 -0
- plexora-0.0.29/tests/test_licensing_enforcement.py +512 -0
- plexora-0.0.29/tests/test_licensing_hardening.py +423 -0
- plexora-0.0.29/tests/test_licensing_hpc.py +121 -0
- plexora-0.0.29/tests/test_licensing_manifest.py +163 -0
- plexora-0.0.29/tests/test_licensing_plugins.py +179 -0
- plexora-0.0.29/tests/test_mask_formats.py +378 -0
- plexora-0.0.29/tests/test_mcp_gating.py +114 -0
- plexora-0.0.29/tests/test_mcp_link.py +307 -0
- plexora-0.0.29/tests/test_mcp_qc.py +58 -0
- plexora-0.0.29/tests/test_mcp_server.py +137 -0
- plexora-0.0.29/tests/test_mini_map.py +494 -0
- plexora-0.0.29/tests/test_nearest_cell_3d.py +99 -0
- plexora-0.0.29/tests/test_node_dynamic.py +1165 -0
- plexora-0.0.29/tests/test_parquet_tables.py +449 -0
- plexora-0.0.29/tests/test_path_drop.py +81 -0
- plexora-0.0.29/tests/test_physical_coordinates.py +166 -0
- plexora-0.0.29/tests/test_plane_cells_route.py +126 -0
- plexora-0.0.29/tests/test_plugin_boundary.py +693 -0
- plexora-0.0.29/tests/test_plugins.py +665 -0
- plexora-0.0.29/tests/test_pricing_sync.py +363 -0
- plexora-0.0.29/tests/test_qc_bench.py +84 -0
- plexora-0.0.29/tests/test_qc_bulk_timing.py +140 -0
- plexora-0.0.29/tests/test_qc_check_sampling.py +514 -0
- plexora-0.0.29/tests/test_qc_consolidate.py +100 -0
- plexora-0.0.29/tests/test_qc_cycle_rule.py +128 -0
- plexora-0.0.29/tests/test_qc_mirror.py +130 -0
- plexora-0.0.29/tests/test_qc_payload_trim.py +437 -0
- plexora-0.0.29/tests/test_qc_refine_tool.py +121 -0
- plexora-0.0.29/tests/test_qc_registration_report.py +106 -0
- plexora-0.0.29/tests/test_qc_results.py +246 -0
- plexora-0.0.29/tests/test_qc_rework.py +726 -0
- plexora-0.0.29/tests/test_qc_segment_tool.py +182 -0
- plexora-0.0.29/tests/test_qc_session.py +690 -0
- plexora-0.0.29/tests/test_qc_session_checks.py +257 -0
- plexora-0.0.29/tests/test_qc_session_refine.py +199 -0
- plexora-0.0.29/tests/test_qc_stack.py +199 -0
- plexora-0.0.29/tests/test_qc_tool_surface.py +216 -0
- plexora-0.0.29/tests/test_qc_visual_session.py +176 -0
- plexora-0.0.29/tests/test_qc_visual_tools.py +444 -0
- plexora-0.0.29/tests/test_recipes.py +991 -0
- plexora-0.0.29/tests/test_remote_globe.py +292 -0
- plexora-0.0.29/tests/test_remote_ims.py +230 -0
- plexora-0.0.29/tests/test_roi_cell_regions.py +119 -0
- plexora-0.0.29/tests/test_segmentation_3d.py +151 -0
- plexora-0.0.29/tests/test_settings_webdata_page.py +149 -0
- plexora-0.0.29/tests/test_sftp.py +275 -0
- plexora-0.0.29/tests/test_surface_layer.py +330 -0
- plexora-0.0.29/tests/test_surface_phase2.py +212 -0
- plexora-0.0.29/tests/test_telemetry_uploader.py +236 -0
- plexora-0.0.29/tests/test_tooltip.py +68 -0
- plexora-0.0.29/tests/test_view_state_client.py +245 -0
- plexora-0.0.29/tests/test_viewer_3d_client.py +154 -0
- plexora-0.0.29/tests/test_vision_sam_real.py +112 -0
- plexora-0.0.29/tests/test_visium_hd_import.py +306 -0
- plexora-0.0.29/tests/test_visium_import.py +336 -0
- plexora-0.0.29/tests/test_vocabulary_learned.py +161 -0
- plexora-0.0.29/tests/test_volume_backend.py +769 -0
- plexora-0.0.29/tests/test_volume_chunk_cache.py +201 -0
- plexora-0.0.29/tests/test_volume_depth_levels.py +570 -0
- plexora-0.0.29/tests/test_volume_fluid_planes.py +392 -0
- plexora-0.0.29/tests/test_volume_objects_route.py +96 -0
- plexora-0.0.29/tests/test_volume_propagate.py +209 -0
- plexora-0.0.29/tests/test_volume_routes.py +516 -0
- plexora-0.0.29/tests/test_volume_time_series.py +224 -0
- plexora-0.0.28/LICENSE +0 -207
- plexora-0.0.28/PKG-INFO +0 -225
- plexora-0.0.28/README.md +0 -148
- plexora-0.0.28/plexora/__init__.py +0 -508
- plexora-0.0.28/plexora/agent/bridge_provider.py +0 -460
- plexora-0.0.28/plexora/agent/core/__init__.py +0 -26
- plexora-0.0.28/plexora/agent/core/surface.py +0 -565
- plexora-0.0.28/plexora/agent/core/viewer.py +0 -725
- plexora-0.0.28/plexora/agent/core/volume.py +0 -877
- plexora-0.0.28/plexora/agent/errors.py +0 -147
- plexora-0.0.28/plexora/agent/evidence/collage.py +0 -628
- plexora-0.0.28/plexora/agent/policy.py +0 -343
- plexora-0.0.28/plexora/agent/registry.py +0 -445
- plexora-0.0.28/plexora/agent/tokens.py +0 -169
- plexora-0.0.28/plexora/ai/bench.py +0 -1158
- plexora-0.0.28/plexora/ai/bench_data.py +0 -448
- plexora-0.0.28/plexora/ai/bench_qc.py +0 -809
- plexora-0.0.28/plexora/ai/delegation.py +0 -292
- plexora-0.0.28/plexora/ai/harness/prefix.py +0 -155
- plexora-0.0.28/plexora/ai/knowledge/markers.yaml +0 -549
- plexora-0.0.28/plexora/ai/qc_scenes.py +0 -275
- plexora-0.0.28/plexora/ai/setup.py +0 -485
- plexora-0.0.28/plexora/ai/skill_manifest.yaml +0 -178
- plexora-0.0.28/plexora/ai/skills/analysis-handoff/SKILL.md +0 -110
- plexora-0.0.28/plexora/ai/skills/dataset-triage/SKILL.md +0 -83
- plexora-0.0.28/plexora/ai/skills/diagnose-marker/SKILL.md +0 -102
- plexora-0.0.28/plexora/ai/skills/gate-dataset/SKILL.md +0 -119
- plexora-0.0.28/plexora/ai/skills/gate-image/SKILL.md +0 -227
- plexora-0.0.28/plexora/ai/skills/gate-packets/SKILL.md +0 -132
- plexora-0.0.28/plexora/ai/skills/marker-qc/SKILL.md +0 -68
- plexora-0.0.28/plexora/ai/skills/qc-checks/SKILL.md +0 -209
- plexora-0.0.28/plexora/ai/skills/qc-image/SKILL.md +0 -371
- plexora-0.0.28/plexora/ai/skills/qc-packets/SKILL.md +0 -75
- plexora-0.0.28/plexora/ai/skills/qc-visual-artifacts/SKILL.md +0 -168
- plexora-0.0.28/plexora/ai/skills/review-gating/SKILL.md +0 -113
- plexora-0.0.28/plexora/ai/skills/review-objects/SKILL.md +0 -82
- plexora-0.0.28/plexora/ai/skills/review-qc/SKILL.md +0 -138
- plexora-0.0.28/plexora/ai/skills/surface-rendering/SKILL.md +0 -115
- plexora-0.0.28/plexora/ai/skills/video-storyboard/SKILL.md +0 -97
- plexora-0.0.28/plexora/ai/skills/visual-gating/SKILL.md +0 -119
- plexora-0.0.28/plexora/ai/skills/visual-inspection/SKILL.md +0 -80
- plexora-0.0.28/plexora/ai/skills/volume-triage/SKILL.md +0 -131
- plexora-0.0.28/plexora/ai/skills.py +0 -309
- plexora-0.0.28/plexora/ai/tasks.yaml +0 -189
- plexora-0.0.28/plexora/api/plugin.py +0 -1014
- plexora-0.0.28/plexora/client/src/css/main.css +0 -10378
- plexora-0.0.28/plexora/client/src/css/quickView.css +0 -1412
- plexora-0.0.28/plexora/client/src/css/settings.css +0 -1514
- plexora-0.0.28/plexora/client/src/css/tokens.css +0 -73
- plexora-0.0.28/plexora/client/src/css/viewer.css +0 -6157
- plexora-0.0.28/plexora/client/src/js/main.js +0 -2427
- plexora-0.0.28/plexora/client/src/js/services/agentBridge.js +0 -2568
- plexora-0.0.28/plexora/client/src/js/services/browsePicker.js +0 -558
- plexora-0.0.28/plexora/client/src/js/services/canvasLayout.js +0 -442
- plexora-0.0.28/plexora/client/src/js/services/connectionModal.js +0 -3170
- plexora-0.0.28/plexora/client/src/js/services/dataLocation.js +0 -792
- plexora-0.0.28/plexora/client/src/js/services/desktopBridge.js +0 -385
- plexora-0.0.28/plexora/client/src/js/services/fileLocation.js +0 -721
- plexora-0.0.28/plexora/client/src/js/services/inspectGeometry.js +0 -350
- plexora-0.0.28/plexora/client/src/js/services/inspectState.js +0 -277
- plexora-0.0.28/plexora/client/src/js/services/maskSurfaces.js +0 -455
- plexora-0.0.28/plexora/client/src/js/services/paidFeature.js +0 -156
- plexora-0.0.28/plexora/client/src/js/services/pathPicker.js +0 -989
- plexora-0.0.28/plexora/client/src/js/services/placePicker.js +0 -244
- plexora-0.0.28/plexora/client/src/js/services/remoteGlobe.js +0 -752
- plexora-0.0.28/plexora/client/src/js/services/remoteState.js +0 -709
- plexora-0.0.28/plexora/client/src/js/services/resourceStatus.js +0 -577
- plexora-0.0.28/plexora/client/src/js/services/surfaceLayers.js +0 -698
- plexora-0.0.28/plexora/client/src/js/services/viewControls.js +0 -436
- plexora-0.0.28/plexora/client/src/js/services/viewState.js +0 -1015
- plexora-0.0.28/plexora/client/src/js/services/viewerPrefs.js +0 -301
- plexora-0.0.28/plexora/client/src/js/services/viewerScene.js +0 -414
- plexora-0.0.28/plexora/client/src/js/views/agentPanel.js +0 -1977
- plexora-0.0.28/plexora/client/src/js/views/channelNamesUpload.js +0 -929
- plexora-0.0.28/plexora/client/src/js/views/datasetNav.js +0 -329
- plexora-0.0.28/plexora/client/src/js/views/depthSettings.js +0 -701
- plexora-0.0.28/plexora/client/src/js/views/depthStrip.js +0 -751
- plexora-0.0.28/plexora/client/src/js/views/depthTools.js +0 -564
- plexora-0.0.28/plexora/client/src/js/views/fileSourceRow.js +0 -469
- plexora-0.0.28/plexora/client/src/js/views/helpMenu.js +0 -247
- plexora-0.0.28/plexora/client/src/js/views/importHelp.js +0 -625
- plexora-0.0.28/plexora/client/src/js/views/importSample.js +0 -3383
- plexora-0.0.28/plexora/client/src/js/views/locators.js +0 -76
- plexora-0.0.28/plexora/client/src/js/views/miniMap.js +0 -1084
- plexora-0.0.28/plexora/client/src/js/views/orientationGizmo.js +0 -147
- plexora-0.0.28/plexora/client/src/js/views/quickViewLanding.js +0 -875
- plexora-0.0.28/plexora/client/src/js/views/sectionPanes.js +0 -1790
- plexora-0.0.28/plexora/client/src/js/views/settingsPage.js +0 -2427
- plexora-0.0.28/plexora/client/src/js/views/surfaceCard.js +0 -344
- plexora-0.0.28/plexora/client/src/js/views/surfaceInspect.js +0 -236
- plexora-0.0.28/plexora/client/src/js/views/surfaceRenderer.js +0 -1340
- plexora-0.0.28/plexora/client/src/js/views/surfaceStudio.js +0 -782
- plexora-0.0.28/plexora/client/src/js/views/toolLoader.js +0 -1483
- plexora-0.0.28/plexora/client/src/js/views/viewerControls.js +0 -1230
- plexora-0.0.28/plexora/client/src/js/views/volumeAtlas.js +0 -834
- plexora-0.0.28/plexora/client/src/js/views/volumeDock.js +0 -585
- plexora-0.0.28/plexora/client/src/js/views/volumeHandles.js +0 -498
- plexora-0.0.28/plexora/client/src/js/views/volumeRenderer.js +0 -3066
- plexora-0.0.28/plexora/client/templates/base.html +0 -522
- plexora-0.0.28/plexora/client/templates/index.html +0 -813
- plexora-0.0.28/plexora/client/templates/settings.html +0 -796
- plexora-0.0.28/plexora/connect.py +0 -3184
- plexora-0.0.28/plexora/datasource.py +0 -1948
- plexora-0.0.28/plexora/licensing/__init__.py +0 -98
- plexora-0.0.28/plexora/licensing/cli.py +0 -370
- plexora-0.0.28/plexora/licensing/guards.py +0 -236
- plexora-0.0.28/plexora/licensing/manifest.py +0 -269
- plexora-0.0.28/plexora/licensing/tokens.py +0 -155
- plexora-0.0.28/plexora/links.py +0 -36
- plexora-0.0.28/plexora/mcp/profiles.py +0 -177
- plexora-0.0.28/plexora/mcp/prompts.py +0 -131
- plexora-0.0.28/plexora/mcp/server.py +0 -659
- plexora-0.0.28/plexora/mcp/tools.py +0 -201
- plexora-0.0.28/plexora/memory.py +0 -945
- plexora-0.0.28/plexora/nodes.py +0 -1269
- plexora-0.0.28/plexora/paths.py +0 -923
- plexora-0.0.28/plexora/plugins/figure_builder/__init__.py +0 -173
- plexora-0.0.28/plexora/plugins/figure_builder/server/captures.py +0 -482
- plexora-0.0.28/plexora/plugins/figure_builder/server/export.py +0 -1120
- plexora-0.0.28/plexora/plugins/figure_builder/server/pixels.py +0 -261
- plexora-0.0.28/plexora/plugins/figure_builder/server/routes.py +0 -754
- plexora-0.0.28/plexora/plugins/figure_builder/server/sources.py +0 -122
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureBuilderApi.js +0 -337
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureCaptureBin.js +0 -246
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureCaptureBinGrid.js +0 -310
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureCaptureDock.js +0 -617
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureCaptureTool.js +0 -1214
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureQuickEdit.js +0 -1004
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureSceneSnapshot.js +0 -376
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureSidebarController.js +0 -1260
- plexora-0.0.28/plexora/plugins/figure_builder/static/figureWorkspace.js +0 -2737
- plexora-0.0.28/plexora/plugins/figure_builder/static/figure_builder.css +0 -5990
- plexora-0.0.28/plexora/plugins/figure_builder/templates/figure_builder/captures.html +0 -45
- plexora-0.0.28/plexora/plugins/figure_builder/templates/figure_builder/workspace.html +0 -27
- plexora-0.0.28/plexora/plugins/figure_builder/templates/figure_builder/workspace_body.html +0 -558
- plexora-0.0.28/plexora/plugins/gating/__init__.py +0 -96
- plexora-0.0.28/plexora/plugins/gating/capabilities_session.py +0 -2381
- plexora-0.0.28/plexora/plugins/gating/server/autogate/answers.py +0 -244
- plexora-0.0.28/plexora/plugins/gating/server/autogate/bulk.py +0 -362
- plexora-0.0.28/plexora/plugins/gating/server/autogate/context.py +0 -364
- plexora-0.0.28/plexora/plugins/gating/server/autogate/engine.py +0 -1838
- plexora-0.0.28/plexora/plugins/gating/server/autogate/packets.py +0 -1643
- plexora-0.0.28/plexora/plugins/gating/server/autogate/provenance.py +0 -15
- plexora-0.0.28/plexora/plugins/gating/server/autogate/regression.py +0 -157
- plexora-0.0.28/plexora/plugins/gating/server/autogate/schemas.py +0 -359
- plexora-0.0.28/plexora/plugins/gating/server/autogate/tableops.py +0 -192
- plexora-0.0.28/plexora/plugins/gating/server/autogate/transfer.py +0 -259
- plexora-0.0.28/plexora/plugins/gating/server/autogate/transitions.py +0 -1069
- plexora-0.0.28/plexora/plugins/gating/server/autogate/views.py +0 -180
- plexora-0.0.28/plexora/plugins/gating/server/classifier/geometry.py +0 -60
- plexora-0.0.28/plexora/plugins/gating/server/mixture.py +0 -105
- plexora-0.0.28/plexora/plugins/gating/static/gating.css +0 -1157
- plexora-0.0.28/plexora/plugins/gating/static/gatingSidebarController.js +0 -1911
- plexora-0.0.28/plexora/plugins/gating/templates/gating/panel.html +0 -309
- plexora-0.0.28/plexora/plugins/qc/__init__.py +0 -93
- plexora-0.0.28/plexora/plugins/qc/capabilities.py +0 -1512
- plexora-0.0.28/plexora/plugins/qc/capabilities_checks.py +0 -1533
- plexora-0.0.28/plexora/plugins/qc/capabilities_segment.py +0 -837
- plexora-0.0.28/plexora/plugins/qc/capabilities_visual.py +0 -156
- plexora-0.0.28/plexora/plugins/qc/server/artifacts.py +0 -2266
- plexora-0.0.28/plexora/plugins/qc/server/region_write.py +0 -177
- plexora-0.0.28/plexora/plugins/qc/server/results.py +0 -424
- plexora-0.0.28/plexora/plugins/qc/server/routes.py +0 -963
- plexora-0.0.28/plexora/plugins/roi/__init__.py +0 -118
- plexora-0.0.28/plexora/plugins/roi/server/routes.py +0 -483
- plexora-0.0.28/plexora/plugins/roi/static/roiTools.js +0 -1760
- plexora-0.0.28/plexora/plugins/roi/static/roiTree.js +0 -912
- plexora-0.0.28/plexora/plugins/transcripts/__init__.py +0 -113
- plexora-0.0.28/plexora/plugins/video_studio/__init__.py +0 -113
- plexora-0.0.28/plexora/plugins/video_studio/capabilities.py +0 -437
- plexora-0.0.28/plexora/plugins/video_studio/static/videoSceneState.js +0 -479
- plexora-0.0.28/plexora/plugins/video_studio/static/videoTracking.js +0 -100
- plexora-0.0.28/plexora/plugins/video_studio/static/videoViewerState.js +0 -195
- plexora-0.0.28/plexora/plugins/visium_hd/__init__.py +0 -73
- plexora-0.0.28/plexora/server/models/data_migration.py +0 -313
- plexora-0.0.28/plexora/server/models/data_model.py +0 -5851
- plexora-0.0.28/plexora/server/models/import_proposal.py +0 -4298
- plexora-0.0.28/plexora/server/models/recipes.py +0 -1150
- plexora-0.0.28/plexora/server/models/remote_sessions.py +0 -1367
- plexora-0.0.28/plexora/server/models/remote_sources.py +0 -624
- plexora-0.0.28/plexora/server/models/remotes.py +0 -416
- plexora-0.0.28/plexora/server/node/api.py +0 -3020
- plexora-0.0.28/plexora/server/plugins.py +0 -326
- plexora-0.0.28/plexora/server/providers/base.py +0 -431
- plexora-0.0.28/plexora/server/providers/node.py +0 -1338
- plexora-0.0.28/plexora/server/providers/remote.py +0 -277
- plexora-0.0.28/plexora/server/providers/wire.py +0 -131
- plexora-0.0.28/plexora/server/routes/agent_routes.py +0 -384
- plexora-0.0.28/plexora/server/routes/ai_chat_routes.py +0 -199
- plexora-0.0.28/plexora/server/routes/browse_routes.py +0 -393
- plexora-0.0.28/plexora/server/routes/data_routes.py +0 -1611
- plexora-0.0.28/plexora/server/routes/desktop_routes.py +0 -205
- plexora-0.0.28/plexora/server/routes/import_routes.py +0 -1158
- plexora-0.0.28/plexora/server/routes/license_routes.py +0 -234
- plexora-0.0.28/plexora/server/routes/page_routes.py +0 -690
- plexora-0.0.28/plexora/server/routes/settings_routes.py +0 -1391
- plexora-0.0.28/plexora/server/routes/surface_routes.py +0 -668
- plexora-0.0.28/plexora/server/routes/tool_routes.py +0 -578
- plexora-0.0.28/plexora/server/routes/transfer_routes.py +0 -198
- plexora-0.0.28/plexora/server/routes/volume_routes.py +0 -1250
- plexora-0.0.28/plexora/server/utils/dir_listing.py +0 -144
- plexora-0.0.28/plexora/server/utils/remote_image.py +0 -112
- plexora-0.0.28/plexora/server/utils/remote_store.py +0 -2638
- plexora-0.0.28/plexora/server/utils/segmentation_pyramid.py +0 -1457
- plexora-0.0.28/plexora/server/utils/tiff_region.py +0 -488
- plexora-0.0.28/plexora/server/volume/labels.py +0 -507
- plexora-0.0.28/plexora/server/volume/sources/__init__.py +0 -94
- plexora-0.0.28/plexora/server/volume/sources/ims.py +0 -918
- plexora-0.0.28/plexora/telemetry/client.py +0 -636
- plexora-0.0.28/plexora/telemetry/config.py +0 -199
- plexora-0.0.28/plexora/telemetry/schema.py +0 -763
- plexora-0.0.28/plexora/updates.py +0 -571
- plexora-0.0.28/plexora.egg-info/PKG-INFO +0 -225
- plexora-0.0.28/plexora.egg-info/SOURCES.txt +0 -1347
- plexora-0.0.28/plexora.egg-info/requires.txt +0 -77
- plexora-0.0.28/pyproject.toml +0 -299
- plexora-0.0.28/setup.cfg +0 -4
- plexora-0.0.28/tests/test_agent_cell_gallery.py +0 -150
- plexora-0.0.28/tests/test_agent_gate_panel.py +0 -110
- plexora-0.0.28/tests/test_agent_http_capabilities.py +0 -247
- plexora-0.0.28/tests/test_agent_report.py +0 -113
- plexora-0.0.28/tests/test_agent_scope.py +0 -120
- plexora-0.0.28/tests/test_agent_vertical_slice.py +0 -103
- plexora-0.0.28/tests/test_agent_viewer_api.py +0 -456
- plexora-0.0.28/tests/test_agent_volume.py +0 -348
- plexora-0.0.28/tests/test_ai_bench.py +0 -40
- plexora-0.0.28/tests/test_ai_chat.py +0 -813
- plexora-0.0.28/tests/test_ai_context.py +0 -355
- plexora-0.0.28/tests/test_ai_harness.py +0 -972
- plexora-0.0.28/tests/test_ai_harness_qc.py +0 -246
- plexora-0.0.28/tests/test_ai_models_mcp.py +0 -302
- plexora-0.0.28/tests/test_ai_parallel_markers.py +0 -486
- plexora-0.0.28/tests/test_ai_route_bench.py +0 -153
- plexora-0.0.28/tests/test_ai_routes.py +0 -272
- plexora-0.0.28/tests/test_ai_skills.py +0 -102
- plexora-0.0.28/tests/test_ai_tasks.py +0 -104
- plexora-0.0.28/tests/test_autogate_units.py +0 -2010
- plexora-0.0.28/tests/test_bridge_mcp.py +0 -191
- plexora-0.0.28/tests/test_browse_routes.py +0 -710
- plexora-0.0.28/tests/test_cell_mode_control.py +0 -466
- plexora-0.0.28/tests/test_desktop_bridge.py +0 -67
- plexora-0.0.28/tests/test_docs_links.py +0 -57
- plexora-0.0.28/tests/test_file_location.py +0 -232
- plexora-0.0.28/tests/test_gating_3d.py +0 -38
- plexora-0.0.28/tests/test_gating_candidates.py +0 -338
- plexora-0.0.28/tests/test_gating_channel_match.py +0 -288
- plexora-0.0.28/tests/test_gating_classifier_layer.py +0 -444
- plexora-0.0.28/tests/test_gating_delta.py +0 -232
- plexora-0.0.28/tests/test_gating_experience.py +0 -114
- plexora-0.0.28/tests/test_gating_limits.py +0 -483
- plexora-0.0.28/tests/test_gating_session.py +0 -1887
- plexora-0.0.28/tests/test_gating_tiles.py +0 -224
- plexora-0.0.28/tests/test_hd_default.py +0 -47
- plexora-0.0.28/tests/test_home_landing.py +0 -328
- plexora-0.0.28/tests/test_import_dialog.py +0 -503
- plexora-0.0.28/tests/test_import_proposal.py +0 -912
- plexora-0.0.28/tests/test_import_sample_association.py +0 -393
- plexora-0.0.28/tests/test_import_sample_routes.py +0 -433
- plexora-0.0.28/tests/test_ims_masks.py +0 -291
- plexora-0.0.28/tests/test_license_js.py +0 -73
- plexora-0.0.28/tests/test_license_routes.py +0 -201
- plexora-0.0.28/tests/test_license_transcriptomics.py +0 -328
- plexora-0.0.28/tests/test_license_visibility.py +0 -133
- plexora-0.0.28/tests/test_license_volume.py +0 -205
- plexora-0.0.28/tests/test_licensing_cli.py +0 -208
- plexora-0.0.28/tests/test_licensing_enforcement.py +0 -474
- plexora-0.0.28/tests/test_licensing_hardening.py +0 -423
- plexora-0.0.28/tests/test_licensing_hpc.py +0 -121
- plexora-0.0.28/tests/test_licensing_manifest.py +0 -145
- plexora-0.0.28/tests/test_licensing_plugins.py +0 -178
- plexora-0.0.28/tests/test_mask_formats.py +0 -332
- plexora-0.0.28/tests/test_mcp_gating.py +0 -111
- plexora-0.0.28/tests/test_mcp_link.py +0 -307
- plexora-0.0.28/tests/test_mcp_qc.py +0 -58
- plexora-0.0.28/tests/test_mcp_server.py +0 -137
- plexora-0.0.28/tests/test_mini_map.py +0 -396
- plexora-0.0.28/tests/test_nearest_cell_3d.py +0 -99
- plexora-0.0.28/tests/test_node_dynamic.py +0 -923
- plexora-0.0.28/tests/test_parquet_tables.py +0 -449
- plexora-0.0.28/tests/test_path_picker.py +0 -549
- plexora-0.0.28/tests/test_physical_coordinates.py +0 -166
- plexora-0.0.28/tests/test_plane_cells_route.py +0 -126
- plexora-0.0.28/tests/test_plugin_boundary.py +0 -673
- plexora-0.0.28/tests/test_plugins.py +0 -637
- plexora-0.0.28/tests/test_qc_bench.py +0 -84
- plexora-0.0.28/tests/test_qc_bulk_timing.py +0 -140
- plexora-0.0.28/tests/test_qc_check_sampling.py +0 -514
- plexora-0.0.28/tests/test_qc_consolidate.py +0 -100
- plexora-0.0.28/tests/test_qc_mirror.py +0 -130
- plexora-0.0.28/tests/test_qc_payload_trim.py +0 -437
- plexora-0.0.28/tests/test_qc_refine_tool.py +0 -121
- plexora-0.0.28/tests/test_qc_registration_report.py +0 -106
- plexora-0.0.28/tests/test_qc_results.py +0 -246
- plexora-0.0.28/tests/test_qc_rework.py +0 -726
- plexora-0.0.28/tests/test_qc_segment_tool.py +0 -182
- plexora-0.0.28/tests/test_qc_session.py +0 -690
- plexora-0.0.28/tests/test_qc_session_checks.py +0 -257
- plexora-0.0.28/tests/test_qc_session_refine.py +0 -199
- plexora-0.0.28/tests/test_qc_stack.py +0 -199
- plexora-0.0.28/tests/test_qc_tool_surface.py +0 -216
- plexora-0.0.28/tests/test_qc_visual_session.py +0 -176
- plexora-0.0.28/tests/test_qc_visual_tools.py +0 -444
- plexora-0.0.28/tests/test_recipes.py +0 -986
- plexora-0.0.28/tests/test_remote_globe.py +0 -295
- plexora-0.0.28/tests/test_roi_cell_regions.py +0 -119
- plexora-0.0.28/tests/test_segmentation_3d.py +0 -151
- plexora-0.0.28/tests/test_settings_webdata_page.py +0 -123
- plexora-0.0.28/tests/test_surface_layer.py +0 -330
- plexora-0.0.28/tests/test_surface_phase2.py +0 -212
- plexora-0.0.28/tests/test_telemetry_uploader.py +0 -236
- plexora-0.0.28/tests/test_view_state_client.py +0 -202
- plexora-0.0.28/tests/test_viewer_3d_client.py +0 -153
- plexora-0.0.28/tests/test_vision_sam_real.py +0 -112
- plexora-0.0.28/tests/test_visium_hd_import.py +0 -306
- plexora-0.0.28/tests/test_visium_import.py +0 -336
- plexora-0.0.28/tests/test_vocabulary_learned.py +0 -153
- plexora-0.0.28/tests/test_volume_backend.py +0 -710
- plexora-0.0.28/tests/test_volume_chunk_cache.py +0 -122
- plexora-0.0.28/tests/test_volume_depth_levels.py +0 -551
- plexora-0.0.28/tests/test_volume_fluid_planes.py +0 -382
- plexora-0.0.28/tests/test_volume_objects_route.py +0 -96
- plexora-0.0.28/tests/test_volume_propagate.py +0 -209
- plexora-0.0.28/tests/test_volume_routes.py +0 -463
- plexora-0.0.28/tests/test_volume_time_series.py +0 -224
- {plexora-0.0.28 → plexora-0.0.29}/MANIFEST.in +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/__main__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/_lifetime.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/_logging.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/_resources.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/_subprocess.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/_transient_locks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/_url.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/artifacts.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/attach.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/audit.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/bridge_roles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/bridge_wire.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/cell_exclusions.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/cell_explain.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/cell_gallery.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/coordinates.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/bridge.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/cells.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/image.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/jobs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/operations.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/project.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/scene.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/selection.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/table.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/visual.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/core/volume_analysis.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/calibration.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/cell_window.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/crops.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/density_plot.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/display_contrast.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/display_grid.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/image_qc.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/evidence/sheet_layout.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/expression.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/gate_panel.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/gate_rule.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/gate_sampling.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/jobs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/limits.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/plots.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/presets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/receipts.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/render.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/render_spec.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/report.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/revision.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/scene_models.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/schemas.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sections.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/session.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/budget.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/control.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/engine.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/events.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/memo.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/mirror.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/store.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/sessions/tools.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/tasks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/agent/viewer.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/audit.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/bench_experience.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/context.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/backend.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/cache_plan.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/capabilities.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/chat_capabilities.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/cli.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/conversations.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/decision.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/expression.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/gateway.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/route_bench.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/schema.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/toolcache.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/harness/trace.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/knowledge/biology.yaml +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/models_config.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/tasks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/ai/vocabulary.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/api/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/api/dataset.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/api/features.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/api/http.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/api/representation.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/api/store.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/askpass.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/cli.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/124_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/248_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/248_bundle.js.LICENSE.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/354_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/354_bundle.js.LICENSE.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/418_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/418_bundle.js.LICENSE.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/693b935cb1f907814be9c6199a68c217.svg +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/713c134ff47cd328a5b711526f151082.svg +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/770_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/908_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/908_bundle.js.LICENSE.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/ff743f408972e0e96ca9153ed5ae4c83.svg +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/vendor_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/vendor_bundle.js.LICENSE.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/vendors-node_modules_canvg_lib_index_es_js_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/vendors-node_modules_dompurify_dist_purify_es_mjs_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/dist/vendors-node_modules_html2canvas_dist_html2canvas_js_bundle.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/LICENSE.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/canvas-overlay-hd.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/changelog.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/.gitattributes +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/LICENSE.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/Toolbar.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/fullpage.psd +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/home.psd +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/next.psd +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/previous.psd +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/rotateleft.psd +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/rotateright.psd +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/Photoshop/zoom.psd +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/README.md +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/fullpage_grouphover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/fullpage_hover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/fullpage_pressed.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/fullpage_rest.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/home_grouphover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/home_hover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/home_pressed.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/home_rest.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/next_grouphover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/next_hover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/next_pressed.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/next_rest.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/previous_grouphover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/previous_hover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/previous_pressed.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/previous_rest.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateleft_grouphover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateleft_hover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateleft_pressed.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateleft_rest.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateright_grouphover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateright_hover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateright_pressed.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/rotateright_rest.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomin_grouphover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomin_hover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomin_pressed.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomin_rest.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomout_grouphover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomout_hover.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomout_pressed.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-flat-toolbar-icons-master/images/zoomout_rest.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/openseadragon-bin-2.4.0/openseadragon-scalebar.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/thinking-orbs-0.3.2/LICENSE +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/thinking-orbs-0.3.2/README-plexora.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/external/thinking-orbs-0.3.2/orbs.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/css/agentPanel.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/css/chatPanel.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/css/import.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/css/openProject.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/img/apple-touch-icon.png +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/img/favicon.ico +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/img/logo.ai +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/img/logo.svg +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/img/logo_with_text.ai +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/img/logo_with_text.svg +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/pluginRegistry.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/appRouter.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/appStatus.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/canvasHint.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/carryOver.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/channelFade.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/dataLayer.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/datasetContext.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/displayCurve.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/errors.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/failureMessage.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/glRenderer.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/keyboardShortcuts.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/launchContext.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/logTerminal.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/magicToolbar.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/numericData.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/orbDriver.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/pageBoot.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/passVariablesToFrontend.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/perfProbe.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/performanceTelemetry.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/pointerDrag.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/renderClipboard.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/resourceRouting.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/segmentService.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/sessionExpiry.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/simpleEventHandler.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/telemetry.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/toast.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/viewSnapshot.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/viewTransform.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/viewerLoader.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/services/volumeWindows.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/vendor.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/brightfieldAdjust.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/cardList.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/channelList.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/chatPanel.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/colorSwatchPicker.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/columnClassifier.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/confirmDialog.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/coordinateField.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/dataSourceField.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/datasetPicker.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/datasetStrip.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/geneGroupModal.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/geneList.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/glInit.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/gradientRange.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/imageViewer.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/jobProgress.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/jobWait.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/labelGpu.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/labelTile.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/layerChannelPanel.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/layerManager.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/layerSections.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/layerStack.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/loadProgress.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/maskSurfaceWait.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/navbarControls.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/openProjectPage.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/panCursor.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/paneStatus.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/planeMotion.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/pluginHelp.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/popoverMenu.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/popoverPortal.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/projectEdit.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/rainbow.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/requirementsModal.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/rgbImageViewer.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/scaleCalibration.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/searchableSelect.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/sectionCells.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/segmentationWait.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/slider.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/surfaceObjects.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/tableProgress.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/tileColorize.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/tileDecode.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/tileFetch.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/updateDialog.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/viewTransformTools.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/viewerErrorState.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/viewerManager.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/viewerSidebar.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/views/volumeCamera.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/js/workers/tileDecoder.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/shaders/frag.glsl +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/shaders/label.frag.glsl +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/src/shaders/vert.glsl +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/templates/_fragment.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/templates/_scale_calibration.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/templates/_scale_calibration_float.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/templates/open_project.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/templates/project_edit.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/templates/tools/depth_panel.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/client/templates/tools/rotate_panel.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/datasets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/gcloud.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/jupyter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/mcp/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/mcp/auth.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/mcp/resources.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/mcp/resources_gating.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/mcp/resources_scene.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/mcp/resources_visual.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/mcp/serialize.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/mcp/smoke.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/notebook_env.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/server/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/server/routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/server/state.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/server/values.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/server/variables.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerAnalysisBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerApi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerColors.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerContinuous.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerFigureBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerLegend.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerRoiBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerSidebarController.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cellExplorerState.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/static/cell_explorer.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/cell_explorer/templates/cell_explorer/panel.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/compose.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/export_jobs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/operations.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/provenance.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/render.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/repository.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/schema.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/shapegeom.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/strokegeom.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/server/textmetrics.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureActions.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureCanvas.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureCaptureBoxes.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureChoiceField.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureColorField.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureConfirm.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureContextBar.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureContextMenu.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureDestinationPicker.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureDocumentState.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureExportUi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureImagePanel.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureLibrary.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureLineDefs.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureLinePanel.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figurePanelCompositor.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figurePointEditor.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureRichText.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureSchema.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureShapeDefs.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureShapeDrawing.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureShapeGeometry.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureShapePanel.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureStrokeGeometry.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureTextEditor.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureTextPanel.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureThumbnail.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/static/figureViewOptions.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/figure_builder/templates/figure_builder/library.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/capabilities.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/capabilities_autogate.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/capabilities_classifier.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/anndata_gates.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/absence.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/biology.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/bivariate.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/candidates.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/cellcalls.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/cells.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/events.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/hierarchy.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/kernels.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/lattice.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/memo.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/mirror_script.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/partners.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/pixel_estimate.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/profile.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/qc_cells.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/reference.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/replan.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/report.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/sampler.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/scoring.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/sheet.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/autogate/verdicts.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/autopick.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/calls.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/export.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/features.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/learner.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/panel.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/rules.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/runs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/signal.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/source_write.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/classifier/store.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/database.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/experience.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/model.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/provenance.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/server/tableops.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/static/csvGatingList.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/static/gatingAgentBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/static/gatingApi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/static/gatingClassifier.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/static/gatingPlanes.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/gating/templates/gating/legacy.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/capabilities_objects.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/capabilities_session.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/capabilities_stack.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/mcp.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/answers.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/background.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/blur.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/bulk.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/candidates.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/cells/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/cells/calls.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/cells/channel_findings.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/check_candidates.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/checks_bulk.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/checks_result.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/class_rules.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/consolidate.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/cycles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/detectors/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/detectors/base.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/detectors/classical.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/digest.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/dna_retention.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/engine.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/events.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/exclusions.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/export.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/finalize.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/frames.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/mirror_script.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/nuclei_trace.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/overview.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/packets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/plane.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/polygons.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/propagate.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/provenance.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/refine.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/refine_sam.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/registration.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/report.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/roi_link.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/scan.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/schemas.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/score_fields.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/score_review.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/segqc/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/segqc/analysis.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/segqc/kernels.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/segqc/run.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/sheets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/source_write.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/strictness.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/tissue.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/transitions.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/server/viewer_data.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qc.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcAgentBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcApi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcArtifacts.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcBlur.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcDraw.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcHover.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcLayers.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcRegistration.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcSegmentation.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcSidebarController.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcStack.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/static/qcTree.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/qc/templates/qc/panel.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/capabilities.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/adapters.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/geojson.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/geometry.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/mapping.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/operations.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/repository.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/schema.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/service.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/server/tableops.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/static/roi.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/static/roiAgentBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/static/roiApi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/static/roiFigureBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/static/roiGeometry.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/static/roiRenderer.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/static/roiSidebarController.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/static/roiState.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/roi/templates/roi/panel.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/capabilities.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/server/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/server/cellpose3d.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/server/routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/server/run.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/static/segmentation3d.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/static/segmentation3d.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/segmentation/templates/segmentation/panel.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/server/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/server/routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/server/xenium.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/static/transcriptLayer.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/static/transcriptPoints.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/static/transcripts.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/static/transcriptsApi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/static/transcriptsSidebarController.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/transcripts/templates/transcripts/panel.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/encode_jobs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/encoders.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/facts.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/manifest.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/operations.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/presets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/repository.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/schema.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/server/writers.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/vendor/LICENSE-mediabunny +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/vendor/README.md +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/vendor/mediabunny-1.60.0.mjs +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoAgentBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoAnimation.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoArcLength.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoCamera2d.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoCamera3d.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoComposite.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoEasing.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoEncodeWorker.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoEncoders.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoExportLoop.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoExportUi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoFigureBridge.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoHistory.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoInterp.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoOverlays.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoParamFields.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoPathEditor.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoPrefetch.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoPreview.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoProjectApi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoReadiness.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoRecorder.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoRenderCoordinator.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoRenderCover.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoSchema.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoStage.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoStudioBar.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoStudioSidebarController.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/videoTimeline.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/video_studio/static/video_studio.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/server/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/server/routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/server/spots.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/server/tenx.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/static/binLayer.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/static/spotLayer.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/static/visiumHdApi.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/static/visiumHdSidebarController.js +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/static/visium_hd.css +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/plugins/visium_hd/templates/visium_hd/panel.html +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/proxy.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/core_tools.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/anndata_adapter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/base.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/classify.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/csv_adapter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/flat_table.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/inspection.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/memory_adapter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/adapters/spatialdata_adapter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/bin_tiles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/centroid_tiles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/consistency.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/database_model.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/dataset_events.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/datasets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/import_sample.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/layer_jobs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/layer_sources.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/manifest.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/nodes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/project.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/secret_store.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/server_records.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/table_correction.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/transcript_tiles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/viewer_sessions.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/models/views.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/node/app.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/node/resources.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/providers/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/providers/http.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/providers/local.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/providers/memory.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/providers/operations.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/routes/ai_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/routes/dataset_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/routes/gcloud_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/routes/project_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/routes/segment_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/routes/system_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/routes/telemetry_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/routes/update_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/contacts.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/export.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/importers.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/isosurface.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/labels.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/levels.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/marching.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/mesh.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/nets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/preview.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/refine.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/sections.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/store.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/surface/suggest.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/tile_batch.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/addHEColumns.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/boundary_mask.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/brightfield.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/cell_features.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/channel_file.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/colormaps.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/dicom_wsi.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/display_curve.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/fast_png.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/file_transfer.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/fullConversion.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/gene_groups.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/image_pyramid.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/jit.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/label_kernels.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/label_overlay.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/layer_composite.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/mask_polygon.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/memory_pyramid.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/native_dialog.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/ngff_transform.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/ome_zarr.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/pixel_scale.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/smallestenclosingcircle.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/source_image.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/spatial_index.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/spatial_scene.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/tenx_matrix.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/tiff_series.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/tiffsurgeon.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/xenium_cells.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/utils/xenium_focus.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/axes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/brick_serve.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/bricks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/chunk_cache.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/measure.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/model.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/objects.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/pin.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/plane_view.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/planes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/prefetch.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/provenance.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/qc3d.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/reduce.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/section_cells.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/serve.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/sources/dicom.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/sources/memory.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/sources/ngff.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/sources/tiff.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/tracking.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/viewspec.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/windows.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/volume/zprofile.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server/warmup.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/server_cli.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/agent_hooks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/batch.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/cli.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/dataset.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/environment.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/flask_hooks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/identity.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/node_hooks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/performance.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/queue.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/redact.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/report.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/sample.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/telemetry/uploader.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/test.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/__init__.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/cli.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/model_files.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/propagate.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/sam.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/sam_backend.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/sam_video.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/sam_weights.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora/vision/segment.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora.egg-info/dependency_links.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora.egg-info/entry_points.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/plexora.egg-info/top_level.txt +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_architecture.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_artifacts.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_client_probes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_explain_cell.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_future_modality.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_gate_sampling.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_gating.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_gating_dataset.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_jobs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_policy_scopes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_registry.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_render.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_render_formats.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_render_layers.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_render_node.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_roi.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_routes_guard.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_scene.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_session.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_undo.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_agent_viewer_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_ai_chat_panel.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_ai_setup.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_ai_token.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_anndata_adapter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_api_dataset.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_api_store.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_app_router.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_app_shell.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_auth_token.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_bin_tiles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_blank_frame.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_boundary_mask.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_bridge_handoff.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_brightfield_detection.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_brightfield_pipeline.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_brightfield_reader.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_brightfield_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_canvas_hint_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_carry_over.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_cell_color_layer.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_cell_features.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_centroid_tiles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_channel_auto_revert.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_channel_fade_client.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_channel_names_modal.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_channel_names_sidecar.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_channel_names_upload.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_channel_overview.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_channel_rename_state.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_classify_columns.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_cli.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_colormaps.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_column_classifier_css.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_config_store.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_connect.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_connection_modal.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_consistency.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_core_tools.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_csv_adapter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_csv_xyz.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_data_location.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_database_model.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_datalayer_requests.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dataset_changed.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dataset_nav.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dataset_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dataset_strip.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_datasets_api.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_datasets_api_on_a_node.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_datasets_registry.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_derive_anndata_channel_names.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_desktop_cli.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_desktop_process.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_desktop_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_detect_data_type.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dicom_assembly.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dicom_detection.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dicom_pyramid.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dicom_registration.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_dicom_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_display_curve.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_docs_coverage.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_docs_docstrings.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_docs_envvars.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_docs_examples.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_docs_freshness.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_docs_signatures.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_file_transfer_node.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_gate_not_called_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_gating_hierarchy.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_gating_planes_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_gating_qc_exclusion.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_gating_replan.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_gcloud.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_hd_slider_domain.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_icon_names.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_image_pyramid.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_image_status.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_import_costs_nothing.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_import_entry_points.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_import_from_a_node.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_import_help.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_import_progressive.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_import_roles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_import_routes_json_errors.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_jupyter_viewer.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_label_gpu.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_label_gpu_parity.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_label_outlines.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_label_overlay.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_label_region.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_label_tile_lifecycle.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_launch_context.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_launch_state.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_channel_panel.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_draw.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_jobs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_manager.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_sources.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_spec.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_state.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_transform.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_layer_visibility.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_lifetime.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_load_progress.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_logging.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_magic_select_wording.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_magic_toolbar_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_manifest.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_marker_split.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_mask_without_table.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_mcp_http.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_mcp_profiles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_mcp_stdio.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_memory_adapter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_memory_datasource.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_memory_pyramid.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_metadata_columns.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_nan_tables.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_nav_shortcuts.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_nearest_cell.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_cell_features.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_direct_routing.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_disconnect.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_image.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_image_pyramid.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_image_type.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_label_volume.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_mask_status.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_new_formats.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_plane_index.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_reconnect.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_surfaces.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_table.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_node_warm_and_cache.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_notebook_env.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_notebook_mode.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_ome_zarr_reader.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_open_project.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_optional_segmentation.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_page_assets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_page_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_paths.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_pixel_scale.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_pixel_size.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_plane_index.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_plugin_css_boundary.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_plugin_layers.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_popover_menu.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_popover_portal.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_presets_nuclear.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_prime_hot_code.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_project_bind.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_project_edit_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_project_layer_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_project_record.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_project_title.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_artifacts_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_blur_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_candidate_noise.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_cell_rules.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_cells_frame.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_delegated_run_fixes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_detectors.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_digest.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_geojson_member.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_hover_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_live_run_fixes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_magic_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_magic_select.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_picker_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_provenance.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_refine.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_registration.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_registration_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_scan.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_score_fields.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_qc_units.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_reconnect.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_refresh_dataset.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_register_anndata_datasource.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_register_image_datasource.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_register_zarr_image_datasource.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_release_script.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_chunk_cache.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_connect.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_dicom.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_discovery.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_file.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_health.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_image_provider.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_image_status.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_jobs.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_labels.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_locator.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_picture.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_state.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_tables.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_remote_tiff.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_rename_channels.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_rename_channels_json.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_render_clipboard.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_requirements_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_resource_status_notice.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_roi_magic_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_scimappro_plugin.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_section_cells.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_segment_service_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_segmentation_mapping.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_segmentation_mode_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_segmentation_pyramid.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_segmentation_wait.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_selection.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_server_records.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_session_expiry.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_session_mirror.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_session_walltime.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_settings_page.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_settings_remotes_page.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_shared_roots.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_sidebar_scoping.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_single_image_import.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_slider.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_slider_css.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_source_image_core.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_spatial_index.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_spatial_scene.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_spatialdata_adapter.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_spatialdata_image_import.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_stack_contrast_client.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_staged_progress.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_subprocess_flags.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_surface_agent.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_surface_engine.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_surface_perf.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_table_correction.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_table_progress.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_agent.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_cli.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_client.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_config.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_dataset.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_hooks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_hooks_cost.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_node.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_privacy.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_queue.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_schema.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_telemetry_tiles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tenx_matrix.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_thumbnail_rgb.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tiff_hyperstack.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tiff_region.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tile_batch.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tile_colorize.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tile_url.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_toast.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tool_assets.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tool_cards.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tool_coexistence.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_tool_switching.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_transcript_cost.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_transcript_tiles.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_transfer_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_unreachable_node.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_updates.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_url_helpers.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_view_menu.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_view_snapshot_js.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_view_transform.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_view_transform_routes.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_viewer_color_by.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_viewer_error_state.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_viewer_loader.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_viewer_sessions.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_vision_sam.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_vision_segment.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_bricks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_bricks_serve.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_core.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_deep_stacks.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_dicom.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_labels.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_level_cache.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_magic.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_memory.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_pin.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_plane_read_ahead.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_remote.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_sections.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_volume_window_provisional.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_wide_features.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_xenium_cells.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_xenium_focus.py +0 -0
- {plexora-0.0.28 → plexora-0.0.29}/tests/test_zarr_write_retry.py +0 -0
plexora-0.0.29/LICENSE
ADDED
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
Plexora End User Licence Agreement
|
|
2
|
+
Version 1.0
|
|
3
|
+
SPDX-License-Identifier: LicenseRef-Plexora-EULA-1.0
|
|
4
|
+
|
|
5
|
+
Copyright (c) 2026 BioCognia. All rights reserved.
|
|
6
|
+
|
|
7
|
+
IMPORTANT: read this agreement before installing or using Plexora. By
|
|
8
|
+
installing, copying, or using the Software you agree to be bound by it. If you
|
|
9
|
+
do not agree, do not install or use the Software.
|
|
10
|
+
|
|
11
|
+
In short, for orientation only (the terms below are what govern):
|
|
12
|
+
|
|
13
|
+
- Plexora Free -- everything Plexora does without a licence -- may be used by
|
|
14
|
+
anyone, for any purpose, including commercial use, at no charge and with no
|
|
15
|
+
account.
|
|
16
|
+
- Plexora Pro is a paid subscription, per Seat and per term, bought for an
|
|
17
|
+
academic or a commercial Use Class at https://account.biocognia.com.
|
|
18
|
+
- Plugins are welcome: you may build and distribute them freely, and you own
|
|
19
|
+
what you write.
|
|
20
|
+
- You may not publish a modified copy or fork of Plexora itself.
|
|
21
|
+
|
|
22
|
+
--------------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
1. DEFINITIONS
|
|
25
|
+
|
|
26
|
+
"Software" means Plexora, including its source code, object code,
|
|
27
|
+
documentation, and bundled assets, as made available by the Licensor,
|
|
28
|
+
excluding Third-Party Components (Section 13).
|
|
29
|
+
|
|
30
|
+
"Licensor" ("we", "us") means BioCognia, 22 West Ave, Brockton, MA 02301,
|
|
31
|
+
USA.
|
|
32
|
+
|
|
33
|
+
"You" means the individual or legal entity exercising rights under this
|
|
34
|
+
agreement. If you are acting in the course of your employment or
|
|
35
|
+
engagement, "You" includes your employer or the entity engaging you.
|
|
36
|
+
|
|
37
|
+
"Free" means the Software used without a Licence Key: every feature that
|
|
38
|
+
runs without one.
|
|
39
|
+
|
|
40
|
+
"Licensed Features" means the features of the Software that run only under
|
|
41
|
+
a Licence Key that grants them: the features of Plexora Pro, and any
|
|
42
|
+
feature that is off by default and that the Licensor has enabled for your
|
|
43
|
+
Licence Key (Section 3).
|
|
44
|
+
|
|
45
|
+
"Licence Key" means a licence key, activation code, token, certificate, or
|
|
46
|
+
offline licence file issued through the Account Portal that enables
|
|
47
|
+
Licensed Features.
|
|
48
|
+
|
|
49
|
+
"Account Portal" means the BioCognia account platform at
|
|
50
|
+
https://account.biocognia.com, through which accounts, seats, devices and
|
|
51
|
+
purchases are managed.
|
|
52
|
+
|
|
53
|
+
"Subscription Term" means the period for which you have paid, as stated in
|
|
54
|
+
your order or in the Account Portal.
|
|
55
|
+
|
|
56
|
+
"Seat" means one named individual permitted to use Licensed Features under
|
|
57
|
+
your subscription.
|
|
58
|
+
|
|
59
|
+
"Use Class" means the class of use a subscription was bought for, academic
|
|
60
|
+
or commercial, as stated in your order.
|
|
61
|
+
|
|
62
|
+
"Noncommercial Purpose" means any use that is not a Commercial Use,
|
|
63
|
+
including academic research, classroom and educational use, personal
|
|
64
|
+
study, and use by a nonprofit research institute, public research
|
|
65
|
+
organization, charitable organization, or government body. Use by such
|
|
66
|
+
an organization is a Noncommercial Purpose regardless of the source of
|
|
67
|
+
its funding, including funding from a commercial entity, provided the
|
|
68
|
+
use itself is not a Commercial Use.
|
|
69
|
+
|
|
70
|
+
"Commercial Use" means use of the Software that is directed toward
|
|
71
|
+
commercial advantage or monetary compensation, including without
|
|
72
|
+
limitation: use by or on behalf of a for-profit entity in its business
|
|
73
|
+
operations; use to provide services to third parties for a fee; use to
|
|
74
|
+
develop, test, manufacture, validate, or support a product or service
|
|
75
|
+
that is sold or licensed for a fee; use in fee-for-service contract
|
|
76
|
+
research; and incorporating the Software or its output into a commercial
|
|
77
|
+
product or offering.
|
|
78
|
+
|
|
79
|
+
"Plugin" means software that extends the Software solely through the
|
|
80
|
+
Software's documented extension interfaces -- the `plexora.plugins`
|
|
81
|
+
entry point group and the public API exposed by the `plexora.api`
|
|
82
|
+
package -- and that does not include, embed, or require any modification
|
|
83
|
+
to the Software.
|
|
84
|
+
|
|
85
|
+
"Modified Version" means any copy of the Software in which any file has
|
|
86
|
+
been added, removed, altered, renamed, or replaced, and any work that is
|
|
87
|
+
a derivative work of the Software under copyright law. A Plugin is not
|
|
88
|
+
a Modified Version.
|
|
89
|
+
|
|
90
|
+
"Your Results" means data, figures, gates, regions, reports, and other
|
|
91
|
+
output you produce by running the Software on your own data.
|
|
92
|
+
|
|
93
|
+
2. FREE: GRANT FOR ANY PURPOSE
|
|
94
|
+
|
|
95
|
+
Subject to your compliance with this agreement, we grant you a
|
|
96
|
+
worldwide, royalty-free, non-exclusive, non-transferable, non-
|
|
97
|
+
sublicensable licence to:
|
|
98
|
+
|
|
99
|
+
(a) install, run, and use the Software as Free for any purpose,
|
|
100
|
+
including Commercial Use;
|
|
101
|
+
|
|
102
|
+
(b) reproduce and distribute verbatim, unmodified copies of the
|
|
103
|
+
Software, provided that each copy retains this agreement in full and
|
|
104
|
+
all copyright and attribution notices; and
|
|
105
|
+
|
|
106
|
+
(c) make modifications to your own copy of the Software, solely for your
|
|
107
|
+
own internal use -- for example to fix a bug, resolve a
|
|
108
|
+
compatibility problem in your environment, or debug an issue --
|
|
109
|
+
subject to Sections 5 and 6, and never to enable Licensed Features
|
|
110
|
+
without a Licence Key that grants them.
|
|
111
|
+
|
|
112
|
+
Free needs no account, no Licence Key, and no network connection. No
|
|
113
|
+
fee may be charged for the Software itself under this grant. Recovery of
|
|
114
|
+
actual media or bandwidth costs for distributing a verbatim copy is
|
|
115
|
+
permitted. Which features run as Free may change between versions of the
|
|
116
|
+
Software.
|
|
117
|
+
|
|
118
|
+
3. PRO: GRANT PER SEAT, TERM, AND USE CLASS
|
|
119
|
+
|
|
120
|
+
Subject to this agreement and to payment of the applicable fees, we grant
|
|
121
|
+
you a non-exclusive, non-transferable, non-sublicensable licence, during
|
|
122
|
+
the Subscription Term, to use the Licensed Features your Licence Key
|
|
123
|
+
grants:
|
|
124
|
+
|
|
125
|
+
(a) for the number of Seats you have purchased, each used by the one
|
|
126
|
+
named individual it is assigned to;
|
|
127
|
+
|
|
128
|
+
(b) on the number of devices per Seat stated in your plan or in the
|
|
129
|
+
Account Portal; and
|
|
130
|
+
|
|
131
|
+
(c) within the Use Class you purchased: a subscription bought for the
|
|
132
|
+
academic Use Class may be used for Noncommercial Purposes only; a
|
|
133
|
+
subscription bought for the commercial Use Class may be used for any
|
|
134
|
+
purpose, including Commercial Use.
|
|
135
|
+
|
|
136
|
+
Plexora Pro includes every Licensed Feature of the Software, Video Studio
|
|
137
|
+
among them, except the features that are off by default. A feature that
|
|
138
|
+
is off by default, such as External MCP access, is not part of Plexora Pro
|
|
139
|
+
or of a trial and is not sold; the Licensor may enable it for a Licence
|
|
140
|
+
Key, at its discretion, and once enabled it is used on the same terms as
|
|
141
|
+
Plexora Pro, for the Seats and the Subscription Term of that licence.
|
|
142
|
+
|
|
143
|
+
A trial licence grants Plexora Pro for the trial period stated when it
|
|
144
|
+
starts, to evaluate the Software, at no charge. It ends at the end of
|
|
145
|
+
that period and does not renew.
|
|
146
|
+
|
|
147
|
+
Everything else in the Software remains available to you as Free under
|
|
148
|
+
Section 2.
|
|
149
|
+
|
|
150
|
+
4. ACADEMIC USE CLASS
|
|
151
|
+
|
|
152
|
+
The academic Use Class is available to individuals at accredited
|
|
153
|
+
universities, teaching hospitals, government research institutes, and
|
|
154
|
+
other non-profit research organisations, for research and teaching that
|
|
155
|
+
is a Noncommercial Purpose. It does not cover work performed for, or
|
|
156
|
+
funded as a service to, a for-profit entity. We may verify eligibility,
|
|
157
|
+
for example by institutional email domain, and may require the commercial
|
|
158
|
+
Use Class where the use is a Commercial Use.
|
|
159
|
+
|
|
160
|
+
5. RESTRICTIONS
|
|
161
|
+
|
|
162
|
+
You may not:
|
|
163
|
+
|
|
164
|
+
(a) circumvent, disable, or interfere with the Software's licensing,
|
|
165
|
+
activation, or entitlement checks, or use a Licence Key you were not
|
|
166
|
+
issued;
|
|
167
|
+
|
|
168
|
+
(b) share a Licence Key or a Seat with anyone who is not the individual
|
|
169
|
+
that Seat is assigned to;
|
|
170
|
+
|
|
171
|
+
(c) make Licensed Features available to anyone who does not hold a Seat,
|
|
172
|
+
including through a hosted or network-accessible service;
|
|
173
|
+
|
|
174
|
+
(d) use a subscription bought for the academic Use Class for Commercial
|
|
175
|
+
Use; or
|
|
176
|
+
|
|
177
|
+
(e) remove or alter any proprietary notice in the Software.
|
|
178
|
+
|
|
179
|
+
6. NO DISTRIBUTION OF MODIFIED VERSIONS
|
|
180
|
+
|
|
181
|
+
You may not distribute, publish, share, host, sell, sublicense, or
|
|
182
|
+
otherwise make available to any third party any Modified Version, in
|
|
183
|
+
source or object form, in whole or in part. This includes publishing a
|
|
184
|
+
public fork of the Software's repository, distributing patched builds or
|
|
185
|
+
container images, redistributing the Software under a different name,
|
|
186
|
+
and making a Modified Version available to third parties as a hosted or
|
|
187
|
+
network-accessible service.
|
|
188
|
+
|
|
189
|
+
Modifications you make under Section 2(c) must remain within your own
|
|
190
|
+
organization. You are encouraged, but not required, to submit them to
|
|
191
|
+
the Licensor for possible inclusion upstream.
|
|
192
|
+
|
|
193
|
+
Nothing in this Section restricts your distribution of Plugins, which is
|
|
194
|
+
governed by Section 7.
|
|
195
|
+
|
|
196
|
+
7. PLUGINS
|
|
197
|
+
|
|
198
|
+
You may write, use, distribute, sell, and license Plugins without
|
|
199
|
+
restriction under this agreement, and without needing the Licensor's
|
|
200
|
+
permission.
|
|
201
|
+
|
|
202
|
+
You own the Plugins you write and may license them on any terms you
|
|
203
|
+
choose, including commercial terms. A Plugin is not a Modified Version
|
|
204
|
+
and is not subject to Section 6 or to any Use Class limitation in
|
|
205
|
+
Section 3, whether or not it is distributed together with the Software.
|
|
206
|
+
A Plugin that relies on Licensed Features may require its users to hold
|
|
207
|
+
their own Seat.
|
|
208
|
+
|
|
209
|
+
For the avoidance of doubt: linking to, importing, calling, subclassing,
|
|
210
|
+
or registering against the Software's documented extension interfaces
|
|
211
|
+
does not by itself make your Plugin a derivative work of the Software
|
|
212
|
+
for the purposes of this agreement.
|
|
213
|
+
|
|
214
|
+
Distributing the Software itself alongside your Plugin remains subject
|
|
215
|
+
to Section 2(b) -- the copy of the Software must be verbatim.
|
|
216
|
+
|
|
217
|
+
8. YOUR RESULTS AND ATTRIBUTION
|
|
218
|
+
|
|
219
|
+
Your Results are yours. We claim no ownership of them. When a Licence Key
|
|
220
|
+
expires or is revoked, nothing you made with the Software is deleted or
|
|
221
|
+
locked, and it stays readable and exportable as Free.
|
|
222
|
+
|
|
223
|
+
Any copy of the Software you distribute, and any publication or
|
|
224
|
+
presentation reporting results obtained using the Software, must retain
|
|
225
|
+
or provide, as applicable, the copyright notice above and a reference to
|
|
226
|
+
this agreement. Academic users are asked to cite the Software in
|
|
227
|
+
accordance with the citation information provided with it.
|
|
228
|
+
|
|
229
|
+
9. LICENCE ADMINISTRATION AND DATA
|
|
230
|
+
|
|
231
|
+
Free makes no licensing network call. Activating a Licence Key, and the
|
|
232
|
+
periodic renewal of an activated licence, send the Licence Key or
|
|
233
|
+
certificate, a hash that identifies the device, any name you give the
|
|
234
|
+
device, a coarse platform family, and the Software version. They never
|
|
235
|
+
send your data, file names, paths, or anything about what you are looking
|
|
236
|
+
at. We process this information to administer licences and to detect
|
|
237
|
+
licence sharing. Your account details are held by the Account Portal;
|
|
238
|
+
the Software itself never receives your password, email address, or
|
|
239
|
+
payment details. Setting BIOCOGNIA_OFFLINE=1 prevents every licensing
|
|
240
|
+
network call.
|
|
241
|
+
|
|
242
|
+
The Software's optional anonymous usage data is described in its
|
|
243
|
+
documentation, and can be switched off at any time with
|
|
244
|
+
"plexora telemetry off" or DO_NOT_TRACK=1.
|
|
245
|
+
|
|
246
|
+
10. FEES AND RENEWAL
|
|
247
|
+
|
|
248
|
+
Fees are charged per Seat per Subscription Term for the Use Class you
|
|
249
|
+
purchased, at the price stated at the time of purchase, and are
|
|
250
|
+
non-refundable except as required by law or by our published refund
|
|
251
|
+
policy. Fees exclude taxes, which are charged as required in your
|
|
252
|
+
jurisdiction.
|
|
253
|
+
|
|
254
|
+
A subscription renews for successive terms, unless cancelled, at the
|
|
255
|
+
price per Seat at which it was bought. Seats added to a subscription
|
|
256
|
+
during a term are charged at that same price per Seat, prorated for the
|
|
257
|
+
rest of the term; a reduction in Seats is credited against the next
|
|
258
|
+
renewal and is not refunded. We may change the prices of new
|
|
259
|
+
subscriptions at any time; a price change never applies mid-term.
|
|
260
|
+
|
|
261
|
+
11. TERM AND TERMINATION
|
|
262
|
+
|
|
263
|
+
Section 2 applies for as long as you comply with this agreement. Section
|
|
264
|
+
3 applies for the Subscription Term and each renewal of it. You may
|
|
265
|
+
cancel a subscription at any time, effective at the end of the current
|
|
266
|
+
term.
|
|
267
|
+
|
|
268
|
+
When a subscription expires, Licensed Features may continue for a grace
|
|
269
|
+
period stated in your licence and then stop; the Software continues as
|
|
270
|
+
Free.
|
|
271
|
+
|
|
272
|
+
If you breach any term, your rights under this agreement terminate
|
|
273
|
+
automatically. If the breach is your first and you cure it in full, and
|
|
274
|
+
take reasonable steps to correct its effects, within 30 days of
|
|
275
|
+
receiving written notice from the Licensor, your rights are reinstated
|
|
276
|
+
as of the date of cure. We may revoke a Licence Key immediately in the
|
|
277
|
+
case of a chargeback, fraud, or a breach of Section 5(a) or 5(b).
|
|
278
|
+
|
|
279
|
+
On termination of your rights under Section 3 you must stop using
|
|
280
|
+
Licensed Features. On termination of your rights under Section 2 you
|
|
281
|
+
must cease all use of the Software and destroy all copies in your
|
|
282
|
+
possession or control. Sections 6, 8, 12, 13, 15, 16, and 17 survive
|
|
283
|
+
termination. Termination does not affect any licence you or anyone else
|
|
284
|
+
holds in a Plugin.
|
|
285
|
+
|
|
286
|
+
12. RESERVATION OF RIGHTS; NO TRADEMARK LICENCE
|
|
287
|
+
|
|
288
|
+
All rights not expressly granted are reserved by the Licensor. This
|
|
289
|
+
agreement does not grant permission to use the trade names, trademarks,
|
|
290
|
+
service marks, product names, or logos of the Licensor, including the
|
|
291
|
+
name "Plexora", except as required for reasonable and customary
|
|
292
|
+
descriptive use in reproducing the notices required by this agreement.
|
|
293
|
+
|
|
294
|
+
This agreement grants no patent rights.
|
|
295
|
+
|
|
296
|
+
13. THIRD-PARTY COMPONENTS
|
|
297
|
+
|
|
298
|
+
The Software is distributed with components authored by third parties
|
|
299
|
+
and licensed under their own terms. Those components remain governed
|
|
300
|
+
exclusively by their own licenses, which are unaffected by this
|
|
301
|
+
agreement; in particular, nothing in Section 6 restricts any right you
|
|
302
|
+
hold in a Third-Party Component under that component's own license.
|
|
303
|
+
Known Third-Party Components include:
|
|
304
|
+
|
|
305
|
+
- plexora/server/utils/smallestenclosingcircle.py -- Copyright (c) 2020
|
|
306
|
+
Project Nayuki, LGPL-3.0-or-later.
|
|
307
|
+
- the contents of plexora/client/external/ -- see the notices in that
|
|
308
|
+
directory.
|
|
309
|
+
- third-party Python and JavaScript dependencies installed alongside the
|
|
310
|
+
Software, each under its own license.
|
|
311
|
+
|
|
312
|
+
Where a Third-Party Component's license conflicts with a term of this
|
|
313
|
+
agreement as applied to that component, that component's license
|
|
314
|
+
controls for that component.
|
|
315
|
+
|
|
316
|
+
14. FAIR USE AND MANDATORY RIGHTS
|
|
317
|
+
|
|
318
|
+
This agreement does not limit any right you have under applicable law
|
|
319
|
+
that cannot be limited by agreement, including fair use, fair dealing,
|
|
320
|
+
and any statutory right to decompile or modify the Software for
|
|
321
|
+
interoperability or error correction.
|
|
322
|
+
|
|
323
|
+
15. NO WARRANTY
|
|
324
|
+
|
|
325
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
326
|
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
327
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND
|
|
328
|
+
NONINFRINGEMENT.
|
|
329
|
+
|
|
330
|
+
THE SOFTWARE IS A RESEARCH TOOL. IT IS NOT A MEDICAL DEVICE AND IS NOT
|
|
331
|
+
INTENDED, VALIDATED, OR APPROVED FOR CLINICAL DIAGNOSIS, TREATMENT, OR
|
|
332
|
+
ANY OTHER USE INVOLVING PATIENT CARE. YOU ARE RESPONSIBLE FOR VALIDATING
|
|
333
|
+
ANY RESULT BEFORE RELYING ON IT.
|
|
334
|
+
|
|
335
|
+
16. LIMITATION OF LIABILITY
|
|
336
|
+
|
|
337
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL THE LICENSOR
|
|
338
|
+
OR ANY CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY,
|
|
339
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT
|
|
340
|
+
OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
341
|
+
THE SOFTWARE, INCLUDING ANY INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
342
|
+
CONSEQUENTIAL DAMAGES, OR ANY LOSS OF DATA, PROFITS, OR RESEARCH
|
|
343
|
+
RESULTS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
344
|
+
|
|
345
|
+
OUR TOTAL AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT
|
|
346
|
+
SHALL NOT EXCEED THE FEES YOU PAID IN THE TWELVE MONTHS PRECEDING THE
|
|
347
|
+
EVENT GIVING RISE TO THE CLAIM.
|
|
348
|
+
|
|
349
|
+
Nothing in this agreement excludes liability that cannot lawfully be
|
|
350
|
+
excluded.
|
|
351
|
+
|
|
352
|
+
17. GENERAL
|
|
353
|
+
|
|
354
|
+
This agreement is the entire agreement between us regarding the Software
|
|
355
|
+
and supersedes any prior understanding. If any provision is held
|
|
356
|
+
unenforceable, that provision shall be enforced to the maximum extent
|
|
357
|
+
permissible and the remaining provisions shall remain in full force and
|
|
358
|
+
effect. Our failure to enforce a provision is not a waiver of it. You may
|
|
359
|
+
not assign this agreement without our written consent; a transfer of a
|
|
360
|
+
Seat or a subscription between individuals or entities may be arranged
|
|
361
|
+
through the Account Portal or by contacting us.
|
|
362
|
+
|
|
363
|
+
18. LICENSOR AND CONTACT
|
|
364
|
+
|
|
365
|
+
Licensor: BioCognia, 22 West Ave, Brockton, MA 02301, USA
|
|
366
|
+
Governing law: the laws of the Commonwealth of Massachusetts, USA
|
|
367
|
+
|
|
368
|
+
Licensing: support@biocognia.com
|
|
369
|
+
Accounts: https://account.biocognia.com
|
|
370
|
+
Web: https://nirmallab.github.io/plexora/
|
|
371
|
+
|
|
372
|
+
--------------------------------------------------------------------------
|
|
373
|
+
|
|
374
|
+
Earlier versions: releases of Plexora made before this agreement was first
|
|
375
|
+
shipped were released under the Plexora Academic License 1.0. Those releases
|
|
376
|
+
remain available under that licence; this agreement governs the releases that
|
|
377
|
+
ship it.
|
plexora-0.0.29/PKG-INFO
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: plexora
|
|
3
|
+
Version: 0.0.29
|
|
4
|
+
Summary: OpenSeadragon-based cellular image viewing and analysis tool.
|
|
5
|
+
Author-email: BioCognia <support@biocognia.com>
|
|
6
|
+
License-Expression: LicenseRef-Plexora-EULA-1.0
|
|
7
|
+
Requires-Python: <3.14,>=3.12
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Dist: aiohttp>=3.9
|
|
11
|
+
Requires-Dist: anndata>=0.10
|
|
12
|
+
Requires-Dist: biocognia<0.2,>=0.1.1
|
|
13
|
+
Requires-Dist: Flask>=3.1
|
|
14
|
+
Requires-Dist: fsspec>=2024.12
|
|
15
|
+
Requires-Dist: h5py>=3.16.0
|
|
16
|
+
Requires-Dist: hdf5plugin>=5
|
|
17
|
+
Requires-Dist: imagecodecs
|
|
18
|
+
Requires-Dist: itsdangerous>=2.2
|
|
19
|
+
Requires-Dist: Jinja2>=3.1
|
|
20
|
+
Requires-Dist: numba>=0.61
|
|
21
|
+
Requires-Dist: numpy>=2.0
|
|
22
|
+
Requires-Dist: ome-types>=0.6.3
|
|
23
|
+
Requires-Dist: opencv-python-headless>=5.0.0.93
|
|
24
|
+
Requires-Dist: openpyxl>=3.1
|
|
25
|
+
Requires-Dist: onnxruntime<2,>=1.17
|
|
26
|
+
Requires-Dist: orjson>=3.11
|
|
27
|
+
Requires-Dist: pandas>=3.0.5
|
|
28
|
+
Requires-Dist: Pillow>=10.4
|
|
29
|
+
Requires-Dist: platformdirs>=4
|
|
30
|
+
Requires-Dist: polars>=1.43
|
|
31
|
+
Requires-Dist: pydantic<2.14,>=2.13
|
|
32
|
+
Requires-Dist: reportlab>=5.0.1
|
|
33
|
+
Requires-Dist: s3fs>=2024.12
|
|
34
|
+
Requires-Dist: scikit-image
|
|
35
|
+
Requires-Dist: scikit-learn>=1.9
|
|
36
|
+
Requires-Dist: scipy
|
|
37
|
+
Requires-Dist: shapely>=2.1.2
|
|
38
|
+
Requires-Dist: spatialdata>=0.8.0
|
|
39
|
+
Requires-Dist: spatialagents<0.2,>=0.1
|
|
40
|
+
Requires-Dist: threadpoolctl>=3.6.0
|
|
41
|
+
Requires-Dist: tifffile>=2026.7.31
|
|
42
|
+
Requires-Dist: urllib3>=2.0
|
|
43
|
+
Requires-Dist: waitress
|
|
44
|
+
Requires-Dist: Werkzeug>=3.1
|
|
45
|
+
Requires-Dist: zarr>=3
|
|
46
|
+
Provides-Extra: jupyter
|
|
47
|
+
Requires-Dist: ipython; extra == "jupyter"
|
|
48
|
+
Requires-Dist: jupyter-server-proxy; extra == "jupyter"
|
|
49
|
+
Provides-Extra: dev
|
|
50
|
+
Requires-Dist: pytest; extra == "dev"
|
|
51
|
+
Requires-Dist: pytest-randomly>=4.1.0; extra == "dev"
|
|
52
|
+
Provides-Extra: spatial
|
|
53
|
+
Requires-Dist: pyarrow>=14; extra == "spatial"
|
|
54
|
+
Provides-Extra: remote
|
|
55
|
+
Requires-Dist: gcsfs>=2024.12; extra == "remote"
|
|
56
|
+
Requires-Dist: adlfs>=2024.12; extra == "remote"
|
|
57
|
+
Requires-Dist: wsidicom>=0.35; extra == "remote"
|
|
58
|
+
Requires-Dist: pydicom>=3; extra == "remote"
|
|
59
|
+
Requires-Dist: universal-pathlib>=0.2; extra == "remote"
|
|
60
|
+
Provides-Extra: wsi
|
|
61
|
+
Requires-Dist: openslide-python>=1.3; extra == "wsi"
|
|
62
|
+
Requires-Dist: openslide-bin>=4.0; extra == "wsi"
|
|
63
|
+
Requires-Dist: wsidicom>=0.35; extra == "wsi"
|
|
64
|
+
Requires-Dist: pydicom>=3; extra == "wsi"
|
|
65
|
+
Provides-Extra: ai
|
|
66
|
+
Requires-Dist: mcp<3,>=2.2; extra == "ai"
|
|
67
|
+
Requires-Dist: pyyaml>=6; extra == "ai"
|
|
68
|
+
Provides-Extra: bridge
|
|
69
|
+
Requires-Dist: spatialbridge<0.2,>=0.1; extra == "bridge"
|
|
70
|
+
Provides-Extra: volume3d
|
|
71
|
+
Requires-Dist: torch>=2.5.1; extra == "volume3d"
|
|
72
|
+
Requires-Dist: sam2>=1.1; extra == "volume3d"
|
|
73
|
+
Provides-Extra: segment3d
|
|
74
|
+
Requires-Dist: cellpose>=4; extra == "segment3d"
|
|
75
|
+
Requires-Dist: torch>=2.5.1; extra == "segment3d"
|
|
76
|
+
Provides-Extra: video
|
|
77
|
+
Requires-Dist: imageio-ffmpeg>=0.5; extra == "video"
|
|
78
|
+
Dynamic: license-file
|
|
79
|
+
|
|
80
|
+
# Plexora
|
|
81
|
+
|
|
82
|
+

|
|
83
|
+
|
|
84
|
+
Plexora is a viewer for multiplexed imaging and spatial transcriptomics. It
|
|
85
|
+
opens large images where they are, without converting or copying them, draws
|
|
86
|
+
segmentation masks and cell tables over them, and runs on a laptop, in a
|
|
87
|
+
notebook, on a remote workstation or on an HPC cluster.
|
|
88
|
+
|
|
89
|
+
**Documentation: https://nirmallab.github.io/plexora/**
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+
## Install
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pip install plexora
|
|
97
|
+
plexora
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
`plexora` starts the viewer and opens it in your browser. Python 3.12 or 3.13
|
|
101
|
+
is required. A desktop app for macOS, Windows and Linux is on the
|
|
102
|
+
[releases page](https://github.com/nirmallab/plexora/releases). See
|
|
103
|
+
[Installation](https://nirmallab.github.io/plexora/docs/getting-started/installation/).
|
|
104
|
+
|
|
105
|
+
## Quick start
|
|
106
|
+
|
|
107
|
+
In the app, choose **File → Import Sample…** and pick an image, a folder of
|
|
108
|
+
files, or a Xenium or Visium run. From Python:
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
import plexora
|
|
112
|
+
|
|
113
|
+
name = plexora.import_sample("slide.ome.tif", "slide_mask.tif", "cells.csv", wait=True)
|
|
114
|
+
plexora.view(name) # in a notebook, shows the viewer inline
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
More in the [quick start](https://nirmallab.github.io/plexora/docs/getting-started/quick-start/).
|
|
118
|
+
|
|
119
|
+
## What it reads
|
|
120
|
+
|
|
121
|
+
- Multiplexed images: OME-TIFF, TIFF, QPTIFF, OME-Zarr (local, `https://` or `s3://`)
|
|
122
|
+
- Brightfield whole-slide images: SVS, NDPI, SCN, BIF, MRXS, DICOM
|
|
123
|
+
- 10x Genomics Xenium, Visium and Visium HD output folders
|
|
124
|
+
- SpatialData stores and AnnData tables; CSV, TSV and Parquet cell tables
|
|
125
|
+
- Segmentation masks (label images) and cell boundary polygons
|
|
126
|
+
|
|
127
|
+
The full list is in [Supported formats](https://nirmallab.github.io/plexora/docs/reference/supported-formats/).
|
|
128
|
+
|
|
129
|
+
## Where to go next
|
|
130
|
+
|
|
131
|
+
| I want to | Read |
|
|
132
|
+
| --- | --- |
|
|
133
|
+
| Use the viewer and its tools | [Viewer](https://nirmallab.github.io/plexora/docs/viewer/navigation/), [Tools](https://nirmallab.github.io/plexora/docs/plugins/) |
|
|
134
|
+
| Script it from Python or a notebook | [Python](https://nirmallab.github.io/plexora/docs/python/), [Notebooks](https://nirmallab.github.io/plexora/docs/notebooks/) |
|
|
135
|
+
| Look at data on a remote machine or cluster | [Remote and HPC](https://nirmallab.github.io/plexora/docs/remote/) |
|
|
136
|
+
| Write a plugin | [Plugin development](https://nirmallab.github.io/plexora/docs/plugin-development/) |
|
|
137
|
+
| Look up a function or command | [Python API](https://nirmallab.github.io/plexora/docs/python-api/), [Command line](https://nirmallab.github.io/plexora/docs/cli/) |
|
|
138
|
+
|
|
139
|
+
## Developing Plexora
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
git clone https://github.com/nirmallab/plexora.git
|
|
143
|
+
cd plexora
|
|
144
|
+
pip install -e ".[dev]"
|
|
145
|
+
python -m pytest -q -p no:randomly
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
See [Development setup](https://nirmallab.github.io/plexora/docs/contributing/development-setup/)
|
|
149
|
+
and, for the documentation site in `website/`, [CONTRIBUTING_DOCS.md](./CONTRIBUTING_DOCS.md).
|
|
150
|
+
Engineering notes live in [docs/internal/](./docs/internal/).
|
|
151
|
+
|
|
152
|
+
## Usage data
|
|
153
|
+
|
|
154
|
+
Plexora can send **anonymous usage counts** -- which features and plugins are
|
|
155
|
+
used, how long tiles take to draw, which kinds of errors occur -- so we know
|
|
156
|
+
what to improve. It never sends file, project, marker or gene names, cell
|
|
157
|
+
data, coordinates, usernames, machine names, paths, prompts or anything typed
|
|
158
|
+
into a tool; every field it may send is on an allowlist
|
|
159
|
+
(`plexora/telemetry/schema.py`). Everything is queued on this machine first,
|
|
160
|
+
nothing in Plexora waits for it, and it works air-gapped exactly as before.
|
|
161
|
+
|
|
162
|
+
It is on by default and a notice says so the first time. Any one of these turns
|
|
163
|
+
it off:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
plexora telemetry off # or: Settings > Usage data
|
|
167
|
+
export DO_NOT_TRACK=1 # honoured everywhere
|
|
168
|
+
export PLEXORA_TELEMETRY=off
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`plexora telemetry preview` prints exactly what the next upload would contain,
|
|
172
|
+
and `plexora telemetry status` says which of the above is in force.
|
|
173
|
+
[docs/TELEMETRY.md](./docs/TELEMETRY.md) has the details.
|
|
174
|
+
|
|
175
|
+
## Free and Pro
|
|
176
|
+
|
|
177
|
+
**Free** is everything described above: every image, table and modality, every
|
|
178
|
+
tool's manual features, remote, HPC and notebook viewing, and export. It needs no
|
|
179
|
+
account, no activation and no network, it never asks, and anyone may use it for
|
|
180
|
+
any purpose, commercial work included.
|
|
181
|
+
|
|
182
|
+
**Pro** adds Plexora AI (guided gating and QC sessions an agent runs with you,
|
|
183
|
+
the evidence and analysis tools it uses, and the chat), Plexora 3D (analysing
|
|
184
|
+
z-stacks and time series beyond viewing them), spatial transcriptomics
|
|
185
|
+
(Xenium, Visium and Visium HD) and Video Studio (videos made from the viewer).
|
|
186
|
+
A 30-day trial is everything in Pro. External MCP access, for an outside coding
|
|
187
|
+
agent, is off by default and not part of Pro; an administrator can turn it on
|
|
188
|
+
for a licence. Pro is a yearly subscription per seat, at an academic or a
|
|
189
|
+
commercial price, and both are bought online from the
|
|
190
|
+
[pricing page](https://nirmallab.github.io/plexora/pricing/): one seat is an
|
|
191
|
+
individual account, two or more make a team. Licences, devices and AI credits
|
|
192
|
+
are managed on the BioCognia platform, which Plexora shares with SCIMAP Pro: you
|
|
193
|
+
sign in at [account.biocognia.com](https://account.biocognia.com), never in
|
|
194
|
+
Plexora. In Settings > License, **Connect this device** shows a short code and
|
|
195
|
+
opens the page to approve it; or, from a terminal:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
plexora license status
|
|
199
|
+
plexora license activate # this computer: prints a code to approve in the browser
|
|
200
|
+
plexora license activate BIOC-XXXX-XXXX-XXXX-XXXX # with your licence key from the portal, no browser needed
|
|
201
|
+
plexora license activate --cluster --name O2 # a whole HPC cluster, once, from a login node
|
|
202
|
+
plexora license install lab.bioc # an offline licence file
|
|
203
|
+
plexora license trial # 30 days of Pro
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
A licence check sends the licence certificate and a hash that identifies the
|
|
207
|
+
device. It never sends your data, file names, machine names or anything
|
|
208
|
+
about what you are looking at. When a licence ends, everything Free keeps
|
|
209
|
+
working, and every gate, ROI, figure and export you made, with or without AI,
|
|
210
|
+
stays yours and editable. AI model providers your agent uses bill you
|
|
211
|
+
separately. [docs/LICENSING.md](./docs/LICENSING.md) has the details.
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
Plexora is licensed by BioCognia under the **Plexora End User Licence Agreement
|
|
216
|
+
1.0** (`LicenseRef-Plexora-EULA-1.0`, see [LICENSE](./LICENSE)). It is **not** an
|
|
217
|
+
open source license. In short:
|
|
218
|
+
|
|
219
|
+
| | |
|
|
220
|
+
|---|---|
|
|
221
|
+
| Plexora Free, for any purpose: research, teaching, personal or commercial | ✅ Free, no account or licence key |
|
|
222
|
+
| Plexora Pro for academic research and teaching | Per seat, per year, at the academic price |
|
|
223
|
+
| Plexora Pro for commercial use | Per seat, per year, at the commercial price |
|
|
224
|
+
| Redistributing Plexora unmodified, with the licence attached | ✅ Allowed |
|
|
225
|
+
| Patching your own copy to fix a bug or a compatibility problem | ✅ Allowed |
|
|
226
|
+
| Publishing a fork, a patched build, or a renamed version | ❌ Not allowed |
|
|
227
|
+
|
|
228
|
+
Prices, and Buy for either use class, are on the
|
|
229
|
+
[pricing page](https://nirmallab.github.io/plexora/pricing/); a subscription
|
|
230
|
+
renews at the price it was bought at.
|
|
231
|
+
|
|
232
|
+
**Plugins are a deliberate exception.** Anything you build against the documented
|
|
233
|
+
extension interfaces — the `plexora.plugins` entry point group and the `plexora.api`
|
|
234
|
+
package — is yours. You may distribute and sell your plugin under whatever license
|
|
235
|
+
you like, and you do not need our permission. Extending Plexora through the plugin
|
|
236
|
+
API is the supported way to change what it does; editing its source is not.
|
|
237
|
+
|
|
238
|
+
For licensing questions, contact support@biocognia.com.
|
|
239
|
+
|
|
240
|
+
Some bundled components carry their own licenses, which are unaffected by the above —
|
|
241
|
+
see section 13 of [LICENSE](./LICENSE).
|