Skip to main content

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

Project description

philiprehberger-type-parse

Tests PyPI version Last updated

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

Installation

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

Support

If you find this project useful:

Star the repo

🐛 Report issues

💡 Suggest features

❤️ Sponsor development

🌐 All Open Source Projects

💻 GitHub Profile

🔗 LinkedIn Profile

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.2.tar.gz (7.8 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.2-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_parse-0.2.2.tar.gz
Algorithm Hash digest
SHA256 cf90e85af48c9854c187dec48f023a14c63bfb59a4bef42a73cded4d74191fb1
MD5 73d5e3f615afe4f407f95859c547ca27
BLAKE2b-256 212fce3531e1a76f7d7cc901d3ca49142ff30f7992426d7b9de975a01f2ae201

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_parse-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6a156fce5fa5c797ab5b403bd081e0ffaedbef3a4f55a4cf01d07e96152a2bf3
MD5 7a2e7c6e653ef6954d3739be162694e0
BLAKE2b-256 7b5a908ae245324730a502e515dccb029c8138315756117cc62b1a482e288a70

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