ugrc-sweeper 

The data cleaning service.
Available Sweepers
Addresses
Checks that addresses have minimum required parts and optionally normalizes them.
Duplicates
Checks for duplicate features.
Empties
Checks for empty geometries.
Metadata
Checks to make sure that the metadata meets the Basic SGID Metadata Requirements.
Tags
Checks to make sure that existing tags are cased appropriately. This mean that the are title-cased other than known abbreviations (e.g. UGRC, BLM) and articles (e.g. a, the, of).
This check also verifies that the data set contains a tag that matches the database name (e.g. SGID) and the schema (e.g. Cadastre).
--try-fix adds missing required tags and title-cases any existing tags.
Summary
Checks to make sure that the summary is less than 2048 characters (a limitation of AGOL) and that it is shorter than the description.
Description
Checks to make sure that the description contains a link to a data page on gis.utah.gov.
Use Limitations
Checks to make sure that the text in this section matches the official text for UGRC.
--try-fix updates the text to match the official text.
Parsing Addresses
This project contains a module that can be used as a standalone address parser, sweeper.address_parser. This allows developer to take advantage of sweepers advanced address parsing and normalization without having to run the entire sweeper process.
Usage Example
from sweeper.address_parser import Address
address = Address('123 South Main Street')
print(address)
'''
--> Parsed Address:
{'address_number': '123',
'normalized': '123 S MAIN ST',
'prefix_direction': 'S',
'street_name': 'MAIN',
'street_type': 'ST'}
'''
Available Address class properties
All properties default to None if there is no parsed value.
address_number
address_number_suffix
prefix_direction
street_name
street_direction
street_type
unit_type
unit_id
If no unit_type is found, this property is prefixed with # (e.g. # 3). If unit_type is found, # is stripped from this property.
city
zip_code
po_box
The PO Box if a po-box-type address was entered (e.g. po_box would be 1 for p.o. box 1).
normalized
A normalized string representing the entire address that was passed into the constructor. PO Boxes are normalized in this format PO BOX <number>.
Installation (requires Pro 2.7+)
- clone arcgis conda environment
conda create --name sweeper --clone arcgispro-py3
- activate environment
activate sweeper
- install sweeper
pip install ugrc-sweeper
- Optionally duplicate
config.sample.jsonasconfig.jsonin the folder where you will run sweeper.
Exclusions
Tables can be skipped by adding values to the EXCLUSIONS.<sweeper_key> config array. These values are matched against table names using fnmatch. Note that these do not apply when using the --table-name argument.
Development
- clone arcgis conda environment
conda create --name sweeper --clone arcgispro-py3
- activate environment
activate sweeper
- install required dependencies to work on sweeper
pip install -e ".[tests]"
test_metadata.pyuses a SQL database that needs to be restored viasrc/sweeper/tests/data/Sweeper.bakto your local SQL Server.- run sweeper:
sweeper - test:
pytest - lint:
ruff check . - format:
ruff format .
Metadata
Release files for ugrc-sweeper 2.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ugrc_sweeper-2.0.8.tar.gz | 30.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ugrc_sweeper-2.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.4 kB
Release files / ugrc_sweeper-2.0.8.tar.gz
| Download URL | ugrc_sweeper-2.0.8.tar.gz |
|---|---|
| Size | 30.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9a318802609ba2717ec636e82252d292a62578ee385421e53e81e4e075e20226
|
|
BLAKE2b-256 checksum How to use checksums |
77caa9a9b9bf81f569d5a478cd3cd1f3550b4ce2207d3c8887f7e87e5e811eaa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 24, 2026.
Transparency logRelease files / ugrc_sweeper-2.0.8-py3-none-any.whl
| Download URL | ugrc_sweeper-2.0.8-py3-none-any.whl |
|---|---|
| Size | 25.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ab147be9d0ce7d8c15c9ca4ad297e69ae40e00afd5e30f196410a8a7e17dc3c3
|
|
BLAKE2b-256 checksum How to use checksums |
49af880cb28aa03ed4dd47d12d4e48fc8f56e956d3a678b5d746a994bde25654
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 24, 2026.
Transparency log