Skip to content

Commit

Permalink
feat(docs): created sphinx documentation (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
giuppep committed Jan 4, 2022
1 parent 00b3111 commit 98fb4e5
Show file tree
Hide file tree
Showing 13 changed files with 350 additions and 61 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,6 @@ dmypy.json
.pyre/

# Editor
.vscode/
.vscode/

.DS_Store
29 changes: 18 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,36 @@ TODO
from rstr import Rstr

# Initialise the rstr client with the URL to your rstr server
# and your API Tokent.
# and your API Token.
# NOTE: these can be specified as environment variables
# >>> export RSTR_URL="https://my-rstr.rs"
# >>> export RSTR_API_TOKEN="MY_API_TOKEN"
url = "https://my-rstr.rs"
token = "MY_API_TOKEN"
rstr = Rstr(url, token)

# Add a file to the blob store
refs = rstr.add(["/path/to/my/file.txt"])
with Rstr(url=url, token=token) as rstr:
# Add a file to the blob store
refs = rstr.add(["/path/to/my/file.txt"])

# You will get a list of references to your blobs
# e.g. ["f29bc64a9d3732b4b9035125fdb3285f5b6455778edca72414671e0ca3b2e0de"]
# You will get a list of references to your blobs
# e.g. ["f29bc64a9d3732b4b9035125fdb3285f5b6455778edca72414671e0ca3b2e0de"]

# You can then use the reference to retrieve your blob
ref = refs[0]
blob = rstr.get(ref)
# You can then use the reference to retrieve your blob
ref = refs[0]
blob = rstr.get(ref)

print(blob)
# Blob(f29bc64a9d)

print(blob.metadata)
# BlobMetadata('file.txt', 'text/plain', 20 bytes)

# The blob can be permanently deleted from the blob store with
rstr.delete(ref)
# You can access the binary content of the blob with:
# content = blob.content

# The blob can be permanently deleted from the blob store with:
with Rstr(url=url, token=token) as rstr:
rstr.delete(ref)
```

## License
Expand Down
20 changes: 20 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
35 changes: 35 additions & 0 deletions docs/make.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@ECHO OFF

pushd %~dp0

REM Command file for Sphinx documentation

if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build

if "%1" == "" goto help

%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)

%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end

:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%

:end
popd
7 changes: 7 additions & 0 deletions docs/source/client.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Client API
==========
.. module:: rstr

.. autoclass:: Rstr
:members:

99 changes: 99 additions & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

# -- Path setup --------------------------------------------------------------

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys

import alabaster

sys.path.insert(0, os.path.abspath("../../"))


# -- Project information -----------------------------------------------------

project = "rstr-client"
copyright = "2021, Giuseppe Papallo"
author = "Giuseppe Papallo"

# The full version, including alpha/beta/rc tags
release = "0.1.0"
version = "0.1.0"


# -- General configuration ---------------------------------------------------

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.napoleon",
"sphinx.ext.viewcode",
"alabaster",
]
autosummary_generate = True # Turn on sphinx.ext.autosummary
autodoc_default_options = {
"show-inheritance": False,
# "members": True,
"member-order": "bysource",
# "special-members": "__init__",
# "undoc-members": True,
"exclude-members": "__weakref__",
}
autoclass_content = "init"

# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = []


# -- Options for HTML output -------------------------------------------------

# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "alabaster"
html_theme_path = [alabaster.get_path()]

html_sidebars = {
"**": [
"about.html",
"navigation.html",
"relations.html",
"searchbox.html",
# "donate.html",
]
}

html_theme_options = {
"code_font_family": '"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace',
"description": "A python client for the rstr blob store.",
"code_font_size": "0.8em",
"fixed_sidebar": True,
"github_banner": False,
"github_button": True,
"github_type": "star",
"github_user": "giuppep",
"github_repo": "rstr-client",
"extra_nav_links": {"rstr server": "https://github.com/giuppep/rstr"},
}

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ["_static"]

autodoc_mock_imports = ["requests"]
5 changes: 5 additions & 0 deletions docs/source/exceptions.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Exceptions
==========

.. automodule:: rstr.exceptions
:members:
27 changes: 27 additions & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Welcome to rstr-client's documentation!
=======================================

``Rstr`` blob store client
--------------------------

.. automodule:: rstr
:noindex:

Contents
********

.. toctree::
:maxdepth: 2

client
models
exceptions



Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
11 changes: 11 additions & 0 deletions docs/source/models.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Data Models
===========
.. module:: rstr.models

.. autoclass:: Blob
:members:


.. autoclass:: BlobMetadata
:members:

26 changes: 26 additions & 0 deletions rstr/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,29 @@
"""Python client for the `Rstr <https://github.com/giuppep/rstr>`_ blob store.
Basic usage
***********
Upload a file to the blob store:
>>> from rstr import Rstr
>>> url = "https://my-rstr.rs"
>>> token = "*****"
>>> with Rstr(url=url, token=token) as rstr:
>>> refs = rstr.add(["/path/to/my/file.pdf"])
>>> print(refs)
["eb8471d882d2a90a4b1c60dcaa41fc5d0c33143f8ebc910247453a130e74ca68"]
Retrieve a file from the blob store:
>>> with Rstr(url=url, token=token) as rstr:
>>> blob = rstr.get(refs[0])
>>> print(blob)
Blob(eb8471d882)
>>> blob.content
b"..."
"""
from .client import Rstr
from .exceptions import (
BlobNotFound,
Expand Down
Loading

0 comments on commit 98fb4e5

Please sign in to comment.