Skip to content

python-hyper/uritemplate

Folders and files

NameName
Last commit message
Last commit date
Sep 16, 2023
Oct 13, 2021
Jan 16, 2022
Oct 13, 2021
Oct 13, 2021
Jul 8, 2017
Dec 25, 2023
Oct 13, 2021
Sep 16, 2023
Jul 26, 2017
Oct 13, 2021
Dec 2, 2019
Aug 18, 2016
Oct 10, 2021
Aug 19, 2016
Oct 11, 2021
Sep 16, 2023
Sep 16, 2023
Oct 10, 2021
Sep 16, 2023

Repository files navigation

uritemplate

Documentation -- GitHub -- Travis-CI

Simple python library to deal with URI Templates. The API looks like

from uritemplate import URITemplate, expand

# NOTE: URI params must be strings not integers

gist_uri = 'https://api.github.com/users/sigmavirus24/gists{/gist_id}'
t = URITemplate(gist_uri)
print(t.expand(gist_id='123456'))
# => https://api.github.com/users/sigmavirus24/gists/123456

# or
print(expand(gist_uri, gist_id='123456'))

# also
t.expand({'gist_id': '123456'})
print(expand(gist_uri, {'gist_id': '123456'}))

Where it might be useful to have a class

import requests

class GitHubUser(object):
    url = URITemplate('https://api.github.com/user{/login}')
    def __init__(self, name):
        self.api_url = url.expand(login=name)
        response = requests.get(self.api_url)
        if response.status_code == 200:
            self.__dict__.update(response.json())

When the module containing this class is loaded, GitHubUser.url is evaluated and so the template is created once. It's often hard to notice in Python, but object creation can consume a great deal of time and so can the re module which uritemplate relies on. Constructing the object once should reduce the amount of time your code takes to run.

Installing

pip install uritemplate

License

Modified BSD license