{"schema_version":1,"modules":[{"module":"algofly.artifacts","classes":[{"name":"ProjectArtifacts","documentation":"","methods":[{"name":"medical","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"list","parameters":"self, *, offset=0, limit=100, search='', run_id=''","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"upload","parameters":"self, path: str | Path, *, description='', idempotency_key=None","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"get","parameters":"self, artifact_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"download","parameters":"self, artifact_id, destination: str | Path","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"inspect","parameters":"self, artifact_id","returns":null,"documentation":"Read private ONNX graph metadata without executing model code.","property":false,"staticmethod":false,"classmethod":false},{"name":"delete","parameters":"self, artifact_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"import_raster","parameters":"self, artifact_id, *, wait=False, timeout=900, retry=False","returns":null,"documentation":"Move an owned, unlocked project TIFF upload into project image data.\n\nThe staging artifact entry is consumed after publication; original bytes\nstay unchanged. Account Library and protected artifacts cannot be moved.","property":false,"staticmethod":false,"classmethod":false},{"name":"raster_import","parameters":"self, import_id","returns":null,"documentation":"Read an import's durable status without scheduling new work.","property":false,"staticmethod":false,"classmethod":false},{"name":"cancel_raster_import","parameters":"self, import_id","returns":null,"documentation":"Cancel unpublished work; keep the original staging artifact.","property":false,"staticmethod":false,"classmethod":false}]},{"name":"AccountArtifacts","documentation":"Owner-only Library, independent uploads and opt-in project retention.","methods":[{"name":"medical","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"list","parameters":"self, *, offset=0, limit=100, search=''","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"upload","parameters":"self, path: str | Path, *, billing_workspace_id, description='', idempotency_key=None","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"get","parameters":"self, artifact_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"update","parameters":"self, artifact_id, *, protected=None, billing_workspace_id=None, description=None","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"protect","parameters":"self, artifact_id, *, billing_workspace_id=None","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"unprotect","parameters":"self, artifact_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"retention_status","parameters":"self, artifact_id","returns":null,"documentation":"Inspect a retained file's transfer receipts without retrying a copy.","property":false,"staticmethod":false,"classmethod":false},{"name":"download","parameters":"self, artifact_id, destination: str | Path","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"inspect","parameters":"self, artifact_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"delete","parameters":"self, artifact_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false}]}]},{"module":"algofly.client","classes":[{"name":"AlgoFly","documentation":"Entry point for the AlgoFly SDK.\n\nThe object model intentionally mirrors Roboflow's common flow:\nclient -> workspace -> project -> version.","methods":[{"name":"verify","parameters":"self","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"artifacts","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"inference","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"workers","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"training","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"workspaces","parameters":"self","returns":"list[Workspace]","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"workspace","parameters":"self, workspace_id: str | None=None","returns":"Workspace","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"create_workspace","parameters":"self, name: str, slug: str, description: str='', logo: dict | None=None","returns":"Workspace","documentation":"","property":false,"staticmethod":false,"classmethod":false}]}]},{"module":"algofly.inference","classes":[{"name":"Inference","documentation":"","methods":[{"name":"capabilities","parameters":"self, project_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"defaults","parameters":"self, project_id, source_artifact_id","returns":null,"documentation":"Read source-resolved settings without executing or charging inference.","property":false,"staticmethod":false,"classmethod":false},{"name":"start","parameters":"self, *, project_id, source_artifact_id, image, worker_id=None, gpu_ids=None, parser='auto', normalization='0_1', resize_mode='auto', input_size=..., confidence=0.25, iou=0.45, max_predictions=None, idempotency_key=None, cpu_time_limit_seconds=None, det_threshold=None, box_threshold=None, unclip_ratio=None, max_candidates=None, pose_visibility_confidence=None, pose_max_candidates=None, pose_input_shape=None","returns":null,"documentation":"Run one image without changing its source or dataset annotations.\n\nONNX uses the advertised image signatures/parsers. Tracked Ultralytics\ncheckpoints require a worker and support detection, classification,\ninstance masks, 2D pose and OBB. Results use normalized boxes/polygons\nand x/y keypoints with confidence, not 3D world coordinates. Masks are\noriginal-image COCO compressed RLE (holes retained); pose results carry\nthe tracked keypoint order, names, edges, flip pairs and version.\nNone selects a task/pixel-budget default for max_predictions; explicit\nvalues exceeding a model task's budget are rejected rather than reset.\nTracked DINOv3 ONNX conversions resolve classification/stretch256\nautomatically and accept RGB/255 only; ImageNet normalization is embedded.\nTracked PatchCore ONNX uses anomaly/stretch256 and RGB/255 defaults.\nTracked DINOv3 metric ONNX resolves raw384-vector/stretch256 defaults;\nImageNet and L2 normalization are embedded. This single-image API uses\nbatch1 even when the exported graph supports a dynamic batch axis.\nIts raw score is uncalibrated distance, not probability; results include\na bounded raw map grid and a per-image-scaled PNG visualization.\ncpu_time_limit_seconds optionally selects a DataHub CPU execution deadline\nfrom 1 to 60 seconds; omit it for the advertised default. It is unavailable\nwith a registered worker. A smaller deadline reserves less included time.\nOCR detector probability maps use parser='ocr_detection',\nresize_mode='ocr_stride32_top_left', RGB/255 with graph normalization.\nTracked conversions resolve their static input side and saved detector\nthresholds automatically. Four optional detector settings are sent only\nwhen provided; confidence/iou must retain their defaults for OCR.\nReviewed tracked pose ONNX resolves automatically to pose keypoints,\nRGB/255 and letterbox; parser='ultralytics_pose' is also accepted.\npose_input_shape=[height, width] defaults to the\ntracked conversion shape; only dynamic models accept shape overrides.\npose_visibility_confidence and pose_max_candidates are optional overrides.\nPosition-only keypoints report confidence/visibility as None, not 0 or 1.\nReviewed tracked pose TensorRT engines require an eligible GPU worker\nand the exact physical GPU UUID recorded at conversion. Query defaults()\nand capabilities() before selecting hardware; no CPU fallback is used.\nStatic engine shapes are fixed; dynamic overrides must fit the saved\noptimization profile. The worker verifies its runtime before loading.\nOmitted input_size is not sent: the server resolves model-specific\ndimensions or the generic 640 default without an extra discovery request.\nAn explicitly supplied input_size is preserved and rejected for pose by\nthe server; use pose_input_shape instead. defaults() reads the resolved\nmodel settings without executing inference.","property":false,"staticmethod":false,"classmethod":false},{"name":"get","parameters":"self, run_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"result","parameters":"self, run_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"download_image","parameters":"self, run_id, destination","returns":null,"documentation":"Download retained original input bytes without executing inference.\n\nProject authorization and retained storage are required. The worker and\noriginal model need not be available. This GET does not queue compute,\nand preserves the uploaded bytes, including EXIF metadata.","property":false,"staticmethod":false,"classmethod":false},{"name":"wait","parameters":"self, run_id, *, timeout=180, poll_interval=1","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false}]}]},{"module":"algofly.medical","classes":[{"name":"MedicalArtifacts","documentation":"","methods":[{"name":"metadata","parameters":"self, artifact_id","returns":null,"documentation":"Technical metadata and hashed series identity; no raw patient tags.","property":false,"staticmethod":false,"classmethod":false},{"name":"frame","parameters":"self, artifact_id, frame_index, destination: str | Path, *, center=None, width=None, function='LINEAR', max_edge=1024","returns":null,"documentation":"Download one display PNG; source frame indices start at zero.\n\nDisplay pixels are windowed; original stored values remain in the DICOM.\nSupply both center and width to override the source VOI/default window.","property":false,"staticmethod":false,"classmethod":false}]}]},{"module":"algofly.medical_sources","classes":[{"name":"MedicalSources","documentation":"","methods":[{"name":"list","parameters":"self, *, page_number=0, page_size=50, search=''","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"get","parameters":"self, source_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"import_artifact","parameters":"self, artifact_id, *, start=0, stop_exclusive=None, stride=1, wait=False, timeout=900, retry=False","returns":null,"documentation":"Move an owned unlocked project DICOM artifact into annotation sources.\n\nFrame indices are zero-based and stop is exclusive; None selects through\nthe source's final frame. Original pixels remain unchanged and are billed\nonce; each registered frame counts toward the project image quota.\nWaiting also returns on recovery_required; inspect the error and use\nretry_import(result['_id']) to retry the immutable selection.","property":false,"staticmethod":false,"classmethod":false},{"name":"add_frames","parameters":"self, source_id, *, start=0, stop_exclusive=None, stride=1, wait=False, timeout=900","returns":null,"documentation":"Register additional source frames; existing frame identities are reused.","property":false,"staticmethod":false,"classmethod":false},{"name":"import_status","parameters":"self, import_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"cancel_import","parameters":"self, import_id","returns":null,"documentation":"Cancel preparation; publication is a recoverable noncancellable phase.","property":false,"staticmethod":false,"classmethod":false},{"name":"retry_import","parameters":"self, import_id, *, wait=False, timeout=900","returns":null,"documentation":"Retry the stored immutable selection without changing its configuration.","property":false,"staticmethod":false,"classmethod":false},{"name":"delete","parameters":"self, source_id, *, wait=False, timeout=900","returns":null,"documentation":"Explicitly delete original source and its frames/annotations.\n\nRemoving an individual image does not implicitly remove its retained\nsource. Materialized dataset-version snapshots remain independent.\nDeletion is asynchronous; wait=True polls the returned durable job.","property":false,"staticmethod":false,"classmethod":false},{"name":"download","parameters":"self, source_id, destination","returns":null,"documentation":"Stream the immutable original; full project data permission is required.","property":false,"staticmethod":false,"classmethod":false}]}]},{"module":"algofly.pose","classes":[{"name":"ProjectSkeletons","documentation":"","methods":[{"name":"list","parameters":"self","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"create","parameters":"self, name, keypoints, edges=(), flip_pairs=(), previous_id=None","returns":null,"documentation":"Create an immutable version. Indices in edges/flip_pairs are zero based.","property":false,"staticmethod":false,"classmethod":false}]}]},{"module":"algofly.resources","classes":[{"name":"Workspace","documentation":"","methods":[{"name":"storage_summary","parameters":"self, *, refresh=False","returns":"dict","documentation":"Read the last confirmed storage and progress; explicitly refresh to scan.","property":false,"staticmethod":false,"classmethod":false},{"name":"cancel_storage_scan","parameters":"self, scan_id: str","returns":"dict","documentation":"Cancel only the named observation; account files remain unchanged.","property":false,"staticmethod":false,"classmethod":false},{"name":"projects","parameters":"self","returns":"list['Project']","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"project","parameters":"self, project_id: str","returns":"'Project'","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"create_project","parameters":"self, name: str, description: str=''","returns":"'Project'","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"upload_dataset","parameters":"self, dataset_path: str | Path, **kwargs","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false}]},{"name":"Project","documentation":"","methods":[{"name":"status","parameters":"self","returns":"str","documentation":"Last operational status snapshot; refresh() reads current permissions/status.","property":true,"staticmethod":false,"classmethod":false},{"name":"clone_status","parameters":"self","returns":"str | None","documentation":"Last clone phase, or None for a project without a clone operation.","property":true,"staticmethod":false,"classmethod":false},{"name":"clone","parameters":"self, name: str, *, target_workspace_id: str | None=None, description: str | None=None, wait: bool=False, timeout: float=600, poll_interval: float=1","returns":"'Project'","documentation":"Submit once and return the new project. None description copies the source description.\n\nwait=True polls lightweight status and raises ProjectCloneFailed or\nProjectCloneTimeout retaining .project. HTTP errors preserve response\nand structured message. Once created, status errors retain .project and\n.project_id too; never resubmit an unconfirmed clone blindly.","property":false,"staticmethod":false,"classmethod":false},{"name":"refresh","parameters":"self","returns":"'Project'","documentation":"Merge lightweight status into this project without loading image counts/previews.","property":false,"staticmethod":false,"classmethod":false},{"name":"wait_for_clone","parameters":"self, *, timeout: float=600, poll_interval: float=1","returns":"'Project'","documentation":"Wait on this exact target; status/transport errors retain .project and .project_id.\n\nTimeout/failure never cancels or creates another clone. HTTP transport\nretries may exceed the polling deadline within an individual call.","property":false,"staticmethod":false,"classmethod":false},{"name":"cancel_clone","parameters":"self","returns":"dict","documentation":"Request idempotent cancellation of this target; current server permissions apply.","property":false,"staticmethod":false,"classmethod":false},{"name":"video_sources","parameters":"self","returns":null,"documentation":"Project-owned indexed videos; exact frames require index_revision.","property":true,"staticmethod":false,"classmethod":false},{"name":"medical_sources","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"skeletons","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"artifacts","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"list_images","parameters":"self, page_number: int=0, page_size: int=100, include_labels: bool=False, include_image: bool=False, load_labels: bool | None=None, load_image: bool | None=None, as_dict: bool=False, filters: dict | None=None, **extra_filters","returns":"dict","documentation":"Fetch one page of images.\n\nReturns ImageRecord rows by default. Pass as_dict=True for raw backend\ndictionaries.\n\nExample:\n    page = project.list_images(page_size=500, tags=[\"reviewed\"])\n    for image in page[\"data\"]:\n        print(image.filename, image.tags)","property":false,"staticmethod":false,"classmethod":false},{"name":"count_images","parameters":"self, filters: dict | None=None, **extra_filters","returns":"int","documentation":"Return the number of images matching filters.\n\nExample:\n    total = project.count_images(tags=[\"reviewed\"], exclude_tags=[\"bad\"])","property":false,"staticmethod":false,"classmethod":false},{"name":"find_images","parameters":"self, page_number: int=0, page_size: int=100, **kwargs","returns":"dict","documentation":"Alias for list_images, intended for filter-heavy scripting.\n\nExample:\n    page = project.find_images(page_size=500, batch_names=[\"run-1\"])","property":false,"staticmethod":false,"classmethod":false},{"name":"first_image","parameters":"self, include_labels: bool=False, include_image: bool=False, load_labels: bool | None=None, load_image: bool | None=None, raise_if_missing: bool=False, filters: dict | None=None, **extra_filters","returns":"ImageRecord | None","documentation":"Return the first image matching filters, or None when no image matches.\n\nExample:\n    image = project.first_image(filename_query=\"frame-004\")","property":false,"staticmethod":false,"classmethod":false},{"name":"annotation","parameters":"self, annotation_id: str","returns":"EasyDict","documentation":"Return one annotation by its annotation id.\n\nThe returned object includes ``image_id`` for the image that owns the\nannotation and ``annotation`` for the annotation payload.","property":false,"staticmethod":false,"classmethod":false},{"name":"find_annotations","parameters":"self, *, field: str, value: str, limit: int=500","returns":"list[EasyDict]","documentation":"Find annotations by a top-level annotation field.\n\nUseful for custom fields added during upload, for example\n``field=\"source_image_id\"``.","property":false,"staticmethod":false,"classmethod":false},{"name":"annotations_by_metadata","parameters":"self, field: str, value: str, *, limit: int=500","returns":"list[EasyDict]","documentation":"Alias for finding annotations by a custom annotation field.","property":false,"staticmethod":false,"classmethod":false},{"name":"live","parameters":"self, page_size: int=100, include_labels: bool=False, include_image: bool=False, load_labels: bool | None=None, load_image: bool | None=None, filters: dict | None=None, **extra_filters","returns":"Iterator[ImageRecord]","documentation":"Iterate matching images one by one, fetching metadata in pages.\n\nLabels and image bytes are lazy by default. tqdm can infer the total via\n__len__.\n\nExample:\n    for image in tqdm(project.live(page_size=100, tags=[\"reviewed\"])):\n        print(image.filename)","property":false,"staticmethod":false,"classmethod":false},{"name":"live_batches","parameters":"self, page_size: int=100, include_labels: bool=False, include_image: bool=False, load_labels: bool | None=None, load_image: bool | None=None, as_dict: bool=False, filters: dict | None=None, **extra_filters","returns":"Iterator[list]","documentation":"Iterate matching images as page-sized batches.\n\nExample:\n    for batch in project.live_batches(page_size=500, load_labels=True):\n        print([image.filename for image in batch])","property":false,"staticmethod":false,"classmethod":false},{"name":"delete_images","parameters":"self, image_ids: list[str | ImageRecord] | tuple[str | ImageRecord, ...] | set[str | ImageRecord]","returns":"dict","documentation":"Delete one or more images by id or ImageRecord.","property":false,"staticmethod":false,"classmethod":false},{"name":"delete_image","parameters":"self, image_id: str | ImageRecord","returns":"dict","documentation":"Delete a single image by id or ImageRecord.","property":false,"staticmethod":false,"classmethod":false},{"name":"matching_image_ids","parameters":"self, page_size: int=500, filters: dict | None=None, **extra_filters","returns":"list[str]","documentation":"Return ids for all images matching the provided filters.","property":false,"staticmethod":false,"classmethod":false},{"name":"delete_matching","parameters":"self, dry_run: bool=True, page_size: int=500, filters: dict | None=None, **extra_filters","returns":"dict","documentation":"Preview or delete all images matching filters.\n\nReal deletes run when dry_run=False.\n\nExample:\n    preview = project.delete_matching(tags=[\"bad\"])\n    result = project.delete_matching(\n        tags=[\"bad\"],\n        dry_run=False,\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"update_images_metadata","parameters":"self, image_ids: list[str | ImageRecord] | tuple[str | ImageRecord, ...], add_tags: list[str] | None=None, remove_tags: list[str] | None=None, split_name: str | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Bulk update tags, split, and/or model agreement for selected images.\n\nExample:\n    project.update_images_metadata(\n        [image_1, image_2.id],\n        add_tags=[\"reviewed\"],\n        remove_tags=[\"raw\"],\n        split_name=\"train\",\n        model_agree=True,\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"update_image_verification","parameters":"self, image_ids: str | ImageRecord | list[str | ImageRecord] | tuple[str | ImageRecord, ...] | set[str | ImageRecord], verification_status: str | bool","returns":"dict","documentation":"Mark one or more images verified or unverified.\n\nExample:\n    project.update_image_verification([image_1, image_2.id], \"verified\")\n    project.update_image_verification(\"IMAGE_ID\", False)","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_images_verified","parameters":"self, image_ids","returns":"dict","documentation":"Mark one or more images verified.","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_images_unverified","parameters":"self, image_ids","returns":"dict","documentation":"Mark one or more images unverified.","property":false,"staticmethod":false,"classmethod":false},{"name":"update_image_model_agreement","parameters":"self, image_ids: str | ImageRecord | list[str | ImageRecord] | tuple[str | ImageRecord, ...] | set[str | ImageRecord], model_agreement: str | bool | None","returns":"dict","documentation":"Mark one or more image labels as model-agree, model-disagree, or unset.\n\nExample:\n    project.update_image_model_agreement([image_1, image_2.id], True)\n    project.update_image_model_agreement(\"IMAGE_ID\", \"disagree\")\n    project.update_image_model_agreement(\"IMAGE_ID\", \"none\")","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_images_model_agree","parameters":"self, image_ids","returns":"dict","documentation":"Mark one or more image labels as agreeing with the model.","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_images_model_disagree","parameters":"self, image_ids","returns":"dict","documentation":"Mark one or more image labels as disagreeing with the model.","property":false,"staticmethod":false,"classmethod":false},{"name":"clear_images_model_agreement","parameters":"self, image_ids","returns":"dict","documentation":"Clear model agreement for one or more images.","property":false,"staticmethod":false,"classmethod":false},{"name":"update_matching","parameters":"self, add_tags: list[str] | None=None, remove_tags: list[str] | None=None, split_name: str | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None, dry_run: bool=True, page_size: int=500, filters: dict | None=None, **extra_filters","returns":"dict","documentation":"Preview or update metadata for all images matching filters.\n\nReal updates run when dry_run=False.\n\nExample:\n    preview = project.update_matching(tags=[\"raw\"], add_tags=[\"reviewed\"])\n    result = project.update_matching(\n        tags=[\"raw\"],\n        add_tags=[\"reviewed\"],\n        dry_run=False,\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"iter_labels","parameters":"self, page_size: int=100, filters: dict | None=None, **extra_filters","returns":"Iterator[tuple[ImageRecord, list]]","documentation":"Iterate matching images with their labels as (image, labels) pairs.","property":false,"staticmethod":false,"classmethod":false},{"name":"image","parameters":"self, image_id: str","returns":"ImageRecord","documentation":"Fetch one image record by id.","property":false,"staticmethod":false,"classmethod":false},{"name":"find_image_by_crop","parameters":"self, crop, *, match: str='hash', include_labels: bool=False, load_labels: bool | None=None, limit: int=1","returns":"ImageRecord | None","documentation":"Find an image in this project by passing crop image content.\n\n``match=\"hash\"`` requires exact uploaded bytes after SDK normalization.\n``match=\"embedding\"`` returns the nearest visual-search match.","property":false,"staticmethod":false,"classmethod":false},{"name":"download_image","parameters":"self, image_id: str, destination: str | Path | None=None, thumbnail: bool=False, as_bytes: bool=False, as_pil: bool=False, as_cv2: bool=False, as_base64: bool=False, *, image_revision: str | int | None=None","returns":"Path | bytes | str | Any","documentation":"Download an image by id to disk or return bytes/PIL/OpenCV/base64 data.","property":false,"staticmethod":false,"classmethod":false},{"name":"upload","parameters":"self, image_path: str | Path | bytes | bytearray | memoryview | BytesIO | Any, batch_name: str='SDK Upload', tags: list[str] | None=None, metadata: dict | None=None, split_name: str='none', capture_date: Any=None, filename: str | None=None, annotations: list | None=None, labels: list | None=None, normalize_image: bool=False, normalize_labels_from_pixels: bool=False, image_width: int | None=None, image_height: int | None=None, verification_status: str | bool | None=None","returns":"dict","documentation":"Upload an image from a path, URL, bytes, file object, PIL image, or OpenCV array.\n\nExample:\n    project.upload(\"images/frame.jpg\", batch_name=\"run-1\", tags=[\"raw\"])\n\n    project.upload(\n        cv2_image,\n        batch_name=\"crops\",\n        annotations=[{\"type\": \"classification\", \"label\": \"12\"}],\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"upload_bytes","parameters":"self, image_bytes: bytes | bytearray | memoryview, **kwargs","returns":"dict","documentation":"Upload encoded image bytes such as JPEG or PNG data.\n\nExample:\n    success, encoded = cv2.imencode(\".jpg\", crop)\n    if success:\n        project.upload_bytes(encoded.tobytes(), batch_name=\"crops\")","property":false,"staticmethod":false,"classmethod":false},{"name":"upload_dataset","parameters":"self, dataset_path: str | Path, labels: dict[str, list] | None=None, label_loader=None, batch_name: str='SDK Upload', tags: list[str] | None=None, split_name: str='auto', capture_date: Any=None, normalize_image: bool=False, verification_status: str | bool | None=None, batch_size: int=1, show_progress: bool=True, dataset_format: str='auto', continue_on_error: bool=True","returns":"dict","documentation":"Upload a directory, auto-discovering common dataset labels by default.\n\nWithout labels or label_loader, this auto-detects common CV layouts such\nas YOLO, COCO, Pascal VOC, LabelMe, and sidecar labels. labels may be a\ndict keyed by filename. label_loader, when provided, is called as\nlabel_loader(image_path) and should return label objects or None.\n\nExample:\n    project.upload_dataset(\n        \"images\",\n        labels={\n            \"frame-001.jpg\": [\n                {\"type\": \"classification\", \"label\": \"reviewed\"}\n            ]\n        },\n        batch_name=\"folder-import\",\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"upload_auto_dataset","parameters":"self, dataset_path: str | Path, *, dataset_format: str='auto', batch_name: str='SDK Dataset Upload', tags: list[str] | None=None, split_name: str='auto', capture_date: Any=None, limit: int=1000, continue_on_error: bool=True, dry_run: bool=False, verification_status: str | bool | None=None, batch_size: int=1, show_progress: bool=True","returns":"dict","documentation":"Upload a dataset directory and auto-detect the supported format.","property":false,"staticmethod":false,"classmethod":false},{"name":"upload_yolo_dataset","parameters":"self, dataset_path: str | Path, dataset_format: str='yolov8', annotation_format: str='bbox', batch_name: str='SDK YOLO Upload', tags: list[str] | None=None, split_name: str='none', capture_date: Any=None, skip_existing: bool=False, verification_status: str | bool | None=None, batch_size: int=1, show_progress: bool=True","returns":"dict","documentation":"Upload a YOLO dataset directory.","property":false,"staticmethod":false,"classmethod":false},{"name":"get_annotations","parameters":"self, image_id: str","returns":"list","documentation":"Fetch annotations for one image by id.","property":false,"staticmethod":false,"classmethod":false},{"name":"update_annotation_model_agreement","parameters":"self, image_id: str, annotation_ids: str | LabelRecord | list[str | LabelRecord], model_agreement: str | bool | None, target: str='annotation'","returns":"dict","documentation":"Set agreement on specific annotations without replacing other labels.","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_annotations_model_agree","parameters":"self, image_id: str, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_annotations_model_disagree","parameters":"self, image_id: str, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"clear_annotations_model_agreement","parameters":"self, image_id: str, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_annotation_ocr_model_agree","parameters":"self, image_id: str, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_annotation_ocr_model_disagree","parameters":"self, image_id: str, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"clear_annotation_ocr_model_agreement","parameters":"self, image_id: str, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"update_annotations","parameters":"self, image_id: str, annotations: list, overwrite: bool | None=None, override: bool | None=None, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None, *, expected_image_revision: str | int | None=None, expected_source_write_sequence: int | None=None, expected_class_revision: int | None=None","returns":"dict","documentation":"Merge annotations by id unless overwrite/override is true.\n\nLabel snapshots carry the class revision observed when read. Plain\nlists may pin it explicitly with expected_class_revision; no fresh\nmetadata is fetched to attach a newer revision to an old draft.\n\nExample:\n    project.update_annotations(\n        image.id,\n        [{\"type\": \"classification\", \"label\": \"reviewed\"}],\n        overwrite=False,\n        verification_status=\"verified\",\n        model_agree=True,\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"write_annotations","parameters":"self, image_id: str, annotations: list, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Replace all annotations for one image.","property":false,"staticmethod":false,"classmethod":false},{"name":"write_labels","parameters":"self, image_id: str, labels: list, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Replace all labels for one image.","property":false,"staticmethod":false,"classmethod":false},{"name":"update_annotations_bulk","parameters":"self, updates: list[dict], overwrite: bool | None=None, override: bool | None=None, verification_status: str | bool | None=None","returns":"dict","documentation":"Merge annotations for multiple images in one API call.\n\nExample:\n    project.update_annotations_bulk(\n        [\n            {\"image\": image_1, \"labels\": labels_1},\n            {\"image_id\": image_2.id, \"labels\": labels_2},\n        ],\n        overwrite=True,\n        verification_status=\"unverified\",\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"classes","parameters":"self","returns":"list","documentation":"Return project classes.","property":false,"staticmethod":false,"classmethod":false},{"name":"class_registry","parameters":"self","returns":"dict","documentation":"Return classes, colors and the captured class_revision.","property":false,"staticmethod":false,"classmethod":false},{"name":"update_classes","parameters":"self, classes, expected_class_revision=None","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"rename_class","parameters":"self, old, new, expected_class_revision=None","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"set_class_color","parameters":"self, name, color, expected_class_revision=None","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"remove_classes","parameters":"self, classes, expected_class_revision=None","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"tags","parameters":"self","returns":"list","documentation":"Return project tags with counts.\n\nExample:\n    for item in project.tags():\n        print(item[\"tag\"], item[\"count\"])","property":false,"staticmethod":false,"classmethod":false},{"name":"versions","parameters":"self","returns":"list['Version']","documentation":"Return dataset versions for this project.","property":false,"staticmethod":false,"classmethod":false},{"name":"version","parameters":"self, version_id: str | int","returns":"'Version'","documentation":"Resolve a dataset version by id or version number.","property":false,"staticmethod":false,"classmethod":false},{"name":"preview_raster_chips","parameters":"self, image_id: str, config: dict, *, index: int=0","returns":"dict","documentation":"Preview one native-resolution RGB chip and its cropped source geometry.","property":false,"staticmethod":false,"classmethod":false},{"name":"version_source_readiness","parameters":"self, image_ids: list[str] | None=None","returns":"dict","documentation":"Count ready sources; optional selected IDs use a bounded JSON request.","property":false,"staticmethod":false,"classmethod":false},{"name":"create_version","parameters":"self, name: str, notes: str='', split: tuple[int, int, int]=(70, 20, 10), preprocessing: list[dict] | None=None, augmentation: dict | None=None, image_range: dict | None=None, image_ids: list[str] | None=None, raster_chips: dict | None=None, medical_frames: dict | None=None","returns":"'Version'","documentation":"Create a dataset version from the current project images.\n\nExample:\n    version = project.create_version(\"v1\", split=(70, 20, 10))","property":false,"staticmethod":false,"classmethod":false},{"name":"iter_images","parameters":"self, page_size: int=100, include_labels: bool=False, include_image: bool=False, load_labels: bool | None=None, load_image: bool | None=None, filters: dict | None=None, **extra_filters","returns":"Iterator[ImageRecord]","documentation":"Iterate matching images one by one, fetching metadata in pages.\n\nLabels and image bytes are lazy by default. tqdm can infer the total via\n__len__.\n\nExample:\n    for image in tqdm(project.live(page_size=100, tags=[\"reviewed\"])):\n        print(image.filename)","property":false,"staticmethod":false,"classmethod":false,"alias_of":"live"},{"name":"iter_image_batches","parameters":"self, page_size: int=100, include_labels: bool=False, include_image: bool=False, load_labels: bool | None=None, load_image: bool | None=None, as_dict: bool=False, filters: dict | None=None, **extra_filters","returns":"Iterator[list]","documentation":"Iterate matching images as page-sized batches.\n\nExample:\n    for batch in project.live_batches(page_size=500, load_labels=True):\n        print([image.filename for image in batch])","property":false,"staticmethod":false,"classmethod":false,"alias_of":"live_batches"},{"name":"update_metadata_bulk","parameters":"self, image_ids: list[str | ImageRecord] | tuple[str | ImageRecord, ...], add_tags: list[str] | None=None, remove_tags: list[str] | None=None, split_name: str | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Bulk update tags, split, and/or model agreement for selected images.\n\nExample:\n    project.update_images_metadata(\n        [image_1, image_2.id],\n        add_tags=[\"reviewed\"],\n        remove_tags=[\"raw\"],\n        split_name=\"train\",\n        model_agree=True,\n    )","property":false,"staticmethod":false,"classmethod":false,"alias_of":"update_images_metadata"},{"name":"set_image_verification","parameters":"self, image_ids: str | ImageRecord | list[str | ImageRecord] | tuple[str | ImageRecord, ...] | set[str | ImageRecord], verification_status: str | bool","returns":"dict","documentation":"Mark one or more images verified or unverified.\n\nExample:\n    project.update_image_verification([image_1, image_2.id], \"verified\")\n    project.update_image_verification(\"IMAGE_ID\", False)","property":false,"staticmethod":false,"classmethod":false,"alias_of":"update_image_verification"},{"name":"set_image_model_agreement","parameters":"self, image_ids: str | ImageRecord | list[str | ImageRecord] | tuple[str | ImageRecord, ...] | set[str | ImageRecord], model_agreement: str | bool | None","returns":"dict","documentation":"Mark one or more image labels as model-agree, model-disagree, or unset.\n\nExample:\n    project.update_image_model_agreement([image_1, image_2.id], True)\n    project.update_image_model_agreement(\"IMAGE_ID\", \"disagree\")\n    project.update_image_model_agreement(\"IMAGE_ID\", \"none\")","property":false,"staticmethod":false,"classmethod":false,"alias_of":"update_image_model_agreement"},{"name":"mark_model_agree","parameters":"self, image_ids","returns":"dict","documentation":"Mark one or more image labels as agreeing with the model.","property":false,"staticmethod":false,"classmethod":false,"alias_of":"mark_images_model_agree"},{"name":"mark_model_disagree","parameters":"self, image_ids","returns":"dict","documentation":"Mark one or more image labels as disagreeing with the model.","property":false,"staticmethod":false,"classmethod":false,"alias_of":"mark_images_model_disagree"},{"name":"clear_model_agreement","parameters":"self, image_ids","returns":"dict","documentation":"Clear model agreement for one or more images.","property":false,"staticmethod":false,"classmethod":false,"alias_of":"clear_images_model_agreement"},{"name":"get_labels","parameters":"self, image_id: str","returns":"list","documentation":"Fetch annotations for one image by id.","property":false,"staticmethod":false,"classmethod":false,"alias_of":"get_annotations"},{"name":"set_annotation_model_agreement","parameters":"self, image_id: str, annotation_ids: str | LabelRecord | list[str | LabelRecord], model_agreement: str | bool | None, target: str='annotation'","returns":"dict","documentation":"Set agreement on specific annotations without replacing other labels.","property":false,"staticmethod":false,"classmethod":false,"alias_of":"update_annotation_model_agreement"},{"name":"update_labels","parameters":"self, image_id: str, annotations: list, overwrite: bool | None=None, override: bool | None=None, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None, *, expected_image_revision: str | int | None=None, expected_source_write_sequence: int | None=None, expected_class_revision: int | None=None","returns":"dict","documentation":"Merge annotations by id unless overwrite/override is true.\n\nLabel snapshots carry the class revision observed when read. Plain\nlists may pin it explicitly with expected_class_revision; no fresh\nmetadata is fetched to attach a newer revision to an old draft.\n\nExample:\n    project.update_annotations(\n        image.id,\n        [{\"type\": \"classification\", \"label\": \"reviewed\"}],\n        overwrite=False,\n        verification_status=\"verified\",\n        model_agree=True,\n    )","property":false,"staticmethod":false,"classmethod":false,"alias_of":"update_annotations"},{"name":"update_labels_bulk","parameters":"self, updates: list[dict], overwrite: bool | None=None, override: bool | None=None, verification_status: str | bool | None=None","returns":"dict","documentation":"Merge annotations for multiple images in one API call.\n\nExample:\n    project.update_annotations_bulk(\n        [\n            {\"image\": image_1, \"labels\": labels_1},\n            {\"image_id\": image_2.id, \"labels\": labels_2},\n        ],\n        overwrite=True,\n        verification_status=\"unverified\",\n    )","property":false,"staticmethod":false,"classmethod":false,"alias_of":"update_annotations_bulk"}]},{"name":"ImageRecord","documentation":"","methods":[{"name":"id","parameters":"self","returns":"str","documentation":"Image id.","property":true,"staticmethod":false,"classmethod":false},{"name":"filename","parameters":"self","returns":"str","documentation":"Original image filename.","property":true,"staticmethod":false,"classmethod":false},{"name":"tags","parameters":"self","returns":"list[str]","documentation":"Tags attached to this image.","property":true,"staticmethod":false,"classmethod":false},{"name":"metadata","parameters":"self","returns":"EasyDict","documentation":"Custom image metadata attached at upload time.","property":true,"staticmethod":false,"classmethod":false},{"name":"batch_name","parameters":"self","returns":"str | None","documentation":"Batch name assigned when this image was uploaded.","property":true,"staticmethod":false,"classmethod":false},{"name":"split_name","parameters":"self","returns":"str | None","documentation":"Dataset split name for this image, such as train, val, test, or none.","property":true,"staticmethod":false,"classmethod":false},{"name":"verification_status","parameters":"self","returns":"str","documentation":"Human verification status: verified or unverified.","property":true,"staticmethod":false,"classmethod":false},{"name":"is_verified","parameters":"self","returns":"bool","documentation":"True when this image has been marked verified by a human.","property":true,"staticmethod":false,"classmethod":false},{"name":"model_agreement","parameters":"self","returns":"str | None","documentation":"Model agreement status: agree, disagree, or None when unavailable.","property":true,"staticmethod":false,"classmethod":false},{"name":"model_agree","parameters":"self","returns":"bool | None","documentation":"True/False when model agreement is known, otherwise None.","property":true,"staticmethod":false,"classmethod":false},{"name":"width","parameters":"self","returns":"int | None","documentation":"Stored image width in pixels.","property":true,"staticmethod":false,"classmethod":false},{"name":"height","parameters":"self","returns":"int | None","documentation":"Stored image height in pixels.","property":true,"staticmethod":false,"classmethod":false},{"name":"annotations","parameters":"self","returns":"list","documentation":"Annotations for this image, loaded lazily if not already present.","property":true,"staticmethod":false,"classmethod":false},{"name":"labels","parameters":"self","returns":"list","documentation":"Alias for annotations.","property":true,"staticmethod":false,"classmethod":false},{"name":"annotations_dicts","parameters":"self","returns":"list[dict]","documentation":"Annotations converted to plain dictionaries.","property":true,"staticmethod":false,"classmethod":false},{"name":"labels_dicts","parameters":"self","returns":"list[dict]","documentation":"Labels converted to plain dictionaries.","property":true,"staticmethod":false,"classmethod":false},{"name":"absolute_labels","parameters":"self","returns":"list[dict]","documentation":"Labels converted from normalized coordinates to pixel coordinates.","property":true,"staticmethod":false,"classmethod":false},{"name":"absolute_labels_for","parameters":"self, width: int, height: int","returns":"list[dict]","documentation":"Return labels converted to pixel coordinates for the provided dimensions.","property":false,"staticmethod":false,"classmethod":false},{"name":"image","parameters":"self","returns":"bytes","documentation":"Image bytes, downloaded lazily on first access.","property":true,"staticmethod":false,"classmethod":false},{"name":"image_bytes","parameters":"self","returns":"bytes","documentation":"Image bytes, downloaded lazily on first access.","property":true,"staticmethod":false,"classmethod":false},{"name":"load_image","parameters":"self, force: bool=False","returns":"bytes","documentation":"Download and cache this image's bytes, unless already loaded.","property":false,"staticmethod":false,"classmethod":false},{"name":"refresh_image","parameters":"self","returns":"bytes","documentation":"Force re-download of this image's bytes and update the local cache.","property":false,"staticmethod":false,"classmethod":false},{"name":"refresh_annotations","parameters":"self","returns":"list","documentation":"Fetch this image's latest annotations from the API.","property":false,"staticmethod":false,"classmethod":false},{"name":"refresh_labels","parameters":"self","returns":"list","documentation":"Fetch this image's latest labels from the API.","property":false,"staticmethod":false,"classmethod":false},{"name":"reload","parameters":"self","returns":"'ImageRecord'","documentation":"Refresh this record's metadata from the API and clear cached image bytes.\n\nExample:\n    image.reload()\n    print(image.tags)","property":false,"staticmethod":false,"classmethod":false},{"name":"update_annotations","parameters":"self, annotations: list, overwrite: bool | None=None, override: bool | None=None, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None, *, expected_image_revision: str | int | None=None, expected_source_write_sequence: int | None=None, expected_class_revision: int | None=None","returns":"dict","documentation":"Update annotations without changing verification status unless provided.\n\nSnapshots retain their observed source and class revisions. A class\nconflict preserves local labels; review a fresh snapshot before retrying.","property":false,"staticmethod":false,"classmethod":false},{"name":"update_labels","parameters":"self, labels: list, overwrite: bool | None=None, override: bool | None=None, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Merge labels by id; pass overwrite=True or override=True to replace all.","property":false,"staticmethod":false,"classmethod":false},{"name":"set_annotations","parameters":"self, annotations: list, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Replace all annotations on this image.","property":false,"staticmethod":false,"classmethod":false},{"name":"write_annotations","parameters":"self, annotations: list, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Replace all annotations on this image.","property":false,"staticmethod":false,"classmethod":false},{"name":"set_labels","parameters":"self, labels: list, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Replace all labels on this image.\n\nExample:\n    image.set_labels(\n        [{\"type\": \"classification\", \"label\": \"approved\"}],\n        model_agree=True,\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"write_labels","parameters":"self, labels: list, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Replace all labels on this image.","property":false,"staticmethod":false,"classmethod":false},{"name":"add_annotations","parameters":"self, annotations: list, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Append annotations to this image without removing existing annotations.","property":false,"staticmethod":false,"classmethod":false},{"name":"add_labels","parameters":"self, labels: list, verification_status: str | bool | None=None, model_agreement: str | bool | None=None, model_agree: bool | None=None","returns":"dict","documentation":"Append labels to this image without removing existing labels.\n\nExample:\n    image.add_labels(\n        [{\"type\": \"classification\", \"label\": \"reviewed\"}],\n        model_agree=False,\n    )","property":false,"staticmethod":false,"classmethod":false},{"name":"set_verification_status","parameters":"self, verification_status: str | bool","returns":"dict","documentation":"Mark this image verified or unverified.","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_verified","parameters":"self","returns":"dict","documentation":"Mark this image as verified.","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_unverified","parameters":"self","returns":"dict","documentation":"Mark this image as unverified.","property":false,"staticmethod":false,"classmethod":false},{"name":"set_model_agreement","parameters":"self, model_agreement: str | bool | None","returns":"dict","documentation":"Mark this image label as model-agree, model-disagree, or unset.","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_model_agree","parameters":"self","returns":"dict","documentation":"Mark this image label as agreeing with the model.","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_model_disagree","parameters":"self","returns":"dict","documentation":"Mark this image label as disagreeing with the model.","property":false,"staticmethod":false,"classmethod":false},{"name":"clear_model_agreement","parameters":"self","returns":"dict","documentation":"Clear model agreement so this image returns to the unset state.","property":false,"staticmethod":false,"classmethod":false},{"name":"set_annotation_model_agreement","parameters":"self, annotation_ids, model_agreement: str | bool | None, target: str='annotation'","returns":"dict","documentation":"Set or clear model agreement for annotations on this image.","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_annotations_model_agree","parameters":"self, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_annotations_model_disagree","parameters":"self, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"clear_annotations_model_agreement","parameters":"self, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_annotation_ocr_model_agree","parameters":"self, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"mark_annotation_ocr_model_disagree","parameters":"self, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"clear_annotation_ocr_model_agreement","parameters":"self, annotation_ids","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"delete","parameters":"self","returns":"dict","documentation":"Delete this image from its project.\n\nExample:\n    image.delete()","property":false,"staticmethod":false,"classmethod":false},{"name":"download","parameters":"self, location: str | Path='.', thumbnail: bool=False, as_bytes: bool=False, as_pil: bool=False, as_cv2: bool=False, as_base64: bool=False","returns":"Path | bytes | str | Any","documentation":"Download this image to disk or return bytes/PIL/OpenCV/base64 data.","property":false,"staticmethod":false,"classmethod":false}]},{"name":"VersionImageRecord","documentation":"","methods":[{"name":"id","parameters":"self","returns":"str","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"filename","parameters":"self","returns":"str","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"split_name","parameters":"self","returns":"str","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"raster_chip","parameters":"self","returns":"dict | None","documentation":"Frozen source SHA, native pixel window, CRS/affine and RGB mapping.","property":true,"staticmethod":false,"classmethod":false},{"name":"annotations","parameters":"self","returns":"list","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"labels","parameters":"self","returns":"list","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"annotations_dicts","parameters":"self","returns":"list[dict]","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"labels_dicts","parameters":"self","returns":"list[dict]","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"download","parameters":"self, location: str | Path='.', thumbnail: bool=False, as_bytes: bool=False, as_pil: bool=False, as_cv2: bool=False, as_base64: bool=False","returns":"Path | bytes | str | Any","documentation":"","property":false,"staticmethod":false,"classmethod":false}]},{"name":"ProjectImageIterator","documentation":"","methods":[{"name":"count","parameters":"self","returns":"int","documentation":"Return total matching images without consuming this iterator.","property":false,"staticmethod":false,"classmethod":false}]},{"name":"ProjectImageBatchIterator","documentation":"","methods":[{"name":"count","parameters":"self","returns":"int","documentation":"Return total matching images without consuming this batch iterator.","property":false,"staticmethod":false,"classmethod":false}]},{"name":"LabelRecord","documentation":"Dict-compatible annotation with convenience geometry properties.","methods":[{"name":"cls","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"model_agreement","parameters":"self","returns":"str | None","documentation":"Annotation agreement: agree, disagree, or None when unset.","property":true,"staticmethod":false,"classmethod":false},{"name":"model_agree","parameters":"self","returns":"bool | None","documentation":"True/False when annotation agreement is known, otherwise None.","property":true,"staticmethod":false,"classmethod":false},{"name":"x1","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"y1","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"x2","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"y2","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"left","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"top","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"width","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"height","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"cx","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"cy","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"center","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"area","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"aspect","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"bbox","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"rotation","parameters":"self","returns":"float","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"is_rotated_bbox","parameters":"self","returns":"bool","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"rotated_points","parameters":"self","returns":"list[dict]","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"obb","parameters":"self","returns":"tuple[tuple[float, float], ...]","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"enclosing_bbox","parameters":"self","returns":"tuple[float, float, float, float]","documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"to_dict","parameters":"self","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"as_dict","parameters":"self","returns":"dict","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"absolute","parameters":"self, image_width: int, image_height: int, *, clamp: bool=True","returns":"'LabelRecord'","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"normalized","parameters":"self, image_width: int, image_height: int, *, clamp: bool=True","returns":"'LabelRecord'","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"intersection","parameters":"self, other","returns":"'LabelRecord'","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"union","parameters":"self, other","returns":"'LabelRecord'","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"iou","parameters":"self, other","returns":"float","documentation":"","property":false,"staticmethod":false,"classmethod":false}]},{"name":"ReadOnlyLabelsList","documentation":"","methods":[{"name":"as_dict","parameters":"self","returns":"list[dict]","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"to_dicts","parameters":"self","returns":"list[dict]","documentation":"","property":false,"staticmethod":false,"classmethod":false}]},{"name":"Version","documentation":"","methods":[{"name":"audit_storage","parameters":"self, *, apply=False, limit=500, cursor=None, wait=False, timeout=300","returns":null,"documentation":"Measure one bounded page; apply=True accounts existing bytes without deleting files.","property":false,"staticmethod":false,"classmethod":false},{"name":"storage_audit","parameters":"self, job_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"train","parameters":"self, trainer_id, worker_id, *, export_key, parameters=None, gpu_ids=None, name='', scheduled_at=None, priority=0, execution_device='auto', idempotency_key=None","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"refresh","parameters":"self","returns":"'Version'","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"live","parameters":"self, split_name: str='all', page_size: int=100","returns":"Iterator[VersionImageRecord]","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"iter_labels","parameters":"self, split_name: str='all', page_size: int=100","returns":"Iterator[tuple[VersionImageRecord, list]]","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"download_image","parameters":"self, image_id: str, split_name: str, destination: str | Path | None=None, thumbnail: bool=False, as_bytes: bool=False, as_pil: bool=False, as_cv2: bool=False, as_base64: bool=False","returns":"Path | bytes | str | Any","documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"generate_export","parameters":"self, dataset_format: str, export_options: dict | None=None","returns":"dict","documentation":"Start or reuse a generated dataset export format.\n\n`dataset_format` is passed to the backend export registry, so aliases such as\n\"yolo\", \"COCO\", \"LabelMe\", and \"florence2-od\" are accepted when supported by\nthe server.","property":false,"staticmethod":false,"classmethod":false},{"name":"download","parameters":"self, dataset_format: str='yolo', location: str | Path='.', filename: str | None=None, export_options: dict | None=None, wait: bool=True, timeout: float=300, poll_interval: float=2, model_format: str | None=None","returns":"Path","documentation":"Generate and download this dataset version in the requested format.\n\nThe first argument mirrors Roboflow's `version.download(\"format\")` style.\n`model_format` is accepted as a familiar keyword alias for\n`dataset_format`.\nAny backend-supported export alias can be used, including \"yolo\", \"COCO\",\n\"LabelMe\", and \"florence2-od\".\nUncertain publication raises DatasetExportRecoveryRequired with the\nretained export status; it never resubmits a generation automatically.","property":false,"staticmethod":false,"classmethod":false},{"name":"reconcile_export","parameters":"self, key, *, wait=False, timeout=300, poll_interval=2","returns":null,"documentation":"Request verification of an existing publication once; never regenerate it.\n\nReturns the raw committed/blocked status. Waiting only polls the retained\nverification request and does not retry a blocked request automatically.","property":false,"staticmethod":false,"classmethod":false},{"name":"delete_export","parameters":"self, key","returns":null,"documentation":"Explicitly delete one existing export; return the updated version.\n\nThe server checks active producers and sealed publication proof before\ndeleting. This method never generates an export or retries the request.","property":false,"staticmethod":false,"classmethod":false},{"name":"iter_images","parameters":"self, split_name: str='all', page_size: int=100","returns":"Iterator[VersionImageRecord]","documentation":"","property":false,"staticmethod":false,"classmethod":false,"alias_of":"live"}]}]},{"module":"algofly.sweeps","classes":[{"name":"Sweeps","documentation":"","methods":[{"name":"create","parameters":"self, *, project_id, version_id, export_key, trainer_id, worker_ids, space, base_parameters=None, method='grid', seed=0, max_trials=16, max_parallelism=1, execution_device='auto', name='', objective_metric='', objective_mode='max', priority=0, scheduled_at=None, idempotency_key=None","returns":null,"documentation":"Queue up to 128 validated independent trials; reuse the key on retries.\n\nGrid dimensions use {\"type\":\"choice\",\"values\":[...]}; seeded random\nadditionally supports uniform/loguniform/int distributions with low/high.\nWorkers require claim protocol 1. Assignments are fixed, not distributed\ngradient training or adaptive load balancing. Scheduled time is supported;\na per-trial wall-clock termination budget is not part of this protocol.","property":false,"staticmethod":false,"classmethod":false},{"name":"list","parameters":"self, project_id, *, search='', offset=0, limit=20","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"get","parameters":"self, sweep_id","returns":null,"documentation":"Inspect/reconcile the bounded child plan and latest numeric metrics.","property":false,"staticmethod":false,"classmethod":false},{"name":"cancel","parameters":"self, sweep_id","returns":null,"documentation":"Stop future dispatch and cancel queued/running children idempotently.","property":false,"staticmethod":false,"classmethod":false}]}]},{"module":"algofly.training","classes":[{"name":"Training","documentation":"","methods":[{"name":"sweeps","parameters":"self","returns":null,"documentation":"","property":true,"staticmethod":false,"classmethod":false},{"name":"trainers","parameters":"self","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"billing","parameters":"self, project_id: str","returns":"dict","documentation":"Read workspace worker policy, admission limits and hosted CPU allowance.\n\nRegistered-worker compute costs zero platform credits. Dataset/artifact\nstorage remains subject to the workspace plan. Null limits are unlimited;\nhardware and operational safety checks still apply. platform_cpu_compute\nseparately reports included DataHub CPU time, active reservations and\nconservative unmeasured allowance consumption. No credit overage is\nenabled. Null allowance/remaining values mean commercially unlimited.","property":false,"staticmethod":false,"classmethod":false},{"name":"compute_usage","parameters":"self, run_id: str","returns":"dict","documentation":"Read measured per-attempt compute time and explicit unknown coverage.\n\ntotal_compute_seconds is populated only for completely measured runs.\nQueue wait, staging and artifact delivery are excluded. Legacy/crashed\nattempts may be unknown; never substitute run wall-clock duration.\nunrecorded_observations marks rejected/missing telemetry and makes the\ntotal incomplete while preserving any known measured duration.","property":false,"staticmethod":false,"classmethod":false},{"name":"validate_config","parameters":"self, source","returns":null,"documentation":"Validate YAML/JSON text without starting a run; return normalized settings.","property":false,"staticmethod":false,"classmethod":false},{"name":"start_config","parameters":"self, source","returns":null,"documentation":"Submit a reviewed YAML/JSON document with its explicit idempotency key.","property":false,"staticmethod":false,"classmethod":false},{"name":"assess","parameters":"self, trainer_id, worker_id, *, parameters=None, gpu_ids=None, project_id=None, execution_device='auto', version_id=None, export_key=None","returns":null,"documentation":"Preview resources without submitting a run.\n\nSupply both version_id and export_key with project_id to include the\nselected completed export's verified dataset size when available.","property":false,"staticmethod":false,"classmethod":false},{"name":"start","parameters":"self, *, project_id, version_id, export_key, trainer_id, worker_id, parameters=None, gpu_ids=None, name='', scheduled_at=None, priority=0, execution_device='auto', idempotency_key=None","returns":null,"documentation":"Submit once. Reuse idempotency_key when recovering from network errors.","property":false,"staticmethod":false,"classmethod":false},{"name":"list","parameters":"self, project_id, *, search='', status='', worker_id='', version_id='', trainer_id='', kind='', offset=0, limit=50","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"assess_conversion","parameters":"self, *, project_id, source_artifact_id, worker_id, parameters=None, gpu_ids=None","returns":null,"documentation":"Inspect conversion eligibility and resource estimates without queuing.\n\nUses the same source, recipe, shapes and worker checks as convert().\nThe response includes trainer, requirements, assessment and execution_device.\nAn incompatible worker is returned as assessment.compatible=False;\ninvalid settings or unavailable source/access raise the normal HTTP error.\nEstimates are planning heuristics, not guaranteed memory minima. Check\nassessment warnings and readiness before choosing a worker, then submit\nconvert() explicitly with the reviewed parameters and an idempotency key.","property":false,"staticmethod":false,"classmethod":false},{"name":"convert","parameters":"self, *, project_id, source_artifact_id, worker_id, parameters=None, gpu_ids=None, name='', idempotency_key=None","returns":null,"documentation":"Convert a trained checkpoint, or verified conversion ONNX to target TensorRT.\n\nONNX targets require a protocol-1 worker in a validated NVIDIA cohort;\nquery its capabilities for x86 or ARM64 SBSA eligibility. Jetson/L4T is\nnot currently admitted. Pass format=tensorrt and optional bounded\ntime_limit_seconds in parameters; native parity remains upstream lineage.\nDINOv3 frozen probes use CPU ONNX with explicit parameters\nformat=onnx, imgsz=[256,256], batch=1, dynamic=False, opset=18.\nReviewed PatchCore model.safetensors uses the same fixed CPU options;\nexported outputs are an unthresholded distance score and anomaly map.\nTracked DINOv3 metric best.pt/last.pt use a separate CPU converter:\nFP32/opset18, imgsz=[256,256], static batch1 or dynamic batch1..4.\nOutputs are normalized384-dimensional embeddings, not classifier logits.","property":false,"staticmethod":false,"classmethod":false},{"name":"get","parameters":"self, run_id","returns":null,"documentation":"Read current run state, including an optional recovery inspection hint.\n\nA running run with progress.code=worker_compute_identity_unverified\nretains local state pending worker inspection. Do not automatically\nresubmit or delete its compute. Read this authoritative projection\ninstead of deriving current recovery state from event arrival order.","property":false,"staticmethod":false,"classmethod":false},{"name":"evaluate","parameters":"self, *, project_id, version_id, export_key=None, source_artifact_id, worker_id, task, split='val', parameters=None, execution_device='cpu', gpu_ids=None, name='', priority=0, scheduled_at=None, idempotency_key=None","returns":null,"documentation":"Evaluate a model on a pinned held-out version with native metrics.\n\ntask is classification or detection; split is val or test. Additional\nparameters must carry explicit model_contract and full class_mapping.\nUploaded ONNX contracts are user-declared and carry no training lineage;\narbitrary uploaded pickle checkpoints are never accepted.\nUnsupported or ambiguous inputs reject instead of guessing preprocessing\nor class order. Reuse idempotency_key after an interrupted submission.\nCPU is the default; CUDA requires a tracked Ultralytics PT source and\nexactly one explicit GPU UUID. Check deployed capabilities: CUDA may be\nvalidation-pending. ONNX remains CPU-only. No generated export is required.","property":false,"staticmethod":false,"classmethod":false},{"name":"benchmark","parameters":"self, *, project_id, version_id, export_key=None, source_artifact_id, worker_id, task, split='val', parameters=None, execution_device='cpu', gpu_ids=None, name='', priority=0, scheduled_at=None, idempotency_key=None","returns":null,"documentation":"Measure warm batch-one inference using the native reviewed protocol.\n\nparameters may set scope, warmup_iterations, measured_iterations,\nsample_images, cpu_threads and max_duration_seconds. time_limit_seconds\nbounds the whole execution rather than only measured samples. Cold session loading\nis reported separately; these are measured timings, not hardware estimates.","property":false,"staticmethod":false,"classmethod":false},{"name":"evaluation_capabilities","parameters":"self","returns":null,"documentation":"Discover native protocol/device limits and explicit request JSON schema.","property":false,"staticmethod":false,"classmethod":false},{"name":"evaluation_defaults","parameters":"self, *, project_id, version_id, source_artifact_id","returns":null,"documentation":"Read verified input/output and exact-label mapping recommendations.\n\nreview_required means user input is still needed. Uploaded ONNX never\ngains verified training lineage through this read-only operation.","property":false,"staticmethod":false,"classmethod":false},{"name":"evaluation_results","parameters":"self, run_id","returns":null,"documentation":"Fetch the bounded SHA-verified native evaluation or benchmark summary.","property":false,"staticmethod":false,"classmethod":false},{"name":"compare","parameters":"self, project_id, run_ids","returns":null,"documentation":"Compare up to20 native runs; incompatible cohorts include reasons.\n\nCustom script evaluation/benchmark metrics are not canonical comparisons.\nNo automatic ranking is inferred from incompatible datasets or runtimes.","property":false,"staticmethod":false,"classmethod":false},{"name":"custom","parameters":"self, *, project_id, version_id, export_key, worker_id, environment_id, script, kind='custom', parameters=None, source_artifact_id=None, execution_device='cpu', gpu_ids=None, estimated_host_ram_mb=2048, estimated_vram_mb=0, estimated_disk_mb=2048, cpu_count=2, time_limit_seconds=3600, output_limit_mb=1024, max_output_files=1000, name='', priority=0, scheduled_at=None, idempotency_key=None","returns":null,"documentation":"Run Python in an opted-in reviewed worker environment, never on the API host.\n\nRead JSON from DATAHUB_CONFIG; dataset is /dataset and writable outputs\nare DATAHUB_OUTPUTS. Write finite JSON objects to outputs/metrics.jsonl.\nEvaluation/benchmark kinds identify user-script protocols, not comparable\nbuilt-in evaluation metrics. Network access and checkpoint pause are unavailable.","property":false,"staticmethod":false,"classmethod":false},{"name":"event_snapshot","parameters":"self, run_id, *, if_snapshot=''","returns":null,"documentation":"Read bounded recent logs, metrics, system samples and progress.\n\nPass the previous snapshot_id to avoid transferring unchanged payloads.\nWhen unchanged is false, replace each local window instead of appending\nit. Windows are ordered by retained event ID, not delivery order, and\ntruncation/oversized omission flags disclose incomplete history. Use\nevents() for paginated history and log search. Current recovery hints\nremain authoritative on get(run_id).progress.","property":false,"staticmethod":false,"classmethod":false},{"name":"events","parameters":"self, run_id, *, after='', limit=200, kind='', search=''","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"pause","parameters":"self, run_id","returns":null,"documentation":"Request checkpoint-aware pause; running jobs acknowledge asynchronously.","property":false,"staticmethod":false,"classmethod":false},{"name":"resume","parameters":"self, run_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"retry_delivery","parameters":"self, run_id","returns":null,"documentation":"Upload retained outputs on the original idle worker; never retrain.","property":false,"staticmethod":false,"classmethod":false},{"name":"update","parameters":"self, run_id, *, priority=None, name=None","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"cancel","parameters":"self, run_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"wait","parameters":"self, run_id, *, timeout=3600, poll_interval=5","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false}]},{"name":"Workers","documentation":"","methods":[{"name":"list","parameters":"self, *, search='', project_id=None","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"create","parameters":"self, name, *, allowed_project_ids=None, allow_custom_jobs=False","returns":null,"documentation":"Return registration credential once; store it securely on the worker.","property":false,"staticmethod":false,"classmethod":false},{"name":"update","parameters":"self, worker_id, *, name=None, paused=None, allowed_project_ids=None, allow_custom_jobs=None","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"revoke","parameters":"self, worker_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false}]}]},{"module":"algofly.video","classes":[{"name":"VideoSources","documentation":"Project-scoped video indexing and exact-frame access.\n\nOperations are asynchronous where the server returns pending/indexing state.\nInspect get() for progress; this client does not extract or retain full videos.\nFrame registration requires explicit server capability approval; its\nlifecycle remains provisional until validated. No video track API is exposed.","methods":[{"name":"list","parameters":"self, *, offset=0, limit=50, search='', status=None","returns":null,"documentation":"Read one bounded page; no automatic full-project materialization.","property":false,"staticmethod":false,"classmethod":false},{"name":"register","parameters":"self, artifact_id, *, stream_index=None, title=None, idempotency_key=None","returns":null,"documentation":"Register an existing owned artifact; server resolves its immutable bytes.","property":false,"staticmethod":false,"classmethod":false},{"name":"get","parameters":"self, source_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"retry","parameters":"self, source_id","returns":null,"documentation":"Retry indexing of the server-stored source configuration.","property":false,"staticmethod":false,"classmethod":false},{"name":"cancel","parameters":"self, source_id","returns":null,"documentation":"Request stop of queued/indexing work; inspect get() for final state.","property":false,"staticmethod":false,"classmethod":false},{"name":"delete","parameters":"self, source_id","returns":null,"documentation":"Explicitly request source deletion; permissions and scope remain server-enforced.","property":false,"staticmethod":false,"classmethod":false},{"name":"frames","parameters":"self, source_id, *, index_revision, offset=0, limit=50","returns":null,"documentation":"Read indexed ordinal/PTS metadata, not video pixels or an FPS estimate.","property":false,"staticmethod":false,"classmethod":false},{"name":"frame","parameters":"self, source_id, ordinal, destination, *, index_revision","returns":null,"documentation":"Stream one exact indexed PNG. Ordinals start at zero; PTS is server metadata.","property":false,"staticmethod":false,"classmethod":false},{"name":"register_frames","parameters":"self, source_id, *, index_revision, start=0, stop_exclusive=None, stride=1, wait=False, timeout=900, restore_missing=False, idempotency_key=None","returns":null,"documentation":"Request an immutable range; default returns its durable intent.\n\nStop is exclusive. Waiting never silently retries failed publication;\ntimeout means processing continues and registration() can inspect it.\nRepeating a normal selection returns its historical operation. Restoring\nlogically deleted frames is explicit and requires a new idempotency key.","property":false,"staticmethod":false,"classmethod":false},{"name":"registrations","parameters":"self, *, source_id=None, offset=0, limit=50, status=None","returns":null,"documentation":"List durable intents so progress survives SDK/browser navigation.","property":false,"staticmethod":false,"classmethod":false},{"name":"registration","parameters":"self, intent_id","returns":null,"documentation":"","property":false,"staticmethod":false,"classmethod":false},{"name":"cancel_registration","parameters":"self, intent_id","returns":null,"documentation":"Request stop; inspect the intent for confirmed cancellation.","property":false,"staticmethod":false,"classmethod":false},{"name":"retry_registration","parameters":"self, intent_id, *, wait=False, timeout=900","returns":null,"documentation":"Retry stored selection; mutable range changes are not accepted.","property":false,"staticmethod":false,"classmethod":false}]}]}],"complete_guide":"/api/install/sdk-docs.md","openapi":"/api/openapi.json"}