Skip to main content

The pythonbible library.

Project description

Image

The pythonbible library serves several purposes related to the Christian Bible and Scripture references.

Latest Version
License
Tests
Code Quality
Supported Python Versions

Documentation

The full documentation for pythonbible can be found at docs.python.bible.

Installation

python3 -m pip install pythonbible

Features

Searching text for scripture references

Given a text, search for scripture references and return any that are found in a list of NormalizedReferences.

For example, given the following text:

import pythonbible as bible

text = "The parable of the lost sheep is told in Matthew 18:12-14 and Luke 15:3-7."
references = bible.get_references(text)

The search functionality should return the following list of scripture references:

[
    NormalizedReference(
        book=<Book.MATTHEW: 40>,
        start_chapter=18,
        start_verse=12,
        end_chapter=18,
        end_verse=14,
        end_book=None
    ),
    NormalizedReference(
        book=<Book.LUKE: 42>,
        start_chapter=15,
        start_verse=3,
        end_chapter=15,
        end_verse=7,
        end_book=None
    )
]

Converting a normalized scripture reference into a list of integer verse ids

Any single verse can be identified by an integer that contains the book, chapter, and verse information. The first 1-2 digits of the integer id represent the book, the next 3 digits represent the chapter, and the last 3 digits represent the verse.

For example, "Genesis 1:1" would be represented as:

1001001

"John 3:16" would be represented as:

43003016

The book of John is the 43rd book of the Bible, "003" represents the 3rd chapter, and "016" represents the sixteenth verse.

Since the book, chapter, and verses are standardized and unlikely to change, this allows us to reference verses in a very efficient way.

Given a normalized scripture reference, which can contain one or more verses, the conversion functionality will convert that normalized scripture reference into a list of verse id integers.

For example, given the following normalized scripture reference for Genesis 1:1-4:

import pythonbible as bible

reference = bible.NormalizedReference(bible.Book.GENESIS, 1, 1, 1, 4)
verse_ids = bible.convert_reference_to_verse_ids(reference)

The conversion functionality would return the following list of verse id integers:

[1001001, 1001002, 1001003, 1001004]

Converting a list of verse id integers into a list of normalized scripture references

The reverse of the above feature, we can take a list of integer verse ids and convert it back into a list of normalized scripture references.

For example, the following list of verse ids represents the references Matthew 18:12-14 and Luke 15:3-7.

import pythonbible as bible

verse_ids = [40018012, 40018013, 40018014, 42015003, 42015004, 42015005, 42015006, 42015007, ]
references = bible.convert_verse_ids_to_references(verse_ids)

The conversion functionality would return the following list of normalized scripture references.

[
    NormalizedReference(
        book=<Book.MATTHEW: 40>,
        start_chapter=18,
        start_verse=12,
        end_chapter=18,
        end_verse=14,
        end_book=None
    ),
    NormalizedReference(
        book=<Book.LUKE: 42>,
        start_chapter=15,
        start_verse=3,
        end_chapter=15,
        end_verse=7,
        end_book=None
    )
]

Converting a list of normalized scripture references into a formatted string scripture reference

Given a list of normalized references, this feature formats them into a human-readable scripture reference string.

It sorts the list so that the references appear in the order they would in the Bible. It also combines verses into ranges when possible.

For example:

import pythonbible as bible

text = "My favorite verses are Philippians 4:8, Isaiah 55:13, and Philippians 4:4-7."
references = bible.get_references(text)
formatted_reference = bible.format_scripture_references(references)

The resulting formatted reference should be:

'Isaiah 55:13;Philippians 4:4-8'

There are a couple of reference formatting features not yet implemented:

  • Smarter pluralization of the book of Psalms (i.e. If just one Psalm is referenced, the singular "Psalm" should be used, but if more than one Psalm is referenced, the plural "Psalms" should be used.)
  • Optional exclusion of the chapter number for books that contain only one chapter (e.g. Some prefer references like Obadiah 1-4 rather than Obadiah 1:1-4, since Obadiah contains only one chapter.)

Formatting Biblical text for print or web display in one or more open-source or public domain versions

This is still a work in progress, but there is some existing functionality related to this.

The related pythonbible-parser library includes a parser to parse OSIS formatted XML files and convert them into a more efficient format for use in Python. The King James and American Standard OSIS files have been converted into python classes and have been included in the pythonbible library and can be currently used to retrieve the text for a single verse:

import pythonbible as bible

verse_text = bible.get_verse_text(1001001, version=bible.Version.KING_JAMES)

The resulting verse_text would be:

'In the beginning God created the heaven and the earth.'

The version argument is optional and currently defaults to AMERICAN_STANDARD. Ideally, that default will be configurable in a future release.

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

pythonbible-0.13.1.tar.gz (19.7 MB view details)

Uploaded Source

Built Distribution

pythonbible-0.13.1-py3-none-any.whl (19.8 MB view details)

Uploaded Python 3

File details

Details for the file pythonbible-0.13.1.tar.gz.

File metadata

  • Download URL: pythonbible-0.13.1.tar.gz
  • Upload date:
  • Size: 19.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for pythonbible-0.13.1.tar.gz
Algorithm Hash digest
SHA256 72ee03dd59af72b28c5d7b85c95bdd8d57ddb061d4743c80b74a01a58feba382
MD5 6e58554dd420e905dbca111995299b05
BLAKE2b-256 896dad47618b6bc8fd9db72473c633adae1c6071ba6482a5b2d5b7b85240d8e1

See more details on using hashes here.

File details

Details for the file pythonbible-0.13.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pythonbible-0.13.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cd90c6980f3505a59e014c69abee5a556234a6996086c28943753610ee7a15ca
MD5 c621be2b90f91cf8befacb315c1e99c1
BLAKE2b-256 1ffcb4976d4bc0012822d6f47dba64fcdbe07e4a848c9c26472fde2455d19b27

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