-SRCDIR := src/dunshire
-SRCS := $(SRCDIR)/*.py
+PN := dunshire
+SRCS := $(PN)/*.py test/*.py
-doc: $(SRCS) doc/source/conf.py doc/makefile
- sphinx-apidoc -f -o doc/source $(SRCDIR)
+# Sphinx tries to keep track of which docs need to be built on its
+# own. We could do better, but we would have to duplicate all of the
+# information that we already gave Sphinx to make it work. Thus the
+# "doc" target will unconditionally invoke sphinx.
+.PHONY: doc
+doc:
cd doc && $(MAKE) html
+# Run the doctests contained in the sphinx documentation, which aren't
+# run as part of the normal test suite (because nobody wants to wait
+# for sphinx to run).
+.PHONY: doctest
+doctest:
+ cd doc && $(MAKE) doctest
+
+# Run the test suite once.
.PHONY: check
check:
- python test/suite.py
+ PYTHONPATH="." test/__main__.py
+
+# Run the test suite forever, but only the parts of it that are
+# randomized.
+.PHONY: checkloop
+checkloop:
+ PYTHONPATH="." test/__main__.py --no-doctests --loop
+# Run pylint to obtain some unconstructive criticism on my coding style.
.PHONY: lint
lint:
- PYTHONPATH="$(SRCDIR)" pylint \
- --reports=n \
- --good-names='b,c,e1,e2,h,A,C,G,K,_K,L,L_matrix,_L,indented_L,M' \
- $(SRCS)
+ pylint --rcfile=./.pylintrc $(SRCS)
+
+# Create a source distribution tarball. First we clean up, to make
+# sure no junk gets added to the distribution. Then we build the docs
+# so that users will get some usable HTML documentation and not just
+# the source files.
+.PHONY: dist
+dist: clean doc
+ python setup.py sdist
+# Delete urrythang.
.PHONY: clean
clean:
- rm -rf $(SRCDIR)/__pycache__
+ rm -rf $(PN)/__pycache__ test/__pycache__ doc/build
+ rm -rf $(PN).egg-info
+ rm -rf dist