Skip to content

Commit e3a7457

Browse files
committed
differentiating from strings
1 parent a5d130a commit e3a7457

File tree

2 files changed

+178
-1
lines changed

2 files changed

+178
-1
lines changed

examples/vetiver/quartodoc.ipynb

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": 3,
6+
"metadata": {},
7+
"outputs": [],
8+
"source": [
9+
"from griffe.loader import GriffeLoader\n",
10+
"from griffe.docstrings.parsers import Parser\n",
11+
"\n",
12+
"griffe = GriffeLoader(docstring_parser = Parser(\"numpy\"))\n",
13+
"mod = griffe.load_module(\"vetiver\") # no editable install\n",
14+
"\n",
15+
"#f_obj = mod._modules_collection[\"vetiver.load_pkgs\"]\n"
16+
]
17+
},
18+
{
19+
"cell_type": "code",
20+
"execution_count": 10,
21+
"metadata": {},
22+
"outputs": [
23+
{
24+
"data": {
25+
"text/plain": [
26+
"<Function('load_pkgs', 6, 33)>"
27+
]
28+
},
29+
"execution_count": 10,
30+
"metadata": {},
31+
"output_type": "execute_result"
32+
}
33+
],
34+
"source": [
35+
"mod._modules_collection[\"vetiver.attach_pkgs.load_pkgs\"] # full path"
36+
]
37+
},
38+
{
39+
"cell_type": "code",
40+
"execution_count": 1,
41+
"metadata": {},
42+
"outputs": [
43+
{
44+
"name": "stdout",
45+
"output_type": "stream",
46+
"text": [
47+
"# load_pkgs\n",
48+
"\n",
49+
"`load_pkgs(model: VetiverModel = None, packages: list = None, path='')`\n",
50+
"\n",
51+
"Load packages necessary for predictions\n",
52+
"\n",
53+
"Args\n",
54+
"----\n",
55+
" model: VetiverModel\n",
56+
" VetiverModel to extract packages from\n",
57+
" packages: list\n",
58+
" List of extra packages to include\n",
59+
" path: str\n",
60+
" Where to save output file\n"
61+
]
62+
}
63+
],
64+
"source": [
65+
"from quartodoc import get_function, MdRenderer\n",
66+
"\n",
67+
"# get function object ---\n",
68+
"f_obj = get_function(\"vetiver.attach_pkgs\", \"load_pkgs\") # not attach.laod\n",
69+
"\n",
70+
"\n",
71+
"# render ---\n",
72+
"renderer = MdRenderer(header_level = 1)\n",
73+
"print(\n",
74+
" renderer.to_md(f_obj)\n",
75+
")"
76+
]
77+
},
78+
{
79+
"cell_type": "code",
80+
"execution_count": 4,
81+
"metadata": {},
82+
"outputs": [
83+
{
84+
"name": "stdout",
85+
"output_type": "stream",
86+
"text": [
87+
"# VetiverAPI\n",
88+
"\n",
89+
"`VetiverAPI(self, model: VetiverModel, check_ptype: bool = True, app_factory=FastAPI)`\n",
90+
"\n",
91+
"Create model aware API\n",
92+
"\n",
93+
"## Parameters\n",
94+
"\n",
95+
"| Name | Type | Description | Default |\n",
96+
"|---------------|--------------|------------------------------------------------|-----------|\n",
97+
"| `model` | VetiverModel | Model to be deployed in API | required |\n",
98+
"| `check_ptype` | bool | Determine if data prototype should be enforced | `True` |\n",
99+
"| `app_factory` | | Type of API to be deployed | `FastAPI` |\n",
100+
"\n",
101+
"Example\n",
102+
"-------\n",
103+
">>> import vetiver\n",
104+
">>> X, y = vetiver.get_mock_data()\n",
105+
">>> model = vetiver.get_mock_model().fit(X, y)\n",
106+
">>> v = vetiver.VetiverModel(model = model, model_name = \"my_model\", ptype_data = X)\n",
107+
">>> v_api = vetiver.VetiverAPI(model = v, check_ptype = True)\n"
108+
]
109+
}
110+
],
111+
"source": [
112+
"c_obj = mod._modules_collection[\"vetiver.server.VetiverAPI\"]\n",
113+
"\n",
114+
"print(\n",
115+
" renderer.to_md(c_obj)\n",
116+
")"
117+
]
118+
},
119+
{
120+
"cell_type": "code",
121+
"execution_count": 19,
122+
"metadata": {},
123+
"outputs": [
124+
{
125+
"data": {
126+
"text/plain": [
127+
"'# vetiver_post\\n\\n`vetiver_post(self, endpoint_fx: Callable, endpoint_name: str = \\'custom_endpoint\\')`\\n\\nCreate new POST endpoint that is aware of model input data\\n\\n## Parameters\\n\\n| Name | Type | Description | Default |\\n|-----------------|-----------------|---------------------------------------|---------------------|\\n| `endpoint_fx` | typing.Callable | Custom function to be run at endpoint | required |\\n| `endpoint_name` | str | Name of endpoint | `\\'custom_endpoint\\'` |\\n\\nExample\\n-------\\n>>> import vetiver\\n>>> X, y = vetiver.get_mock_data()\\n>>> model = vetiver.get_mock_model().fit(X, y)\\n>>> v = vetiver.VetiverModel(model = model, model_name = \"model\", ptype_data = X)\\n>>> v_api = vetiver.VetiverAPI(model = v, check_ptype = True)\\n>>> def sum_values(x):\\n... return x.sum()\\n>>> v_api.vetiver_post(sum_values, \"sums\")'"
128+
]
129+
},
130+
"execution_count": 19,
131+
"metadata": {},
132+
"output_type": "execute_result"
133+
}
134+
],
135+
"source": [
136+
"renderer.to_md(c_obj.members[\"vetiver_post\"]) # no -> none"
137+
]
138+
},
139+
{
140+
"cell_type": "code",
141+
"execution_count": null,
142+
"metadata": {},
143+
"outputs": [],
144+
"source": []
145+
}
146+
],
147+
"metadata": {
148+
"kernelspec": {
149+
"display_name": "Python 3.9.11 64-bit ('pydemo')",
150+
"language": "python",
151+
"name": "python3"
152+
},
153+
"language_info": {
154+
"codemirror_mode": {
155+
"name": "ipython",
156+
"version": 3
157+
},
158+
"file_extension": ".py",
159+
"mimetype": "text/x-python",
160+
"name": "python",
161+
"nbconvert_exporter": "python",
162+
"pygments_lexer": "ipython3",
163+
"version": "3.9.11"
164+
},
165+
"orig_nbformat": 4,
166+
"vscode": {
167+
"interpreter": {
168+
"hash": "974018313955b4988b16ea215671657307c8736770f13695d4ded4c5899ccb5a"
169+
}
170+
}
171+
},
172+
"nbformat": 4,
173+
"nbformat_minor": 2
174+
}

quartodoc.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,10 @@ def to_md(self, el: ds.DocstringSectionParameters):
180180
def to_md(self, el: ds.DocstringParameter) -> Tuple[str]:
181181
# TODO: if default is not, should return the word "required" (unescaped)
182182
default = "required" if el.default is None else escape(el.default)
183-
annotation = el.annotation.full if el.annotation else None
183+
if isinstance(el.annotation, str):
184+
annotation = el.annotation
185+
else:
186+
annotation = el.annotation.full if el.annotation else None
184187
return (escape(el.name), annotation, el.description, default)
185188

186189
# examples ----

0 commit comments

Comments
 (0)