Skip to content

Remote drone campaigns

Module: spectralbridge.drone_production.

Restart-safe production orchestration above the drone and bulk pipelines.

API glossary ยท Workflow / scientific context

Signatures and documentation below are collected from the current source. Advanced objects are not newly declared stable by inclusion here.

Audience: public. Also exported as spectralbridge.RemoteDronePackage.

RemoteDronePackage dataclass

RemoteDronePackage(remote_package_path: str, source_root: str, package_name: str, remote_h5_path: str | None, h5_name: str | None, size_bytes: int | None, checksum: str | None, flight_stem: str | None, year: int | None, manifest_id: str | None, acquisition_datetime: str | None, manifest_matched: bool, required_source_exists: bool, completed_local_result: bool, local_flightline_path: str | None, bulk_ready: bool, eligibility: str, reason: str | None = None)

One candidate ExportPackage discovered without downloading its H5.

Attributes:

Name Type Description
remote_package_path str

Authoritative remote ExportPackage or HDF5 location; inventory does not imply it has been downloaded.

source_root str

Requested or resolved remote collection location(s), retained to distinguish year-resolution strategy from scientific identity.

package_name str

Original remote package/HDF5 basename preserved as source provenance.

remote_h5_path str | None

Authoritative remote ExportPackage or HDF5 location; inventory does not imply it has been downloaded.

h5_name str | None

Original remote package/HDF5 basename preserved as source provenance.

size_bytes int | None

Size or estimated storage requirement in bytes; estimates describe planned artifacts rather than guaranteed disk use.

checksum str | None

Optional source checksum used for transfer integrity; absence does not imply verification.

flight_stem str | None

Canonical scientific flightline identifier; histories from the same underlying flight must retain this identity.

year int | None

Calendar acquisition year used for inventory grouping and completeness checks.

manifest_id str | None

Flight identifier matched against the acquisition manifest.

acquisition_datetime str | None

Recorded acquisition timestamp, interpreted with the configured timezone convention.

manifest_matched bool

Recorded manifest/source/local-result evidence used to decide package eligibility.

required_source_exists bool

Recorded manifest/source/local-result evidence used to decide package eligibility.

completed_local_result bool

Recorded manifest/source/local-result evidence used to decide package eligibility.

local_flightline_path str | None

Canonical local producer output directory; completed products are reused only after readiness validation.

bulk_ready bool

Whether the recorded product satisfies the corresponding translation availability/eligibility or producer-to-bulk gate; does not certify empirical sensor calibration.

eligibility str

Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically.

reason str | None, default=None

Explicit reason for exclusion, failure or unavailable status; None when no reason applies.

to_dict

to_dict() -> dict[str, Any]

Serialize this record to its established machine-readable mapping.

Returns:

Type Description
dict[str, Any]

Mapping of record fields and workflow-derived summary entries in the established serialization schema.

Audience: public. Also exported as spectralbridge.DroneYearSource.

DroneYearSource dataclass

DroneYearSource(year: int, requested_source: str | None, resolved_sources: tuple[str, ...], resolution_strategy: str, source_status: str, expected_manifest_flights: tuple[str, ...], reason: str | None = None)

Resolved remote source and manifest expectation for one requested year.

Attributes:

Name Type Description
year int

Calendar acquisition year used for inventory grouping and completeness checks.

requested_source str | None

Requested or resolved remote collection location(s), retained to distinguish year-resolution strategy from scientific identity.

resolved_sources tuple[str, ...]

Requested or resolved remote collection location(s), retained to distinguish year-resolution strategy from scientific identity.

resolution_strategy str

Recorded strategy used to resolve a requested remote root to explicit acquisition-year source locations.

source_status str

Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically.

expected_manifest_flights tuple[str, ...]

Expected flight identifiers for this requested year, derived from the manifest rather than discovered availability alone.

reason str | None, default=None

Explicit reason for exclusion, failure or unavailable status; None when no reason applies.

to_dict

to_dict() -> dict[str, Any]

Serialize this record to its established machine-readable mapping.

Returns:

Type Description
dict[str, Any]

Mapping of record fields and workflow-derived summary entries in the established serialization schema.

Audience: public. Also exported as spectralbridge.DroneCollectionInventory.

DroneCollectionInventory dataclass

DroneCollectionInventory(source: str, backend: str, created_utc: str, packages: tuple[RemoteDronePackage, ...], manifest_path: str, requested_years: tuple[int, ...] = (), year_sources: tuple[DroneYearSource, ...] = (), result_parent: str | None = None, schema_version: int = _INVENTORY_SCHEMA_VERSION)

Serializable remote collection inventory and campaign expectation set.

Attributes:

Name Type Description
source str

Remote collection root, year-bound source mapping, or supported source specification; inspect_drone_collection resolves it before transfer.

backend str

RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter.

created_utc str

Recorded UTC inventory/state/run timestamp; unavailable completion time remains explicit.

packages tuple[RemoteDronePackage, ...]

Immutable remote package inventory, including eligible and excluded records.

manifest_path str

Existing acquisition manifest path, or None to follow supported discovery.

requested_years tuple[int, ...], default=()

Requested acquisition years whose manifest expectations define campaign completeness.

year_sources tuple[DroneYearSource, ...], default=()

Per-year source-resolution and expectation records.

result_parent str | None, default=None

Resolved remote result parent or configured result package name; uploads remain explicit opt-in operations.

schema_version int, default=_INVENTORY_SCHEMA_VERSION

Serialized payload schema version; preserve it when storing or exchanging this record.

eligible_packages property

eligible_packages: tuple[RemoteDronePackage, ...]

Select package records marked eligible for staging.

Returns:

Type Description
tuple[RemoteDronePackage, ...]

Tuple of package records whose eligibility equals eligible; no transfer is performed.

excluded_packages property

excluded_packages: tuple[RemoteDronePackage, ...]

Select package records excluded from staging.

Returns:

Type Description
tuple[RemoteDronePackage, ...]

Tuple of package records whose eligibility is not eligible, retaining their recorded reasons.

discovery_complete property

discovery_complete: bool

Report whether all requested-year source discovery is complete.

Returns:

Type Description
bool

Whether the recorded state satisfies this method's predicate; no source processing is performed.

year_summaries

year_summaries() -> dict[str, dict[str, Any]]

Return deterministic manifest-aware discovery evidence by year.

to_dict

to_dict() -> dict[str, Any]

Serialize this record to its established machine-readable mapping.

Returns:

Type Description
dict[str, Any]

Mapping of record fields and workflow-derived summary entries in the established serialization schema.

write

write(output_dir: str | Path) -> tuple[Path, Path]

Write inventory JSON and CSV tables.

Parameters:

Name Type Description Default
output_dir str | Path

Directory for generated products; bulk outputs must be outside the read-only input tree.

required

Returns:

Type Description
tuple[Path, Path]

Inventory JSON path and package CSV path, in that order.

Audience: advanced.

BulkReadinessValidation dataclass

BulkReadinessValidation(path: str, bulk_ready: bool, canonical_flightline_id: str | None, candidate_count: int, accepted_count: int, translation_available: bool, translation_eligible: bool, exclusion_reasons: tuple[str, ...] = (), error: str | None = None)

Result of classifying one producer directory with bulk's own discovery.

to_dict

to_dict() -> dict[str, Any]

Audience: advanced.

StagedDroneInput dataclass

StagedDroneInput(package_path: str, local_path: str, remote_path: str, size_bytes: int, status: str, checksum: str | None = None)

Validated local copy of one required remote H5.

to_dict

to_dict() -> dict[str, Any]

Audience: public. Also exported as spectralbridge.DroneCampaignConfig.

DroneCampaignConfig dataclass

DroneCampaignConfig(years: tuple[int, ...] = (), manifest_path: str | Path | None = None, manifest_timezone: str | None = 'UTC', cleanup_inputs: bool = True, resume: bool = True, require_complete_campaign: bool = True, apply_topo: bool = True, apply_brdf: bool = True, apply_brightness_adjustment: bool = False, require_solar_geometry: bool = True, extraction_mode: str = 'full', parquet_chunk_size: int = 2048, apply_translation: bool = True, translation_strict: bool = False, landsat_qa: bool = True, extraction_workers: int = 1, max_remote_depth: int = 8, max_remote_entries: int = 100000, result_name: str | None = None)

Explicit production settings for independent drone flight checkpoints.

Attributes:

Name Type Description
years tuple[int, ...], default=()

Requested acquisition years used to resolve sources and verify campaign completeness.

manifest_path str | Path | None, default=None

Existing acquisition manifest path, or None to follow supported discovery.

manifest_timezone str | None, default='UTC'

Timezone used to interpret manifest acquisition timestamps.

cleanup_inputs bool, default=True

Remove staged inputs only after the established producer/readiness checkpoint has completed.

resume bool, default=True

Reuse valid durable per-flight checkpoints on restart.

require_complete_campaign bool, default=True

Require all expected eligible flights to be bulk-ready before population analysis; prevents silent partial-population claims.

apply_topo bool, default=True

Enable the existing topographic correction when required terrain/geometry metadata are available.

apply_brdf bool, default=True

Enable the existing BRDF correction when required angular metadata are available.

apply_brightness_adjustment bool, default=False

Opt into the established brightness adjustment; does not change the packaged coefficients.

require_solar_geometry bool, default=True

Require scientifically usable solar geometry before correction rather than silently proceeding without it.

extraction_mode str, default='full'

'full' writes pixel Parquet, 'polygon' requires polygons; None preserves the entry point's documented default extraction behavior.

parquet_chunk_size int, default=2048

Positive pixel/window processing budget for bounded extraction; the default and interpretation follow the selected producer.

apply_translation bool, default=True

Create separate Landsat-like application products using the reviewed coefficient registry; does not overwrite corrected native MicaSense.

translation_strict bool, default=False

Treat unsupported/flagged translation conditions as blocking rather than returning the configured non-strict status.

landsat_qa bool, default=True

Enable actual Landsat comparison QA for translated products; requires apply_translation=True and appropriate data/dependencies.

extraction_workers int, default=1

Positive number of independent flightline extraction workers; storage bandwidth can limit useful concurrency.

max_remote_depth int, default=8

Positive remote traversal limit controlling inventory depth or inspected-entry budget.

max_remote_entries int, default=100000

Positive remote traversal limit controlling inventory depth or inspected-entry budget.

result_name str | None, default=None

Resolved remote result parent or configured result package name; uploads remain explicit opt-in operations.

validate

validate() -> None

Validate configuration ranges and supported option combinations.

Returns:

Type Description
None

No return value; validation raises on unsupported configuration and directory creation persists the canonical hierarchy.

Raises:

Type Description
ValueError

If option values violate the configuration or relationship-selection contract.

to_dict

to_dict() -> dict[str, Any]

Serialize this record to its established machine-readable mapping.

Returns:

Type Description
dict[str, Any]

Mapping of record fields and workflow-derived summary entries in the established serialization schema.

Audience: public. Also exported as spectralbridge.DroneFlightStatus.

DroneFlightStatus dataclass

DroneFlightStatus(remote_package_path: str, flight_stem: str | None, state: str, updated_utc: str, local_input_path: str | None = None, local_flightline_path: str | None = None, transfer_status: str | None = None, bulk_ready: bool = False, reused: bool = False, input_removed: bool = False, reason: str | None = None)

Durable campaign state for one expected remote flight package.

Attributes:

Name Type Description
remote_package_path str

Authoritative remote ExportPackage or HDF5 location; inventory does not imply it has been downloaded.

flight_stem str | None

Canonical scientific flightline identifier; histories from the same underlying flight must retain this identity.

state str

Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically.

updated_utc str

Recorded UTC inventory/state/run timestamp; unavailable completion time remains explicit.

local_input_path str | None, default=None

Backing input product path retained for traceability and restart checks.

local_flightline_path str | None, default=None

Canonical local producer output directory; completed products are reused only after readiness validation.

transfer_status str | None, default=None

Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically.

bulk_ready bool, default=False

Whether the recorded product satisfies the corresponding translation availability/eligibility or producer-to-bulk gate; does not certify empirical sensor calibration.

reused bool, default=False

Recorded checkpoint reuse or staged-input cleanup outcome; inspect flight state for scientific success.

input_removed bool, default=False

Recorded checkpoint reuse or staged-input cleanup outcome; inspect flight state for scientific success.

reason str | None, default=None

Explicit reason for exclusion, failure or unavailable status; None when no reason applies.

to_dict

to_dict() -> dict[str, Any]

Serialize this record to its established machine-readable mapping.

Returns:

Type Description
dict[str, Any]

Mapping of record fields and workflow-derived summary entries in the established serialization schema.

Audience: public. Also exported as spectralbridge.DroneCampaignResult.

DroneCampaignResult dataclass

DroneCampaignResult(inventory: DroneCollectionInventory, flights: tuple[DroneFlightStatus, ...], work_dir: str, flight_outputs: str, state_dir: str, status: str, started_utc: str, completed_utc: str, config: DroneCampaignConfig)

Completed, partial, or failed per-flight campaign outcome.

Attributes:

Name Type Description
inventory DroneCollectionInventory

DroneCollectionInventory produced by inspect_drone_collection, including eligibility and resolved source provenance.

flights tuple[DroneFlightStatus, ...]

Per-flight durable outcomes, including failed, blocked and completed states.

work_dir str

Local campaign workspace containing staging, flight outputs and restart/status records.

flight_outputs str

Local producer-output or durable restart/status directory.

state_dir str

Local producer-output or durable restart/status directory.

status str

Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically.

started_utc str

Recorded UTC inventory/state/run timestamp; unavailable completion time remains explicit.

completed_utc str

Recorded UTC inventory/state/run timestamp; unavailable completion time remains explicit.

config DroneCampaignConfig

Configuration object for this workflow; None selects the documented defaults of its configuration class.

completed_flights property

completed_flights: tuple[DroneFlightStatus, ...]

Select producer flight records currently marked bulk-ready.

Returns:

Type Description
tuple[DroneFlightStatus, ...]

Tuple of producer flight records marked bulk_ready; this property does not rerun readiness validation.

failed_flights property

failed_flights: tuple[DroneFlightStatus, ...]

Select failed or scientifically blocked flight records.

Returns:

Type Description
tuple[DroneFlightStatus, ...]

Tuple of flight records whose state is failed or blocked.

requested_years_complete property

requested_years_complete: bool

Report whether every requested year satisfies its manifest expectation.

Returns:

Type Description
bool

Whether the recorded state satisfies this method's predicate; no source processing is performed.

year_summaries

year_summaries() -> dict[str, dict[str, Any]]

Combine inventory evidence and durable processing state by year.

summary

summary() -> dict[str, Any]

Summarize recorded flight/campaign states without rerunning processing.

Returns:

Type Description
dict[str, Any]

Recorded campaign counts, per-year completeness and output locations; this summary does not regenerate source products.

to_dict

to_dict() -> dict[str, Any]

Serialize this record to its established machine-readable mapping.

Returns:

Type Description
dict[str, Any]

Mapping of record fields and workflow-derived summary entries in the established serialization schema.

Audience: public. Also exported as spectralbridge.BulkProductionResult.

BulkProductionResult dataclass

BulkProductionResult(inventory: DroneCollectionInventory, campaign: DroneCampaignResult, bulk_result: Mapping[str, Any], summary_result: Mapping[str, Any], local_result_path: str, remote_result_path: str | None, preflight_result: Mapping[str, Any], status: str = 'complete')

Top-level campaign, bulk, summary, package, and upload result.

Attributes:

Name Type Description
inventory DroneCollectionInventory

DroneCollectionInventory produced by inspect_drone_collection, including eligibility and resolved source provenance.

campaign DroneCampaignResult

DroneCampaignResult retaining producer inventory, completeness and per-flight outcomes.

bulk_result Mapping[str, Any]

Structured result returned by the corresponding compact bulk, interpretation or eligibility-preflight stage.

summary_result Mapping[str, Any]

Structured result returned by the corresponding compact bulk, interpretation or eligibility-preflight stage.

local_result_path str

Final compact result package path; remote location may be absent when upload is disabled.

remote_result_path str | None

Final compact result package path; remote location may be absent when upload is disabled.

preflight_result Mapping[str, Any]

Structured result returned by the corresponding compact bulk, interpretation or eligibility-preflight stage.

status str, default='complete'

Recorded stage-specific outcome or eligibility state; inspect reason/detail and the relevant workflow before interpreting it scientifically.

completed_flights property

completed_flights: tuple[DroneFlightStatus, ...]

Select producer flight records currently marked bulk-ready.

Returns:

Type Description
tuple[DroneFlightStatus, ...]

Tuple of producer flight records marked bulk_ready; this property does not rerun readiness validation.

failed_flights property

failed_flights: tuple[DroneFlightStatus, ...]

Select failed or scientifically blocked flight records.

Returns:

Type Description
tuple[DroneFlightStatus, ...]

Tuple of flight records whose state is failed or blocked.

summary

summary() -> dict[str, Any]

Summarize recorded flight/campaign states without rerunning processing.

Returns:

Type Description
dict[str, Any]

Recorded campaign counts, per-year completeness and output locations; this summary does not regenerate source products.

to_dict

to_dict() -> dict[str, Any]

Serialize this record to its established machine-readable mapping.

Returns:

Type Description
dict[str, Any]

Mapping of record fields and workflow-derived summary entries in the established serialization schema.

Audience: public. Also exported as spectralbridge.DroneCampaignIncompleteError.

DroneCampaignIncompleteError

DroneCampaignIncompleteError(message: str, result: DroneCampaignResult)

The intended eligible population was not fully bulk-ready.

Parameters:

Name Type Description Default
message str

Explanation of the failed campaign completeness or readiness gate.

required
result DroneCampaignResult

Durable per-flight outcomes retained as exception.result for inspection.

required

Audience: public. Also exported as spectralbridge.validate_bulk_ready_flightline.

validate_bulk_ready_flightline

validate_bulk_ready_flightline(path: str | Path) -> BulkReadinessValidation

Apply bulk's real discovery/classification contract to one producer output.

Parameters:

Name Type Description Default
path str | Path

Existing producer flightline directory to validate using the actual bulk discovery and product-classification contract.

required

Returns:

Type Description
BulkReadinessValidation

Structured readiness result, canonical identity, accepted counts, availability and any captured discovery error.

See Also

spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.

Audience: public. Also exported as spectralbridge.inspect_drone_collection.

inspect_drone_collection

inspect_drone_collection(source: DroneSource, *, backend: RemoteCollectionBackend | None = None, manifest: str | Path | None = None, years: Sequence[int] | None = None, local_output_dir: str | Path | None = None, max_depth: int = 8, max_entries: int = 100000, inventory_output_dir: str | Path | None = None) -> DroneCollectionInventory

Inventory remote ExportPackages and required H5s before large transfer.

Parameters:

Name Type Description Default
source DroneSource

Remote collection root, year-bound source mapping, or supported source specification; inspect_drone_collection resolves it before transfer.

required
backend RemoteCollectionBackend | None

RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter.

None
manifest str | Path | None

Existing flight manifest providing acquisition identity/time; None uses supported discovery or embedded metadata.

None
years Sequence[int] | None

Requested acquisition years used to resolve sources and verify campaign completeness.

None
local_output_dir str | Path | None

Existing local flight-output root used to recognize completed, bulk-ready flights during remote inventory.

None
max_depth int

Maximum recursive remote inventory depth; bounds traversal cost.

8
max_entries int

Maximum entries inspected during remote inventory; bounds unintentional collection-wide traversal.

100000
inventory_output_dir str | Path | None

Optional directory for inventory JSON/CSV artifacts; None returns the inventory without those files.

None

Returns:

Type Description
DroneCollectionInventory

Serializable resolved remote/local inventory with per-package eligibility and source/year provenance.

See Also

spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.

Examples:

Requires an authorized remote source and configured backend; this inventories metadata before large transfer.

>>> from spectralbridge import inspect_drone_collection
>>> inventory = inspect_drone_collection(remote_source, years=(2025,))

Audience: advanced.

stage_drone_package

stage_drone_package(package: RemoteDronePackage, *, source: str, staging_dir: str | Path, backend: RemoteCollectionBackend) -> StagedDroneInput

Download or reuse one complete H5 while preserving ExportPackage layout.

Audience: public. Also exported as spectralbridge.stage_drone_collection.

stage_drone_collection

stage_drone_collection(inventory: DroneCollectionInventory, *, staging_dir: str | Path, backend: RemoteCollectionBackend | None = None) -> tuple[StagedDroneInput, ...]

Stage every eligible H5; campaign runners normally stage one at a time.

Parameters:

Name Type Description Default
inventory DroneCollectionInventory

DroneCollectionInventory produced by inspect_drone_collection, including eligibility and resolved source provenance.

required
staging_dir str | Path

Local directory for downloaded input packages; stage_drone_collection stages all eligible inputs, unlike the bounded campaign runner.

required
backend RemoteCollectionBackend | None

RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter.

None

Returns:

Type Description
tuple[StagedDroneInput, ...]

StagedDroneInput records for every eligible package; unlike the campaign runner, this stages the full eligible inventory.

See Also

spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.

Audience: public. Also exported as spectralbridge.run_drone_campaign.

run_drone_campaign

run_drone_campaign(source: DroneSource, *, work_dir: str | Path, years: Sequence[int] | None = None, manifest: str | Path | None = None, backend: RemoteCollectionBackend | None = None, config: DroneCampaignConfig | None = None) -> DroneCampaignResult

Stage and run independent restart-safe drone producer checkpoints.

Parameters:

Name Type Description Default
source DroneSource

Remote collection root, year-bound source mapping, or supported source specification; inspect_drone_collection resolves it before transfer.

required
work_dir str | Path

Local campaign workspace containing staging, flight outputs and restart/status records.

required
years Sequence[int] | None

Requested acquisition years used to resolve sources and verify campaign completeness.

None
manifest str | Path | None

Existing flight manifest providing acquisition identity/time; None uses supported discovery or embedded metadata.

None
backend RemoteCollectionBackend | None

RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter.

None
config DroneCampaignConfig | None

Configuration object for this workflow; None selects the documented defaults of its configuration class.

None

Returns:

Type Description
DroneCampaignResult

Per-flight outcomes, inventory, status and restart/output locations; inspect completeness before population analysis.

See Also

spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.

Examples:

Requires a configured remote source, acquisition manifest and suitable local storage; source packages are staged one at a time.

>>> from spectralbridge import run_drone_campaign
>>> result = run_drone_campaign(remote_source, work_dir=work_dir, years=(2025,))

Audience: advanced.

package_drone_bulk_results

package_drone_bulk_results(*, campaign: DroneCampaignResult, preflight_output: str | Path, bulk_output: str | Path, package_dir: str | Path) -> Path

Build a compact, checksummed closeout package without raw or cache data.

Audience: advanced.

verify_uploaded_results

verify_uploaded_results(local_package: str | Path, remote_path: str, *, backend: RemoteCollectionBackend) -> dict[str, Any]

Verify every packaged file remotely by presence and size/checksum metadata.

Audience: public. Also exported as spectralbridge.run_drone_bulk_production.

run_drone_bulk_production

run_drone_bulk_production(*, source: DroneSource, years: Sequence[int], work_dir: str | Path, manifest: str | Path | None = None, backend: RemoteCollectionBackend | None = None, config: DroneCampaignConfig | None = None, upload_results: bool = False, require_complete_campaign: bool = True) -> BulkProductionResult

Run remote inventory through producer, bulk, reporting, and optional upload.

Parameters:

Name Type Description Default
source DroneSource

Remote collection root, year-bound source mapping, or supported source specification; inspect_drone_collection resolves it before transfer.

required
years Sequence[int]

Requested acquisition years used to resolve sources and verify campaign completeness.

required
work_dir str | Path

Local campaign workspace containing staging, flight outputs and restart/status records.

required
manifest str | Path | None

Existing flight manifest providing acquisition identity/time; None uses supported discovery or embedded metadata.

None
backend RemoteCollectionBackend | None

RemoteCollectionBackend implementation; None selects the normal noninteractive gocmd adapter.

None
config DroneCampaignConfig | None

Configuration object for this workflow; None selects the documented defaults of its configuration class.

None
upload_results bool

Upload and verify the completed compact result package at its resolved remote destination; False keeps results local.

False
require_complete_campaign bool

Require all expected eligible flights to be bulk-ready before population analysis; prevents silent partial-population claims.

True

Returns:

Type Description
BulkProductionResult

Inventory/campaign, preflight, bulk and summary results plus local/remote package locations.

Raises:

Type Description
DroneCampaignIncompleteError

If required campaign completeness or the producer-to-bulk population gate fails.

FileExistsError

If a protected destination already exists or conflicts with the requested product.

RuntimeError

If required processing or artifact validation cannot complete.

See Also

spectralbridge.pipelines.pipeline.process_one_flightline : Related source-derived API contract.

Examples:

Requires real remote source data and complete producer inputs. Upload is an explicit separate choice.

>>> from spectralbridge import run_drone_bulk_production
>>> result = run_drone_bulk_production(source=remote_source, years=(2025,), work_dir=work_dir, upload_results=False)

Explicitly exported constants and type aliases

These values describe package metadata, schemas or configuration; they are not observations from a production dataset.

Name Source expression
DroneSource str \| Mapping[int, str]