aboutsummaryrefslogtreecommitdiff
path: root/docs/index.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/index.rst')
-rw-r--r--docs/index.rst81
1 files changed, 81 insertions, 0 deletions
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..35776f0
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,81 @@
+uritemplate
+===========
+
+Release v\ |version|.
+
+Examples
+--------
+
+This first example shows how simple the API can be when using for a one-off
+item in a script or elsewhere.
+
+.. code-block:: python
+
+ from requests import get
+ from uritemplate import expand
+
+ uri = 'https://api.github.com{/user}'
+
+ user = get(expand(uri, user='sigmavirus24')).json()
+
+This second example shows how using the class will save you time for template
+parsing and object creation. Making the template once means the URI is parsed
+once which decreases the number of :class:`URITemplate
+<uritemplate.URITemplate>` objects created and usage of the ``re`` module.
+This means that as soon as the file is parsed, the ``User.github_url`` and
+``Repository.github_url`` variables are made once and only once. They're then
+usable in every instance of those classes.
+
+.. code-block:: python
+
+ from uritemplate import URITemplate
+
+ class User(object):
+ github_url = URITemplate('https://api.github.com{/user}')
+ def __init__(self, name):
+ self.uri = self.github_url.expand({'user': name})
+ self.name = name
+
+ class Repository(object):
+ github_url = URITemplate('https://api.github.com{/user}{/repo}')
+ def __init__(self, name):
+ self.uri = self.github_url.expand(
+ dict(zip(['user', 'repo'], name.split('/')))
+ )
+ self.name = name
+
+API
+---
+
+.. module:: uritemplate
+
+.. autofunction:: uritemplate.expand
+
+.. autofunction:: uritemplate.partial
+
+.. autofunction:: uritemplate.variables
+
+.. autoclass:: uritemplate.URITemplate
+ :members:
+
+Implementation Details
+----------------------
+
+Classes, their methods, and functions in this section are not part of the API
+and as such are not meant to be used by users of ``uritemplate.py``. These are
+documented here purely for reference as they are inadvertently exposed via the
+public API.
+
+For example::
+
+ t = URITemplate('https://api.github.com/users{/user}')
+ t.variables
+ # => [URIVariable(/user)]
+
+Users can interact with :class:`URIVariable` objects as they see fit, but
+their API may change and are not guaranteed to be consistent across versions.
+Code relying on methods defined on :class:`URIVariable` and other classes,
+methods, and functions in this section may break in future releases.
+
+.. autoclass:: uritemplate.template.URIVariable
+ :members: expand