Tools to work with USFM references
Project description
usfm-references
Utilities for parsing, validating and manipulating USFM (Unified Standard Format Markers) references.
This library provides:
- validators for USFM strings (verse, chapter, intro, multi references)
- a Reference model for composing and formatting references
Requirements
Python 3.9 or newer. The project CI runs on 3.9–3.12.
Installation
Install from PyPI:
pip install usfm-references
Quick Usage
Validate USFM reference strings using the valid_ helpers:
from usfm_references import valid_verse, valid_chapter, valid_multi_usfm
valid_verse("GEN.1.1") # True
valid_chapter("GEN.1") # True
valid_multi_usfm("GEN.1.1+GEN.1.3") # True
Get a book's canon grouping:
from usfm_references import convert_book_to_canon
convert_book_to_canon("GEN") # 'ot'
Reference Model
The Reference dataclass is a convenient way to parse, build and format USFM references. It
normalizes verse ranges (they are kept sorted and merged when intersecting or adjacent).
Examples:
from usfm_references import Reference
Reference.from_string("GEN.1") # whole chapter -> Reference(book='GEN', chapter=1)
Reference.from_string("GEN.1.1-3") # verse range -> verses [(1, 3)]
Reference.from_string("GEN.1.1+GEN.1.3") # multiple verses -> verses [(1, 1), (3, 3)]
Reference.from_string("GEN.INTRO1") # intro chapter -> intro=1
# Overlapping/adjacent ranges are merged:
str(Reference.from_string("GEN.1.1+GEN.1.2+GEN.1.3")) # 'GEN.1.1-3'
Development
For local development, create a venv and install dev dependencies (project uses pip-tools):
make venv
Run linting and formatting:
make lint
Run tests:
make test
A pre-commit hook is provided to lint and run tests before each commit. To install it, run:
(cd .git/hooks && ln -s ../../pre-commit pre-commit)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file usfm_references-3.0.0-py2.py3-none-any.whl.
File metadata
- Download URL: usfm_references-3.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
942a87807260c6e82eea789ebba0d03e8b09a4dd1367c1ba4fc4e56f099bcd6a
|
|
| MD5 |
3de991aa0b02ce0d5b09c6d5e15c45a6
|
|
| BLAKE2b-256 |
6ce4da9ac9381719858ec8d3ceae5c915bef944e6ebd1c7976ded04a17d45f6a
|