Skip to content

Commit 2246a5e

Browse files
Joe Jevnikgerrymanoim
andauthored
ENH: Docs and cleanup (#147)
* MAINT: remove old headers * DOC: fix doc format for doxygen * DOC: add skeleton for docs * WIP: work on appendix * ENH: Tutorial Docs (#156) * ENH: Tutorial in rst * ENH: add matmul support to autoclass * DEV: add top-level makefile target for docs * DOC: use a smaller example for autoclass Co-authored-by: Joe Jevnik <joe@quantopian.com> * BUG: fix autofunction Co-authored-by: gerrymanoim <gmanoim@quantopian.com>
1 parent ac86568 commit 2246a5e

39 files changed

Lines changed: 4135 additions & 148 deletions

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ bench/run
1212
html/*
1313
docs/doxygen-build/*
1414
docs/build/*
15+
docs/.built-doxygen
16+
docs/.installed-tutorial
1517

1618
# scratch file for testing linking
1719
scratch.cc
@@ -57,7 +59,9 @@ libpy_report.xml
5759
.coverage
5860

5961
# python support artifacts
60-
libpy.egg-info/*
62+
*.egg-info/*
63+
docs/source/tutorial/libpy_tutorial.egg-info/*
64+
docs/source/savefig/*
6165
dist/*
6266

6367
venv*/*

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,10 @@ tidy:
242242
format:
243243
@$(CLANG_FORMAT) -i $(ALL_SOURCES) $(ALL_HEADERS)
244244

245+
.PHONY: docs
246+
docs: $(ALL_SOURCES) $(ALL_HEADERS)
247+
@cd docs && make html
248+
245249

246250
.PHONY: clean
247251
clean:

docs/Doxyfile

Lines changed: 2506 additions & 0 deletions
Large diffs are not rendered by default.

docs/Makefile

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
SPHINXOPTS ?=
2+
SPHINXBUILD ?= sphinx-build
3+
SOURCEDIR = source
4+
BUILDDIR = build
5+
6+
# Put it first so that "make" without argument is like "make help".
7+
.PHONY: help
8+
help:
9+
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
10+
11+
.PHONY: Makefile
12+
13+
# Catch-all target: route all unknown targets to Sphinx using the new
14+
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
15+
%: .built-doxygen .installed-tutorial Makefile
16+
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
17+
18+
Doxyfile:
19+
touch $@
20+
21+
.built-doxygen: Doxyfile $(shell find ../include/libpy/ -type f -name '*.h')
22+
doxygen
23+
@touch $@
24+
25+
.installed-tutorial:
26+
pip install -e source/tutorial
27+
@touch $@

docs/source/appendix.rst

Lines changed: 320 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,320 @@
1+
========
2+
Appendix
3+
========
4+
5+
Python Object References
6+
========================
7+
8+
.. doxygenclass:: py::owned_ref
9+
:members:
10+
:undoc-members:
11+
12+
``<libpy/abi.h>``
13+
=================
14+
15+
.. doxygenstruct:: py::abi::abi_version
16+
:undoc-members:
17+
18+
.. doxygenvariable:: py::abi::libpy_abi_version
19+
20+
.. doxygenfunction:: py::abi::compatible_versions
21+
22+
.. doxygenfunction:: py::abi::ensure_compatible_libpy_abi
23+
24+
``<libpy/any.h>``
25+
=================
26+
27+
.. doxygenclass:: py::any_vtable
28+
:members:
29+
:undoc-members:
30+
31+
.. doxygenclass:: py::any_ref
32+
:members:
33+
:undoc-members:
34+
35+
.. doxygenfunction:: py::make_any_ref
36+
37+
.. doxygenclass:: py::any_cref
38+
:members:
39+
:undoc-members:
40+
41+
.. doxygenfunction:: py::make_any_cref
42+
43+
.. doxygenfunction:: py::dtype_to_vtable
44+
45+
``<libpy/any_vector.h>``
46+
========================
47+
48+
.. doxygenclass:: py::any_vector
49+
:members:
50+
:undoc-members:
51+
52+
``<libpy/autoclass.h>``
53+
=======================
54+
55+
.. doxygenstruct:: py::autoclass
56+
:members:
57+
58+
.. doxygenstruct:: py::autoclass_interface
59+
:members:
60+
61+
.. doxygenstruct:: py::autoclass_interface_instance
62+
:members:
63+
64+
``<libpy/autofunction.h>``
65+
==========================
66+
67+
.. doxygenfunction:: py::autofunction
68+
69+
.. doxygenfunction:: py::automethod
70+
71+
.. doxygenclass:: py::arg::keyword
72+
:members:
73+
74+
.. doxygentypedef:: py::arg::kwd
75+
76+
.. doxygenclass:: py::arg::optional
77+
:members:
78+
79+
.. doxygentypedef:: py::arg::opt
80+
81+
.. doxygenclass:: py::arg::optional< keyword< Name, T >, none_is_missing >
82+
:members:
83+
84+
.. doxygentypedef:: py::arg::opt_kwd
85+
86+
.. doxygenclass:: py::dispatch::adapt_argument
87+
:members:
88+
89+
``<libpy/borrowed_ref.h>``
90+
==========================
91+
92+
.. doxygenclass:: py::borrowed_ref
93+
:members:
94+
:undoc-members:
95+
96+
``<libpy/buffer.h>``
97+
====================
98+
99+
.. doxygentypedef:: py::buffer
100+
101+
.. doxygenvariable:: py::buffer_format
102+
103+
.. doxygenfunction:: py::get_buffer
104+
105+
.. doxygenfunction:: py::buffer_type_compatible(buffer_format_code)
106+
107+
.. doxygenfunction:: py::buffer_type_compatible(const py::buffer&)
108+
109+
``<libpy/build_tuple.h>``
110+
=========================
111+
112+
.. doxygenfunction:: py::build_tuple
113+
114+
``<libpy/call_function.h>``
115+
===========================
116+
117+
.. doxygenfunction:: py::call_function
118+
119+
.. doxygenfunction:: py::call_function_throws
120+
121+
.. doxygenfunction:: py::call_method
122+
123+
.. doxygenfunction:: py::call_method_throws
124+
125+
``<libpy/char_sequence.h>``
126+
===========================
127+
128+
.. doxygentypedef:: py::cs::char_sequence
129+
130+
.. doxygenfunction:: py::cs::literals::operator""_cs
131+
132+
.. doxygenfunction:: py::cs::literals::operator""_arr
133+
134+
.. doxygenfunction:: py::cs::cat(Cs)
135+
136+
.. doxygenfunction:: py::cs::cat(Cs, Ds)
137+
138+
.. doxygenfunction:: py::cs::cat(Cs, Ds, Ts...)
139+
140+
.. doxygenfunction:: py::cs::to_array
141+
142+
.. doxygenfunction:: py::cs::intersperse
143+
144+
.. doxygenfunction:: py::cs::join
145+
146+
``<libpy/datetime64.h>``
147+
========================
148+
149+
.. doxygenclass:: py::datetime64
150+
:members:
151+
:undoc-members:
152+
153+
.. doxygentypedef:: py::chrono::ns
154+
.. doxygentypedef:: py::chrono::us
155+
.. doxygentypedef:: py::chrono::ms
156+
.. doxygentypedef:: py::chrono::s
157+
.. doxygentypedef:: py::chrono::m
158+
.. doxygentypedef:: py::chrono::h
159+
.. doxygentypedef:: py::chrono::D
160+
161+
.. doxygenfunction:: py::to_chars(py::datetime64char*, char*, const datetime64<unit>&, bool)
162+
163+
.. doxygenfunction:: py::chrono::is_leapyear
164+
165+
.. doxygenfunction:: py::chrono::time_since_epoch
166+
167+
``<libpy/demangle.h>``
168+
======================
169+
170+
.. doxygenfunction:: py::util::demangle_string(const char*)
171+
172+
.. doxygenfunction:: py::util::demangle_string(const std::string&)
173+
174+
.. doxygenfunction:: py::util::type_name
175+
176+
.. doxygenclass:: py::util::demangle_error
177+
178+
``<libpy/dict_range.h>``
179+
========================
180+
181+
.. doxygenclass:: py::dict_range
182+
:members:
183+
:undoc-members:
184+
185+
``<libpy/exception.h>``
186+
=======================
187+
188+
.. doxygenclass:: py::exception
189+
:members:
190+
191+
.. doxygenfunction:: py::raise
192+
193+
.. doxygenfunction:: raise_from_cxx_exception
194+
195+
.. doxygenstruct:: py::dispatch::raise_format
196+
197+
``<libpy/from_object.h>``
198+
=========================
199+
200+
.. doxygenfunction:: py::from_object
201+
202+
.. doxygenvariable:: py::has_from_object
203+
204+
.. doxygenstruct:: py::dispatch::from_object
205+
206+
``<libpy/getattr.h>``
207+
=====================
208+
209+
.. doxygenfunction:: py::getattr
210+
211+
.. doxygenfunction:: py::getattr_throws
212+
213+
.. doxygenfunction:: py::nested_getattr(py::borrowed_ref<>, const T&, const Ts&...)
214+
215+
.. doxygenfunction:: py::nested_getattr_throws
216+
217+
``<libpy/gil.h>``
218+
=================
219+
220+
.. doxygenstruct:: py::gil
221+
:members:
222+
223+
``<libpy/hash.h>``
224+
==================
225+
226+
.. doxygenfunction:: py::hash_combine(T, Ts...)
227+
228+
.. doxygenfunction:: py::hash_many(const Ts&...)
229+
230+
.. doxygenfunction:: py::hash_tuple
231+
232+
.. doxygenfunction:: py::hash_buffer
233+
234+
``<libpy/itertools.h>``
235+
=======================
236+
237+
.. doxygenfunction:: py::zip
238+
239+
.. doxygenfunction:: py::enumerate
240+
241+
.. doxygenfunction:: py::imap
242+
243+
``<libpy/meta.h>``
244+
==================
245+
246+
.. doxygenstruct:: py::meta::print_t
247+
248+
.. doxygenstruct:: py::meta::print_v
249+
250+
.. doxygentypedef:: py::meta::remove_cvref
251+
252+
.. doxygenvariable:: py::meta::element_of
253+
254+
.. doxygenvariable:: py::meta::search_tuple
255+
256+
.. doxygentypedef:: py::meta::type_cat
257+
258+
.. doxygentypedef:: py::meta::set_diff
259+
260+
``op`` operator function objects
261+
--------------------------------
262+
263+
Each of these types implements ``operator()`` to defer to the named operator while attempting to preserve all the observable properties of calling the underlying operator directly.
264+
265+
.. doxygenstruct:: py::meta::op::add
266+
.. doxygenstruct:: py::meta::op::sub
267+
.. doxygenstruct:: py::meta::op::mul
268+
.. doxygenstruct:: py::meta::op::rem
269+
.. doxygenstruct:: py::meta::op::div
270+
.. doxygenstruct:: py::meta::op::lshift
271+
.. doxygenstruct:: py::meta::op::rshift
272+
.. doxygenstruct:: py::meta::op::and_
273+
.. doxygenstruct:: py::meta::op::xor_
274+
.. doxygenstruct:: py::meta::op::or_
275+
.. doxygenstruct:: py::meta::op::gt
276+
.. doxygenstruct:: py::meta::op::ge
277+
.. doxygenstruct:: py::meta::op::eq
278+
.. doxygenstruct:: py::meta::op::le
279+
.. doxygenstruct:: py::meta::op::lt
280+
.. doxygenstruct:: py::meta::op::ne
281+
282+
.. doxygenstruct:: py::meta::op::neg
283+
.. doxygenstruct:: py::meta::op::pos
284+
.. doxygenstruct:: py::meta::op::inv
285+
286+
``<libpy/ndarray_view.h>``
287+
==========================
288+
289+
.. doxygenclass:: py::ndarray_view
290+
:members:
291+
:undoc-members:
292+
293+
.. doxygenclass:: py::ndarray_view< T, 1, false >
294+
:members:
295+
:undoc-members:
296+
297+
.. doxygentypedef:: py::array_view
298+
299+
Type Erased Views
300+
-----------------
301+
302+
These views use a :cpp:class:`py::any_vtable` object to view a type-erased buffer of data.
303+
Operations that would normally return references return :cpp:class:`py::any_ref` or :cpp:class:`py::any_ref` objects.
304+
These partial specializations implement the same protocol as the non type-erased version; however, extra methods are added to interact with the vtable or to cast the data back to some statically known type.
305+
306+
.. doxygenclass:: py::ndarray_view< any_cref, ndim, higher_dimensional >
307+
:members:
308+
:undoc-members:
309+
310+
.. doxygenclass:: py::ndarray_view< any_ref, ndim, higher_dimensional >
311+
:members:
312+
:undoc-members:
313+
314+
.. doxygenclass:: py::ndarray_view< any_cref, 1, false >
315+
:members:
316+
:undoc-members:
317+
318+
.. doxygenclass:: py::ndarray_view< any_ref, 1, false >
319+
:members:
320+
:undoc-members:

0 commit comments

Comments
 (0)