Skip to main content

Python helpers for the EDC Dropmate

Project description

Dropmate-py

PyPI - Python Version PyPI PyPI - License pre-commit.ci status Code style: black

Python helpers for the EDC Dropmate.

Installation

Install by cloning this repository and installing into a virtual environment:

$ pip install .

You can confirm proper installation via the dropmate CLI:

$ dropmate --help
Usage: dropmate [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  audit        Audit a consolidated Dropmate log.
  audit-bulk   Audit a directory of consolidated Dropmate logs.
  consolidate  Merge a directory of logs into a simplified drop record.

Usage

NOTE: All functionality assumes that log records have been provided by Dropmate app version 1.5.16 or newer. Prior versions may not contain all the necessary data columns to conduct the data audit, and there may also be column naming discrepancies between the iOS and Android apps.

Supported Audits

The following audits are supported:

  • Empty Drop Record
  • Minimum Altitude Loss
  • Minimum Time Between Drop Records
    • Time delta between the end of the previous drop record and the beginning of the next.
    • Short deltas may indicate that the previous drop record ended prematurely & restarted mid-air
  • Minimum Dropmate Firmware Version
  • Dropmate Internal Clock Drift
    • Measured as the delta between the scanning device's clock at scan time and the Dropmate's internal clock

Environment Variables

The following environment variables are provided to help customize pipeline behaviors.

Variable Name Description Default
PROMPT_START_DIR Start path for UI file/dir prompt '.'

dropmate audit

Process a consolidated Dropmate log CSV.

Input Parameters

Parameter Description Type Default
--log-filepath Path to Dropmate log CSV to parse. Path|None GUI Prompt
--min-alt-loss-ft Threshold altitude delta, feet. int 200
--min-firmware Threshold firmware version. int|float 5
--internal-time-delta-minutes Dropmate internal clock delta from real-time. int 60
--time-between-delta-minutes Delta between the start of a drop record and end of the previous int 10

dropmate audit-bulk

Batch process a directory of consolidated Dropmate log CSVs.

Input Parameters

Parameter Description Type Default
--log-dir Path to Dropmate log directory to parse. Path|None GUI Prompt
--log-pattern Dropmate log file glob pattern.1,2 str "*.csv"
--min-alt-loss-ft Threshold altitude delta, feet. int 200
--min-firmware Threshold firmware version. int|float 5
--internal-time-delta-minutes Dropmate internal clock delta from real-time. int 60
--time-between-delta-minutes Delta between the start of a drop record and end of the previous int 10
  1. Case sensitivity is deferred to the host OS
  2. Recursive globbing requires manual specification (e.g. **/*.csv)

dropmate consolidate

Merge a directory of Dropmate app outputs into a deduplicated, simplified drop record.

Input Parameters

Parameter Description Type Default
--log-dir Path to Dropmate log directory to parse. Path|None GUI Prompt
--log-pattern Dropmate log file glob pattern.1,2 str "dropmate_records_*"
--out-filename Consolidated log filename.3 str consolidated_dropmate_records.csv
  1. Case sensitivity is deferred to the host OS
  2. Recursive globbing requires manual specification (e.g. **/dropmate_records_*)
  3. Consolidate log will be written into the specified log directory; any existing file of the same name will be overwritten

Contributing

NOTE: Due to deployment environment restrictions preventing the use of compiled libraries (e.g. Polars, Pandas/Numpy), tooling is intentionally limited to pure-Python implementations.

Development Environment

This project uses Poetry to manage dependencies. With your fork cloned to your local machine, you can install the project and its dependencies to create a development environment using:

$ poetry install

A pre-commit configuration is also provided to create a pre-commit hook so linting errors aren't committed:

$ pre-commit install

Testing & Coverage

A pytest suite is provided, with coverage reporting from pytest-cov. A tox configuration is provided to test across all supported versions of Python. Testing will be skipped for Python versions that cannot be found.

$ tox

Details on missing coverage, including in the test suite, is provided in the report to allow the user to generate additional tests for full coverage.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dropmate_py-1.0.0.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

dropmate_py-1.0.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file dropmate_py-1.0.0.tar.gz.

File metadata

  • Download URL: dropmate_py-1.0.0.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.18

File hashes

Hashes for dropmate_py-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f767adcb58110b01d21eab348fdc2243cd4a76be1b5b184d78f15b55760de923
MD5 00791ccaca8eceab618f115e9ffcbcfe
BLAKE2b-256 7e64857b5e05152fbc3f979af51eddca016a2c26a9404b125614d68d9bb7e3e5

See more details on using hashes here.

File details

Details for the file dropmate_py-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: dropmate_py-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.18

File hashes

Hashes for dropmate_py-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 314467190934b12550058ac87d0ef35fbab80e13db291b5be3c4bc5d5d12416d
MD5 792b7d446e199f88dca6bf5cdca7f7e4
BLAKE2b-256 119d7dfb05044c07b15c9e01a03876bb805980048e249136494f8991539e1699

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page