Skip to main content

Parse strings into Python types intelligently — booleans, numbers, dates, None, lists

Project description

philiprehberger-type-parse

Tests PyPI version License

Parse strings into Python types intelligently — booleans, numbers, dates, datetimes, UUIDs, filesizes, None, lists.

Install

pip install philiprehberger-type-parse

Usage

from philiprehberger_type_parse import parse

parse("true")        # True
parse("42")          # 42
parse("3.14")        # 3.14
parse("2026-03-15")  # datetime.date(2026, 3, 15)
parse("none")        # None
parse("hello")       # "hello"

Boolean Parsing

from philiprehberger_type_parse import parse_bool

parse_bool("yes")    # True
parse_bool("off")    # False
parse_bool("1")      # True

Number Parsing

from philiprehberger_type_parse import parse_number

parse_number("1,234")     # 1234
parse_number("$19.99")    # 19.99
parse_number("50%")       # 50

Date Parsing

from philiprehberger_type_parse import parse_date

parse_date("2026-03-15")              # datetime.date(2026, 3, 15)
parse_date("15.03.2026", dayfirst=True)  # datetime.date(2026, 3, 15)
parse_date("March 15, 2026")          # datetime.date(2026, 3, 15)

Datetime Parsing

from philiprehberger_type_parse import parse_datetime

parse_datetime("2026-03-16 14:30:00")          # datetime(2026, 3, 16, 14, 30)
parse_datetime("2026-03-16T14:30:00Z")         # datetime(2026, 3, 16, 14, 30, tzinfo=UTC)
parse_datetime("2026-03-16T14:30:00+02:00")    # datetime with +02:00 offset
parse_datetime("Mar 16, 2026 2:30 PM")         # datetime(2026, 3, 16, 14, 30)

Time Parsing

from philiprehberger_type_parse import parse_time

parse_time("14:30")             # time(14, 30)
parse_time("2:30 PM")           # time(14, 30)
parse_time("14:30:00")          # time(14, 30)
parse_time("14:30:00.123456")   # time(14, 30, 0, 123456)

UUID Parsing

from philiprehberger_type_parse import parse_uuid

parse_uuid("550e8400-e29b-41d4-a716-446655440000")    # UUID('550e8400-...')
parse_uuid("550e8400e29b41d4a716446655440000")         # UUID without hyphens
parse_uuid("{550e8400-e29b-41d4-a716-446655440000}")   # UUID with braces

Bytes / Filesize Parsing

from philiprehberger_type_parse import parse_bytes

parse_bytes("1.5 GB")     # 1500000000 (SI, base 1000)
parse_bytes("1.5 GiB")    # 1610612736 (IEC, base 1024)
parse_bytes("500 MB")     # 500000000
parse_bytes("1024 KB")    # 1024000

List Parsing

from philiprehberger_type_parse import parse_list

parse_list("a, b, c")                        # ["a", "b", "c"]
parse_list("x|y|z", separator="|")           # ["x", "y", "z"]
parse_list("1, true, hello", coerce=True)    # [1, True, "hello"]
parse_list("42, 3.14, none", coerce=True)    # [42, 3.14, None]

API

Function Description
parse(value) Auto-detect type: None, bool, int, float, UUID, datetime, date, or str
parse_bool(value) Parse true/yes/1/on/y or false/no/0/off/n
parse_number(value) Parse int or float with commas, currency, percentages
parse_date(value, *, dayfirst=False) Parse common date formats into datetime.date
parse_datetime(value, *, dayfirst=False) Parse date-time strings with optional timezone into datetime.datetime
parse_time(value) Parse time strings (24h, 12h AM/PM) into datetime.time
parse_uuid(value) Parse UUID strings (with/without hyphens/braces) into uuid.UUID
parse_bytes(value) Parse filesize strings (KB, MB, GB, KiB, MiB, GiB, etc.) to bytes
parse_list(value, *, separator=",", coerce=False) Split into trimmed, non-empty strings; optionally auto-detect types

Development

pip install -e .
python -m pytest tests/ -v

License

MIT

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

philiprehberger_type_parse-0.2.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

philiprehberger_type_parse-0.2.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file philiprehberger_type_parse-0.2.0.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_type_parse-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b9f2a7aea7cfaa07a59c156b9b7e8bcf025086a393e917c1d80bb0cd695647b5
MD5 4a0e5c33478ee74767283401345a3267
BLAKE2b-256 cd12677bfdabc11dd78715a84eeb4e37e3659ddec8789fa2b731288f50d7843d

See more details on using hashes here.

File details

Details for the file philiprehberger_type_parse-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_type_parse-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3ae6471226c5331fc3780750997c45157b9457f021618bf600835338645a7599
MD5 d7b7e53fac9794304fa10cc0c844913a
BLAKE2b-256 d28aaeafb0f5ef70a38b549416d2d7806b81da90f92b92c2d99957b1bca3444e

See more details on using hashes here.

Supported by

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