Skip to main content

A tool to help SBOs validate BEAD Challenge Process data files before submission to NTIA.

Project description

BEAD INSPECTOR

drawing

Welcome to the BEAD Inspector, presented by the University of Chicago's Data Science Institute.

As part of the NTIA BEAD Challenge process, eligible entities are required to submit a specific set of data deliverables to the NTIA. The purpose of this package is to validate NTIA BEAD challenge process data (against the official specification and Notices of Changes to Process) and provide feedback that helps Eligible Entities identify errors in their submittable CSVs.

More information on the BEAD Challenge process can be found:

  1. Video Link
  2. Detailed BEAD Description
  3. Challenge Submission Templates
  4. Link to challenge notice

Importantly, this is not an official package supported by the NTIA. The authors of this package present this without any warranty or guarantees.

Who should use this package

This package requires knowledge of the command line and a computer installed with Python and pip. The code has been tested on both Windows PCs and Macs.

What this package checks

This package focuses on a set of data quality issues that are easy to overlook when submitting your challenge results. This package will check the following files for the following issues

File Name
cai.csv
challengers.csv
challenges.csv
cai_challenges.csv
post_challenge_locations.csv
post_challenge_cai.csv

Quality Checks

  1. Column based data quality issues: Errors related to data types present in each column. Examples of this include making sure that numeric and text fields are properly typed.
  2. Row based data quality issues: The BEAD data deliverable specification contains a number of row-level conditional logic. Examples of this include fields that need to be present conditional on the challenge type.
  3. Multi-file internal consistency: Errors related to cross-file consistency, such as making sure that every challenger in the challenges.csv file exist in the challengers.csv file.

What this package does not check

  1. Availability / Fabric Validation: This package does not check locations against the Fabric or FCC Availability Data.
  2. Correctness of open text fields: There are a number of open text fields (such as resolution in the challenges.csv file. BEAD INSPECTOR checks to make sure that these fields are not empty, but does not check to verify the correctness of the content.

Using BEAD Inspector

This python package is installed via pip and can be used directly from the command line following the instructions below. Refer to the advanced usage section for non-command line use.

Pre-requisites

Make sure that you computer has access to Python and Pip. You can do this by going to the command line and typing pip --version and python --version. Both of these should return version numbers. The Python version needs to be greater than 3.7. As with all third part packages, we recommend using a virtual environment when using, but it is not required.

Installation

This package can be installed via python's package manager, pip, by typing pip install bead_inspector at the command line.

Creating a Report

  1. Put all files that you wish to have checked in a single directory, noting the location. Make sure that all filenames conform to the NTIA standard filenames. If you wish to only check a subset of the files then put that subset inside the directory. Bead Inspector will only analyze those files that it finds in the specified location.

  2. Once files are copied, enter the following at the command line, making sure to put a full path location.

    > bead_inspector /path_to_files

  3. Note that running the command may take a few minutes, depending on the size of the files.

  4. Once the command is complete two files will be generated:

    1. path_to_files/reports/validation_issue_logs_{DATE}_{TIME}.html
    2. path_to_files/logs/validation_issue_logs_{DATE}_{TIME}.json

The html file in the reports subdirectory is a human readable version of the report. For most users this is the file that should be used to evaluate the quality of the reports. The json file is presented in case you wish to programatically interpret the resulting files.

Understanding the Report

FAQ

Development

If you find a bug or wish to highlight an issue, please use the github tools above. TODO: ADD LINKS TO THE ISSUES PAGE. If you wish to help with development of this project, please submit a pull request which describes the code changes that you are making and why.

Note This repo uses pre-commit hook, please install by typing pre-commit install.

Advanced Usage

You can programmatically access BEAD inspector by importing the package and passing it a directory containing the files.

from pathlib import Path
import bead_inspector

bcdv = bead_inspector.validator.BEADChallengeDataValidator(
    data_directory=Path("path/to/dir/containing/csvs"),
    single_error_log_limit=5,
)

You can also generate a report from an existing log file, such as in the example below.

from pathlib import Path
import bead_inspector

issues_file_path=Path("path/to/logs_dir/validation_issue_logs_date_time.json")
reporter = bead_inspector.reporting.ReportGenerator(issues_file_path)

This will output a report file (HTML) to the /reports/ directory parallel to /logs/ directory containing the .json file of issues.

The directory of CSVs (/output_csv/ in the above example) should look like this now (with a new .json file and .html file being added each time BEADChallengeDataValidator() is run).

$ cd output_csv/
$ tree
.
├── logs
│   └── validation_issue_logs_20240714_113216.json
├── reports
│   └── validation_issue_logs_20240714_113216.html
├── cai_challenges.csv
├── cai.csv
├── challengers.csv
├── challenges.csv
├── post_challenge_cai.csv
├── post_challenge_locations.csv
├── underserved.csv
└── unserved.csv

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

bead_inspector-0.0.post1.tar.gz (30.8 kB view details)

Uploaded Source

Built Distribution

bead_inspector-0.0.post1-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file bead_inspector-0.0.post1.tar.gz.

File metadata

  • Download URL: bead_inspector-0.0.post1.tar.gz
  • Upload date:
  • Size: 30.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.8

File hashes

Hashes for bead_inspector-0.0.post1.tar.gz
Algorithm Hash digest
SHA256 6c693564e2bbb0d7f213b0dcc881ae98c9bbb9dbb771f1bea6a271c38d22432c
MD5 b1694ef56f8ef69f1ebf4fee35a99ba4
BLAKE2b-256 2aafb0de86615479ad84a16002a7468aa4dba371be0d28aca155356c5d45f7e0

See more details on using hashes here.

File details

Details for the file bead_inspector-0.0.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for bead_inspector-0.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 41af20df286f93a167a4fb70e186dac2c53489c1ebaa0f240c2035d4f11184ac
MD5 40140b944501cead3ecf7a4a651d051e
BLAKE2b-256 cf0696c51e6799f91e3eeea1fe95418dc768945613b4eef54fcde780569f3c26

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