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
{json} '[1,2,3]', '{"a":1}' [1,2,3], {"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

Custom Conversions

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

from temparse import Conversion, parse


@Conversion
def upper(s: str) -> str:
    return s.upper()


(result,) = parse[str](t"{upper}", "hello")
assert result == "HELLO"

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.1.tar.gz (2.7 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.1-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: temparse-0.0.1.tar.gz
  • Upload date:
  • Size: 2.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","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.1.tar.gz
Algorithm Hash digest
SHA256 98fbc4dc5dccaedc67ad01b72d1dc9e852ed81bd829fc0e9688891964a93141a
MD5 8e39fa6b3199f0e9620e11e578c18e82
BLAKE2b-256 89ff16ce278e911722c93a177fc732c2f4044e9988eff429babae6b0beccc857

See more details on using hashes here.

File details

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

File metadata

  • Download URL: temparse-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 74287fbefe231a12601e5360dc238bdcf31bfab4303ff7db097a69589af74b8d
MD5 d7ca9ad35c7b6619690d29cef266e157
BLAKE2b-256 b97deb41e4138b55ca88f375052322ae763aaad72b20099bd269bcf0e556f83c

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