Skip to main content

temparse is template + parse

Project description

temparse

temparse = template + parse, parse strings using t-string templates.

Inspired by parse, but built on Python 3.14's t-strings, with better type hints.

Installation

uv

uv add temparse

pip

# Requires Python >= 3.14.
pip install temparse

Quick Start

from temparse import parse

city, year = parse[str, int](
    t"I live in {str}, since {int}", "I live in Tokyo, since 2010"
)
assert city == "Tokyo"
assert year == 2010

The return type is tuple[str, int].

Supported Types

Interpolation Example Output
{str} "hello" "hello"
{int} "42" 42
{int} "0xff" 255
{int:16} "ff" 255
{float} "3.14" 3.14
{complex} "-1.23+4.5j" -1.23+4.5j
{list} '[1,2,3]' [1, 2, 3]
{dict} '{"a":1}' {"a": 1}
{json} '{"a":1}' {"a": 1}
{datetime.datetime:%d/%m/%y %H:%M:%S} "31/01/22 23:59:59" datetime
{datetime.date:%Y-%m-%d} "2024-03-15" date
{datetime.time:%H:%M:%S} "13:23:27" time

[!IMPORTANT] list and dict are just aliases for json.

Custom Conversions

Decorate a function with @Conversion to use it directly in a template:

from temparse import Conversion, parse


@Conversion
def percent(s: str) -> float:
    return float(s.rstrip("%")) / 100


(result,) = parse[float](t"x = {percent}", "x = 30%")
assert result == 0.3

When your converter needs the format spec as well, use FormatConversion:

from temparse import FormatConversion, parse


@FormatConversion
def between(s: str, spec: str) -> str:
    lo, hi = spec.split(",")
    return s[int(lo) : int(hi)]


(result,) = parse[str](t"{between:2,5}", "abcdefg")
assert result == "cde"

Parser (Compiled Templates)

Build a parser once and reuse it:

from temparse import Parser

parser = Parser[str, int, float](t"{str} + {int} = {float}")

assert parser.parse("foo + 3 = 3.14") == ("foo", 3, 3.14)
assert parser.parse("bar + 7 = 2.72") == ("bar", 7, 2.72)

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

temparse-0.0.4.tar.gz (3.1 kB view details)

Uploaded Source

Built Distribution

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

temparse-0.0.4-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file temparse-0.0.4.tar.gz.

File metadata

  • Download URL: temparse-0.0.4.tar.gz
  • Upload date:
  • Size: 3.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for temparse-0.0.4.tar.gz
Algorithm Hash digest
SHA256 2b02ed63a248c191d68c085436f75b3813fe0c3f83706396dae34bdb38dea5b0
MD5 d09296f1cf0a2d30799cb491b27798b6
BLAKE2b-256 de75f33599303e7ed2abf83cb4b8eb977b939760a49f38ebd611d45f9ed177a2

See more details on using hashes here.

File details

Details for the file temparse-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: temparse-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for temparse-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cf49eb4207916b576b9164ce91c5814cf7032bd72298d27c53e6a56e65f1d63e
MD5 3fa9c1b29594cb08e203cf5d6faff05c
BLAKE2b-256 79a6aeade7f38e8e88c1e7484728a57e09193386b6d0ad682492ed34b7ce2fe9

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