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

philiprehberger-type-parse

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]

Batch Parsing

Parse a list of strings in one call. Pass target_type to coerce every value to a specific type instead of relying on auto-detection.

from philiprehberger_type_parse import parse_many

parse_many(["1", "true", "2026-03-15"])
# [1, True, datetime.date(2026, 3, 15)]

parse_many(["1", "2", "3"], target_type=int)
# [1, 2, 3]

parse_many(["yes", "no", "on"], target_type=bool)
# [True, False, True]

API

Function / Class Description
parse(value) Auto-detect type: None, bool, int, float, UUID, datetime, date, or str
parse_many(values, target_type=None) Batch parse a list of strings, optionally coerced to a single target type
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.3.0.tar.gz (202.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.3.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_parse-0.3.0.tar.gz
Algorithm Hash digest
SHA256 b589c1f1b1253dd57168e8cd4094e28374df4203ec5f6c7c2d9d9eef0069e9f9
MD5 ee9c5eea0d8e8cab70d82ee422614005
BLAKE2b-256 4331eaa7273adbd2337975a767e9b7eecfd4271782826da7534e655fc24f9f92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for philiprehberger_type_parse-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 219c06130335531363ad9f870d436ac3e25477a2cdfa5da168dac9ebc60ec234
MD5 84e2468b7b5a78892e42101ca782f54b
BLAKE2b-256 a5a2402aacf4f5319d5034bcdf07316182551d19a70c11f134349ca3f23643f1

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