Holger Frey
7 years ago
45 changed files with 1856 additions and 0 deletions
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
# http://editorconfig.org |
||||
|
||||
root = true |
||||
|
||||
[*] |
||||
indent_style = space |
||||
indent_size = 4 |
||||
trim_trailing_whitespace = true |
||||
insert_final_newline = true |
||||
charset = utf-8 |
||||
end_of_line = lf |
||||
|
||||
[*.bat] |
||||
indent_style = tab |
||||
end_of_line = crlf |
||||
|
||||
[LICENSE] |
||||
insert_final_newline = false |
||||
|
||||
[Makefile] |
||||
indent_style = tab |
@ -0,0 +1,15 @@
@@ -0,0 +1,15 @@
|
||||
* Ordr2 version: |
||||
* Python version: |
||||
* Operating System: |
||||
|
||||
### Description |
||||
|
||||
Describe what you were trying to get done. |
||||
Tell us what happened, what went wrong, and what you expected to happen. |
||||
|
||||
### What I Did |
||||
|
||||
``` |
||||
Paste the command(s) you ran and the output. |
||||
If there was a crash, please include the traceback here. |
||||
``` |
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
======= |
||||
Credits |
||||
======= |
||||
|
||||
Development Lead |
||||
---------------- |
||||
|
||||
* Holger Frey <frey@imtek.de> |
||||
|
||||
Contributors |
||||
------------ |
||||
|
||||
None yet. Why not be the first? |
@ -0,0 +1,114 @@
@@ -0,0 +1,114 @@
|
||||
.. highlight:: shell |
||||
|
||||
============ |
||||
Contributing |
||||
============ |
||||
|
||||
Contributions are welcome, and they are greatly appreciated! Every |
||||
little bit helps, and credit will always be given. |
||||
|
||||
You can contribute in many ways: |
||||
|
||||
Types of Contributions |
||||
---------------------- |
||||
|
||||
Report Bugs |
||||
~~~~~~~~~~~ |
||||
|
||||
Report bugs at https://github.com/holgi/ordr2/issues. |
||||
|
||||
If you are reporting a bug, please include: |
||||
|
||||
* Your operating system name and version. |
||||
* Any details about your local setup that might be helpful in troubleshooting. |
||||
* Detailed steps to reproduce the bug. |
||||
|
||||
Fix Bugs |
||||
~~~~~~~~ |
||||
|
||||
Look through the GitHub issues for bugs. Anything tagged with "bug" |
||||
and "help wanted" is open to whoever wants to implement it. |
||||
|
||||
Implement Features |
||||
~~~~~~~~~~~~~~~~~~ |
||||
|
||||
Look through the GitHub issues for features. Anything tagged with "enhancement" |
||||
and "help wanted" is open to whoever wants to implement it. |
||||
|
||||
Write Documentation |
||||
~~~~~~~~~~~~~~~~~~~ |
||||
|
||||
Ordr2 could always use more documentation, whether as part of the |
||||
official Ordr2 docs, in docstrings, or even on the web in blog posts, |
||||
articles, and such. |
||||
|
||||
Submit Feedback |
||||
~~~~~~~~~~~~~~~ |
||||
|
||||
The best way to send feedback is to file an issue at https://github.com/holgi/ordr2/issues. |
||||
|
||||
If you are proposing a feature: |
||||
|
||||
* Explain in detail how it would work. |
||||
* Keep the scope as narrow as possible, to make it easier to implement. |
||||
* Remember that this is a volunteer-driven project, and that contributions |
||||
are welcome :) |
||||
|
||||
Get Started! |
||||
------------ |
||||
|
||||
Ready to contribute? Here's how to set up `ordr2` for local development. |
||||
|
||||
1. Fork the `ordr2` repo on GitHub. |
||||
2. Clone your fork locally:: |
||||
|
||||
$ git clone git@github.com:your_name_here/ordr2.git |
||||
|
||||
3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development:: |
||||
|
||||
$ mkvirtualenv ordr2 |
||||
$ cd ordr2/ |
||||
$ python setup.py develop |
||||
|
||||
4. Create a branch for local development:: |
||||
|
||||
$ git checkout -b name-of-your-bugfix-or-feature |
||||
|
||||
Now you can make your changes locally. |
||||
|
||||
5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox:: |
||||
|
||||
$ flake8 ordr2 tests |
||||
$ python setup.py test or py.test |
||||
$ tox |
||||
|
||||
To get flake8 and tox, just pip install them into your virtualenv. |
||||
|
||||
6. Commit your changes and push your branch to GitHub:: |
||||
|
||||
$ git add . |
||||
$ git commit -m "Your detailed description of your changes." |
||||
$ git push origin name-of-your-bugfix-or-feature |
||||
|
||||
7. Submit a pull request through the GitHub website. |
||||
|
||||
Pull Request Guidelines |
||||
----------------------- |
||||
|
||||
Before you submit a pull request, check that it meets these guidelines: |
||||
|
||||
1. The pull request should include tests. |
||||
2. If the pull request adds functionality, the docs should be updated. Put |
||||
your new functionality into a function with a docstring, and add the |
||||
feature to the list in README.rst. |
||||
3. The pull request should work for Python 2.6, 2.7, 3.3, 3.4 and 3.5, and for PyPy. Check |
||||
https://travis-ci.org/holgi/ordr2/pull_requests |
||||
and make sure that the tests pass for all supported Python versions. |
||||
|
||||
Tips |
||||
---- |
||||
|
||||
To run a subset of tests:: |
||||
|
||||
$ py.test tests.test_ordr2 |
||||
|
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
======= |
||||
History |
||||
======= |
||||
|
||||
0.0.1 (2017-09-26) |
||||
------------------ |
||||
|
||||
* First release on PyPI. |
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
|
||||
BSD License |
||||
|
||||
Copyright (c) 2017, Holger Frey |
||||
All rights reserved. |
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, |
||||
are permitted provided that the following conditions are met: |
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this |
||||
list of conditions and the following disclaimer. |
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this |
||||
list of conditions and the following disclaimer in the documentation and/or |
||||
other materials provided with the distribution. |
||||
|
||||
* Neither the name of the copyright holder nor the names of its |
||||
contributors may be used to endorse or promote products derived from this |
||||
software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
||||
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
||||
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
||||
OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
include AUTHORS.rst |
||||
include CONTRIBUTING.rst |
||||
include HISTORY.rst |
||||
include LICENSE |
||||
include README.rst |
||||
include *.ini *.cfg |
||||
|
||||
recursive-include tests * |
||||
recursive-exclude * __pycache__ |
||||
recursive-exclude * *.py[co] |
||||
|
||||
recursive-include docs *.rst conf.py Makefile make.bat |
||||
recursive-include ordr2 *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2 |
@ -0,0 +1,87 @@
@@ -0,0 +1,87 @@
|
||||
.PHONY: clean clean-test clean-pyc clean-build docs help |
||||
.DEFAULT_GOAL := help |
||||
define BROWSER_PYSCRIPT |
||||
import os, webbrowser, sys |
||||
try: |
||||
from urllib import pathname2url |
||||
except: |
||||
from urllib.request import pathname2url |
||||
|
||||
webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1]))) |
||||
endef |
||||
export BROWSER_PYSCRIPT |
||||
|
||||
define PRINT_HELP_PYSCRIPT |
||||
import re, sys |
||||
|
||||
for line in sys.stdin: |
||||
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line) |
||||
if match: |
||||
target, help = match.groups() |
||||
print("%-20s %s" % (target, help)) |
||||
endef |
||||
export PRINT_HELP_PYSCRIPT |
||||
BROWSER := python -c "$$BROWSER_PYSCRIPT" |
||||
|
||||
help: |
||||
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST) |
||||
|
||||
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
|
||||
|
||||
|
||||
clean-build: ## remove build artifacts
|
||||
rm -fr build/ |
||||
rm -fr dist/ |
||||
rm -fr .eggs/ |
||||
find . -name '*.egg-info' -exec rm -fr {} + |
||||
find . -name '*.egg' -exec rm -f {} + |
||||
|
||||
clean-pyc: ## remove Python file artifacts
|
||||
find . -name '*.pyc' -exec rm -f {} + |
||||
find . -name '*.pyo' -exec rm -f {} + |
||||
find . -name '*~' -exec rm -f {} + |
||||
find . -name '__pycache__' -exec rm -fr {} + |
||||
|
||||
clean-test: ## remove test and coverage artifacts
|
||||
rm -fr .tox/ |
||||
rm -f .coverage |
||||
rm -fr htmlcov/ |
||||
|
||||
lint: ## check style with flake8
|
||||
flake8 ordr2 tests |
||||
|
||||
test: ## run tests quickly with the default Python
|
||||
py.test |
||||
|
||||
|
||||
test-all: ## run tests on every Python version with tox
|
||||
tox |
||||
|
||||
coverage: ## check code coverage quickly with the default Python
|
||||
coverage run --source ordr2 -m pytest |
||||
coverage report -m |
||||
coverage html |
||||
$(BROWSER) htmlcov/index.html |
||||
|
||||
docs: ## generate Sphinx HTML documentation, including API docs
|
||||
rm -f docs/ordr2.rst |
||||
rm -f docs/modules.rst |
||||
sphinx-apidoc -o docs/ ordr2 |
||||
$(MAKE) -C docs clean |
||||
$(MAKE) -C docs html |
||||
$(BROWSER) docs/_build/html/index.html |
||||
|
||||
servedocs: docs ## compile the docs watching for changes
|
||||
watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . |
||||
|
||||
release: clean ## package and upload a release
|
||||
python setup.py sdist upload |
||||
python setup.py bdist_wheel upload |
||||
|
||||
dist: clean ## builds source and wheel package
|
||||
python setup.py sdist |
||||
python setup.py bdist_wheel |
||||
ls -l dist |
||||
|
||||
install: clean ## install the package to the active Python's site-packages
|
||||
python setup.py install |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
===== |
||||
Ordr2 |
||||
===== |
||||
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/ordr2.svg |
||||
:target: https://pypi.python.org/pypi/ordr2 |
||||
|
||||
.. image:: https://img.shields.io/travis/holgi/ordr2.svg |
||||
:target: https://travis-ci.org/holgi/ordr2 |
||||
|
||||
.. image:: https://readthedocs.org/projects/ordr2/badge/?version=latest |
||||
:target: https://ordr2.readthedocs.io/en/latest/?badge=latest |
||||
:alt: Documentation Status |
||||
|
||||
.. image:: https://pyup.io/repos/github/holgi/ordr2/shield.svg |
||||
:target: https://pyup.io/repos/github/holgi/ordr2/ |
||||
:alt: Updates |
||||
|
||||
|
||||
Ordering System for CPI |
||||
|
||||
|
||||
* Free software: BSD license |
||||
* Documentation: https://ordr2.readthedocs.io. |
||||
|
||||
|
||||
Features |
||||
-------- |
||||
|
||||
* TODO |
||||
|
||||
Credits |
||||
--------- |
||||
|
||||
This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template. |
||||
|
||||
.. _Cookiecutter: https://github.com/audreyr/cookiecutter |
||||
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage |
||||
|
@ -0,0 +1,69 @@
@@ -0,0 +1,69 @@
|
||||
### |
||||
# app configuration |
||||
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html |
||||
### |
||||
|
||||
[app:main] |
||||
use = egg:ordr2 |
||||
|
||||
pyramid.reload_templates = true |
||||
pyramid.debug_authorization = false |
||||
pyramid.debug_notfound = false |
||||
pyramid.debug_routematch = false |
||||
pyramid.default_locale_name = en |
||||
pyramid.includes = |
||||
pyramid_debugtoolbar |
||||
|
||||
sqlalchemy.url = sqlite:///%(here)s/ordr2.sqlite |
||||
|
||||
# By default, the toolbar only appears for clients from IP addresses |
||||
# '127.0.0.1' and '::1'. |
||||
# debugtoolbar.hosts = 127.0.0.1 ::1 |
||||
|
||||
### |
||||
# wsgi server configuration |
||||
### |
||||
|
||||
[server:main] |
||||
use = egg:waitress#main |
||||
listen = 127.0.0.1:6543 [::1]:6543 |
||||
|
||||
### |
||||
# logging configuration |
||||
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html |
||||
### |
||||
|
||||
[loggers] |
||||
keys = root, ordr2, sqlalchemy |
||||
|
||||
[handlers] |
||||
keys = console |
||||
|
||||
[formatters] |
||||
keys = generic |
||||
|
||||
[logger_root] |
||||
level = INFO |
||||
handlers = console |
||||
|
||||
[logger_ordr2] |
||||
level = DEBUG |
||||
handlers = |
||||
qualname = ordr2 |
||||
|
||||
[logger_sqlalchemy] |
||||
level = INFO |
||||
handlers = |
||||
qualname = sqlalchemy.engine |
||||
# "level = INFO" logs SQL queries. |
||||
# "level = DEBUG" logs SQL queries and results. |
||||
# "level = WARN" logs neither. (Recommended for production systems.) |
||||
|
||||
[handler_console] |
||||
class = StreamHandler |
||||
args = (sys.stderr,) |
||||
level = NOTSET |
||||
formatter = generic |
||||
|
||||
[formatter_generic] |
||||
format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
/ordr2.rst |
||||
/ordr2.*.rst |
||||
/modules.rst |
@ -0,0 +1,177 @@
@@ -0,0 +1,177 @@
|
||||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS = |
||||
SPHINXBUILD = sphinx-build |
||||
PAPER = |
||||
BUILDDIR = _build |
||||
|
||||
# User-friendly check for sphinx-build
|
||||
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) |
||||
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) |
||||
endif |
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4 |
||||
PAPEROPT_letter = -D latex_paper_size=letter |
||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . |
||||
# the i18n builder cannot share the environment and doctrees with the others
|
||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . |
||||
|
||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext |
||||
|
||||
help: |
||||
@echo "Please use \`make <target>' where <target> is one of" |
||||
@echo " html to make standalone HTML files" |
||||
@echo " dirhtml to make HTML files named index.html in directories" |
||||
@echo " singlehtml to make a single large HTML file" |
||||
@echo " pickle to make pickle files" |
||||
@echo " json to make JSON files" |
||||
@echo " htmlhelp to make HTML files and a HTML help project" |
||||
@echo " qthelp to make HTML files and a qthelp project" |
||||
@echo " devhelp to make HTML files and a Devhelp project" |
||||
@echo " epub to make an epub" |
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" |
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex" |
||||
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" |
||||
@echo " text to make text files" |
||||
@echo " man to make manual pages" |
||||
@echo " texinfo to make Texinfo files" |
||||
@echo " info to make Texinfo files and run them through makeinfo" |
||||
@echo " gettext to make PO message catalogs" |
||||
@echo " changes to make an overview of all changed/added/deprecated items" |
||||
@echo " xml to make Docutils-native XML files" |
||||
@echo " pseudoxml to make pseudoxml-XML files for display purposes" |
||||
@echo " linkcheck to check all external links for integrity" |
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)" |
||||
|
||||
clean: |
||||
rm -rf $(BUILDDIR)/* |
||||
|
||||
html: |
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
||||
@echo |
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html." |
||||
|
||||
dirhtml: |
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml |
||||
@echo |
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." |
||||
|
||||
singlehtml: |
||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml |
||||
@echo |
||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." |
||||
|
||||
pickle: |
||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle |
||||
@echo |
||||
@echo "Build finished; now you can process the pickle files." |
||||
|
||||
json: |
||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json |
||||
@echo |
||||
@echo "Build finished; now you can process the JSON files." |
||||
|
||||
htmlhelp: |
||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp |
||||
@echo |
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in $(BUILDDIR)/htmlhelp." |
||||
|
||||
qthelp: |
||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp |
||||
@echo |
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:" |
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/ordr2.qhcp" |
||||
@echo "To view the help file:" |
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/ordr2.qhc" |
||||
|
||||
devhelp: |
||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp |
||||
@echo |
||||
@echo "Build finished." |
||||
@echo "To view the help file:" |
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/ordr2" |
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/ordr2" |
||||
@echo "# devhelp" |
||||
|
||||
epub: |
||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub |
||||
@echo |
||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub." |
||||
|
||||
latex: |
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
||||
@echo |
||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." |
||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||
"(use \`make latexpdf' here to do that automatically)." |
||||
|
||||
latexpdf: |
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
||||
@echo "Running LaTeX files through pdflatex..." |
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf |
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." |
||||
|
||||
latexpdfja: |
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
||||
@echo "Running LaTeX files through platex and dvipdfmx..." |
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja |
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." |
||||
|
||||
text: |
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text |
||||
@echo |
||||
@echo "Build finished. The text files are in $(BUILDDIR)/text." |
||||
|
||||
man: |
||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man |
||||
@echo |
||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man." |
||||
|
||||
texinfo: |
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo |
||||
@echo |
||||
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." |
||||
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||
"(use \`make info' here to do that automatically)." |
||||
|
||||
info: |
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo |
||||
@echo "Running Texinfo files through makeinfo..." |
||||
make -C $(BUILDDIR)/texinfo info |
||||
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." |
||||
|
||||
gettext: |
||||
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale |
||||
@echo |
||||
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." |
||||
|
||||
changes: |
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes |
||||
@echo |
||||
@echo "The overview file is in $(BUILDDIR)/changes." |
||||
|
||||
linkcheck: |
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck |
||||
@echo |
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in $(BUILDDIR)/linkcheck/output.txt." |
||||
|
||||
doctest: |
||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest |
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt." |
||||
|
||||
xml: |
||||
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml |
||||
@echo |
||||
@echo "Build finished. The XML files are in $(BUILDDIR)/xml." |
||||
|
||||
pseudoxml: |
||||
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml |
||||
@echo |
||||
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." |
@ -0,0 +1,275 @@
@@ -0,0 +1,275 @@
|
||||
#!/usr/bin/env python |
||||
# -*- coding: utf-8 -*- |
||||
# |
||||
# ordr2 documentation build configuration file, created by |
||||
# sphinx-quickstart on Tue Jul 9 22:26:36 2013. |
||||
# |
||||
# This file is execfile()d with the current directory set to its |
||||
# containing dir. |
||||
# |
||||
# Note that not all possible configuration values are present in this |
||||
# autogenerated file. |
||||
# |
||||
# All configuration values have a default; values that are commented out |
||||
# serve to show the default. |
||||
|
||||
import sys |
||||
import os |
||||
|
||||
# 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. |
||||
#sys.path.insert(0, os.path.abspath('.')) |
||||
|
||||
# Get the project root dir, which is the parent dir of this |
||||
cwd = os.getcwd() |
||||
project_root = os.path.dirname(cwd) |
||||
|
||||
# Insert the project root dir as the first element in the PYTHONPATH. |
||||
# This lets us ensure that the source package is imported, and that its |
||||
# version is used. |
||||
sys.path.insert(0, project_root) |
||||
|
||||
import ordr2 |
||||
|
||||
# -- General configuration --------------------------------------------- |
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here. |
||||
#needs_sphinx = '1.0' |
||||
|
||||
# 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.viewcode'] |
||||
|
||||
# Add any paths that contain templates here, relative to this directory. |
||||
templates_path = ['_templates'] |
||||
|
||||
# The suffix of source filenames. |
||||
source_suffix = '.rst' |
||||
|
||||
# The encoding of source files. |
||||
#source_encoding = 'utf-8-sig' |
||||
|
||||
# The master toctree document. |
||||
master_doc = 'index' |
||||
|
||||
# General information about the project. |
||||
project = u'Ordr2' |
||||
copyright = u"2017, Holger Frey" |
||||
|
||||
# The version info for the project you're documenting, acts as replacement |
||||
# for |version| and |release|, also used in various other places throughout |
||||
# the built documents. |
||||
# |
||||
# The short X.Y version. |
||||
version = ordr2.__version__ |
||||
# The full version, including alpha/beta/rc tags. |
||||
release = ordr2.__version__ |
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation |
||||
# for a list of supported languages. |
||||
#language = None |
||||
|
||||
# There are two options for replacing |today|: either, you set today to |
||||
# some non-false value, then it is used: |
||||
#today = '' |
||||
# Else, today_fmt is used as the format for a strftime call. |
||||
#today_fmt = '%B %d, %Y' |
||||
|
||||
# List of patterns, relative to source directory, that match files and |
||||
# directories to ignore when looking for source files. |
||||
exclude_patterns = ['_build'] |
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all |
||||
# documents. |
||||
#default_role = None |
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text. |
||||
#add_function_parentheses = True |
||||
|
||||
# If true, the current module name will be prepended to all description |
||||
# unit titles (such as .. function::). |
||||
#add_module_names = True |
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the |
||||
# output. They are ignored by default. |
||||
#show_authors = False |
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use. |
||||
pygments_style = 'sphinx' |
||||
|
||||
# A list of ignored prefixes for module index sorting. |
||||
#modindex_common_prefix = [] |
||||
|
||||
# If true, keep warnings as "system message" paragraphs in the built |
||||
# documents. |
||||
#keep_warnings = False |
||||
|
||||
|
||||
# -- 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 = 'default' |
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a |
||||
# theme further. For a list of options available for each theme, see the |
||||
# documentation. |
||||
#html_theme_options = {} |
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory. |
||||
#html_theme_path = [] |
||||
|
||||
# The name for this set of Sphinx documents. If None, it defaults to |
||||
# "<project> v<release> documentation". |
||||
#html_title = None |
||||
|
||||
# A shorter title for the navigation bar. Default is the same as |
||||
# html_title. |
||||
#html_short_title = None |
||||
|
||||
# The name of an image file (relative to this directory) to place at the |
||||
# top of the sidebar. |
||||
#html_logo = None |
||||
|
||||
# The name of an image file (within the static path) to use as favicon |
||||
# of the docs. This file should be a Windows icon file (.ico) being |
||||
# 16x16 or 32x32 pixels large. |
||||
#html_favicon = None |
||||
|
||||
# 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'] |
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page |
||||
# bottom, using the given strftime format. |
||||
#html_last_updated_fmt = '%b %d, %Y' |
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to |
||||
# typographically correct entities. |
||||
#html_use_smartypants = True |
||||
|
||||
# Custom sidebar templates, maps document names to template names. |
||||
#html_sidebars = {} |
||||
|
||||
# Additional templates that should be rendered to pages, maps page names |
||||
# to template names. |
||||
#html_additional_pages = {} |
||||
|
||||
# If false, no module index is generated. |
||||
#html_domain_indices = True |
||||
|
||||
# If false, no index is generated. |
||||
#html_use_index = True |
||||
|
||||
# If true, the index is split into individual pages for each letter. |
||||
#html_split_index = False |
||||
|
||||
# If true, links to the reST sources are added to the pages. |
||||
#html_show_sourcelink = True |
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. |
||||
# Default is True. |
||||
#html_show_sphinx = True |
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. |
||||
# Default is True. |
||||
#html_show_copyright = True |
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages |
||||
# will contain a <link> tag referring to it. The value of this option |
||||
# must be the base URL from which the finished HTML is served. |
||||
#html_use_opensearch = '' |
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml"). |
||||
#html_file_suffix = None |
||||
|
||||
# Output file base name for HTML help builder. |
||||
htmlhelp_basename = 'ordr2doc' |
||||
|
||||
|
||||
# -- Options for LaTeX output ------------------------------------------ |
||||
|
||||
latex_elements = { |
||||
# The paper size ('letterpaper' or 'a4paper'). |
||||
#'papersize': 'letterpaper', |
||||
|
||||
# The font size ('10pt', '11pt' or '12pt'). |
||||
#'pointsize': '10pt', |
||||
|
||||
# Additional stuff for the LaTeX preamble. |
||||
#'preamble': '', |
||||
} |
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples |
||||
# (source start file, target name, title, author, documentclass |
||||
# [howto/manual]). |
||||
latex_documents = [ |
||||
('index', 'ordr2.tex', |
||||
u'Ordr2 Documentation', |
||||
u'Holger Frey', 'manual'), |
||||
] |
||||
|
||||
# The name of an image file (relative to this directory) to place at |
||||
# the top of the title page. |
||||
#latex_logo = None |
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings |
||||
# are parts, not chapters. |
||||
#latex_use_parts = False |
||||
|
||||
# If true, show page references after internal links. |
||||
#latex_show_pagerefs = False |
||||
|
||||
# If true, show URL addresses after external links. |
||||
#latex_show_urls = False |
||||
|
||||
# Documents to append as an appendix to all manuals. |
||||
#latex_appendices = [] |
||||
|
||||
# If false, no module index is generated. |
||||
#latex_domain_indices = True |
||||
|
||||
|
||||
# -- Options for manual page output ------------------------------------ |
||||
|
||||
# One entry per manual page. List of tuples |
||||
# (source start file, name, description, authors, manual section). |
||||
man_pages = [ |
||||
('index', 'ordr2', |
||||
u'Ordr2 Documentation', |
||||
[u'Holger Frey'], 1) |
||||
] |
||||
|
||||
# If true, show URL addresses after external links. |
||||
#man_show_urls = False |
||||
|
||||
|
||||
# -- Options for Texinfo output ---------------------------------------- |
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples |
||||
# (source start file, target name, title, author, |
||||
# dir menu entry, description, category) |
||||
texinfo_documents = [ |
||||
('index', 'ordr2', |
||||
u'Ordr2 Documentation', |
||||
u'Holger Frey', |
||||
'ordr2', |
||||
'One line description of project.', |
||||
'Miscellaneous'), |
||||
] |
||||
|
||||
# Documents to append as an appendix to all manuals. |
||||
#texinfo_appendices = [] |
||||
|
||||
# If false, no module index is generated. |
||||
#texinfo_domain_indices = True |
||||
|
||||
# How to display URL addresses: 'footnote', 'no', or 'inline'. |
||||
#texinfo_show_urls = 'footnote' |
||||
|
||||
# If true, do not generate a @detailmenu in the "Top" node's menu. |
||||
#texinfo_no_detailmenu = False |
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
.. include:: ../CONTRIBUTING.rst |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
Welcome to Ordr2's documentation! |
||||
====================================== |
||||
|
||||
Contents: |
||||
|
||||
.. toctree:: |
||||
:maxdepth: 2 |
||||
|
||||
readme |
||||
installation |
||||
usage |
||||
modules |
||||
contributing |
||||
authors |
||||
history |
||||
|
||||
Indices and tables |
||||
================== |
||||
|
||||
* :ref:`genindex` |
||||
* :ref:`modindex` |
||||
* :ref:`search` |
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
.. highlight:: shell |
||||
|
||||
============ |
||||
Installation |
||||
============ |
||||
|
||||
|
||||
Stable release |
||||
-------------- |
||||
|
||||
To install Ordr2, run this command in your terminal: |
||||
|
||||
.. code-block:: console |
||||
|
||||
$ pip install ordr2 |
||||
|
||||
This is the preferred method to install Ordr2, as it will always install the most recent stable release. |
||||
|
||||
If you don't have `pip`_ installed, this `Python installation guide`_ can guide |
||||
you through the process. |
||||
|
||||
.. _pip: https://pip.pypa.io |
||||
.. _Python installation guide: http://docs.python-guide.org/en/latest/starting/installation/ |
||||
|
||||
|
||||
From sources |
||||
------------ |
||||
|
||||
The sources for Ordr2 can be downloaded from the `Github repo`_. |
||||
|
||||
You can either clone the public repository: |
||||
|
||||
.. code-block:: console |
||||
|
||||
$ git clone git://github.com/holgi/ordr2 |
||||
|
||||
Or download the `tarball`_: |
||||
|
||||
.. code-block:: console |
||||
|
||||
$ curl -OL https://github.com/holgi/ordr2/tarball/master |
||||
|
||||
Once you have a copy of the source, you can install it with: |
||||
|
||||
.. code-block:: console |
||||
|
||||
$ python setup.py install |
||||
|
||||
|
||||
.. _Github repo: https://github.com/holgi/ordr2 |
||||
.. _tarball: https://github.com/holgi/ordr2/tarball/master |
@ -0,0 +1,242 @@
@@ -0,0 +1,242 @@
|
||||
@ECHO OFF |
||||
|
||||
REM Command file for Sphinx documentation |
||||
|
||||
if "%SPHINXBUILD%" == "" ( |
||||
set SPHINXBUILD=sphinx-build |
||||
) |
||||
set BUILDDIR=_build |
||||
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . |
||||
set I18NSPHINXOPTS=%SPHINXOPTS% . |
||||
if NOT "%PAPER%" == "" ( |
||||
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% |
||||
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% |
||||
) |
||||
|
||||
if "%1" == "" goto help |
||||
|
||||
if "%1" == "help" ( |
||||
:help |
||||
echo.Please use `make ^<target^>` where ^<target^> is one of |
||||
echo. html to make standalone HTML files |
||||
echo. dirhtml to make HTML files named index.html in directories |
||||
echo. singlehtml to make a single large HTML file |
||||
echo. pickle to make pickle files |
||||
echo. json to make JSON files |
||||
echo. htmlhelp to make HTML files and a HTML help project |
||||
echo. qthelp to make HTML files and a qthelp project |
||||
echo. devhelp to make HTML files and a Devhelp project |
||||
echo. epub to make an epub |
||||
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter |
||||
echo. text to make text files |
||||
echo. man to make manual pages |
||||
echo. texinfo to make Texinfo files |
||||
echo. gettext to make PO message catalogs |
||||
echo. changes to make an overview over all changed/added/deprecated items |
||||
echo. xml to make Docutils-native XML files |
||||
echo. pseudoxml to make pseudoxml-XML files for display purposes |
||||
echo. linkcheck to check all external links for integrity |
||||
echo. doctest to run all doctests embedded in the documentation if enabled |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "clean" ( |
||||
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i |
||||
del /q /s %BUILDDIR%\* |
||||
goto end |
||||
) |
||||
|
||||
|
||||
%SPHINXBUILD% 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 |
||||
) |
||||
|
||||
if "%1" == "html" ( |
||||
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/html. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "dirhtml" ( |
||||
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "singlehtml" ( |
||||
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "pickle" ( |
||||
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished; now you can process the pickle files. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "json" ( |
||||
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished; now you can process the JSON files. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "htmlhelp" ( |
||||
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished; now you can run HTML Help Workshop with the ^ |
||||
.hhp project file in %BUILDDIR%/htmlhelp. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "qthelp" ( |
||||
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished; now you can run "qcollectiongenerator" with the ^ |
||||
.qhcp project file in %BUILDDIR%/qthelp, like this: |
||||
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\ordr2.qhcp |
||||
echo.To view the help file: |
||||
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\ordr2.ghc |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "devhelp" ( |
||||
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "epub" ( |
||||
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The epub file is in %BUILDDIR%/epub. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "latex" ( |
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "latexpdf" ( |
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex |
||||
cd %BUILDDIR%/latex |
||||
make all-pdf |
||||
cd %BUILDDIR%/.. |
||||
echo. |
||||
echo.Build finished; the PDF files are in %BUILDDIR%/latex. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "latexpdfja" ( |
||||
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex |
||||
cd %BUILDDIR%/latex |
||||
make all-pdf-ja |
||||
cd %BUILDDIR%/.. |
||||
echo. |
||||
echo.Build finished; the PDF files are in %BUILDDIR%/latex. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "text" ( |
||||
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The text files are in %BUILDDIR%/text. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "man" ( |
||||
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The manual pages are in %BUILDDIR%/man. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "texinfo" ( |
||||
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "gettext" ( |
||||
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The message catalogs are in %BUILDDIR%/locale. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "changes" ( |
||||
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.The overview file is in %BUILDDIR%/changes. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "linkcheck" ( |
||||
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Link check complete; look for any errors in the above output ^ |
||||
or in %BUILDDIR%/linkcheck/output.txt. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "doctest" ( |
||||
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Testing of doctests in the sources finished, look at the ^ |
||||
results in %BUILDDIR%/doctest/output.txt. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "xml" ( |
||||
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The XML files are in %BUILDDIR%/xml. |
||||
goto end |
||||
) |
||||
|
||||
if "%1" == "pseudoxml" ( |
||||
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml |
||||
if errorlevel 1 exit /b 1 |
||||
echo. |
||||
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. |
||||
goto end |
||||
) |
||||
|
||||
:end |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
===== |
||||
Usage |
||||
===== |
||||
|
||||
To use Ordr2 in a project:: |
||||
|
||||
import ordr2 |
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*- |
||||
|
||||
''' Top-level package for Ordr2. ''' |
||||
|
||||
__author__ = '''Holger Frey''' |
||||
__email__ = 'frey@imtek.de' |
||||
__version__ = '0.0.1' |
||||
|
||||
|
||||
from pyramid.config import Configurator |
||||
|
||||
|
||||
def main(global_config, **settings): |
||||
""" This function returns a Pyramid WSGI application. |
||||
""" |
||||
config = Configurator(settings=settings) |
||||
config.include('pyramid_jinja2') |
||||
config.include('.models') |
||||
config.include('.routes') |
||||
config.scan() |
||||
return config.make_wsgi_app() |
@ -0,0 +1,73 @@
@@ -0,0 +1,73 @@
|
||||
from sqlalchemy import engine_from_config |
||||
from sqlalchemy.orm import sessionmaker |
||||
from sqlalchemy.orm import configure_mappers |
||||
import zope.sqlalchemy |
||||
|
||||
# import or define all models here to ensure they are attached to the |
||||
# Base.metadata prior to any initialization routines |
||||
from .mymodel import MyModel # flake8: noqa |
||||
|
||||
# run configure_mappers after defining all of the models to ensure |
||||
# all relationships can be setup |
||||
configure_mappers() |
||||
|
||||
|
||||
def get_engine(settings, prefix='sqlalchemy.'): |
||||
return engine_from_config(settings, prefix) |
||||
|
||||
|
||||
def get_session_factory(engine): |
||||
factory = sessionmaker() |
||||
factory.configure(bind=engine) |
||||
return factory |
||||
|
||||
|
||||
def get_tm_session(session_factory, transaction_manager): |
||||
""" |
||||
Get a ``sqlalchemy.orm.Session`` instance backed by a transaction. |
||||
|
||||
This function will hook the session to the transaction manager which |
||||
will take care of committing any changes. |
||||
|
||||
- When using pyramid_tm it will automatically be committed or aborted |
||||
depending on whether an exception is raised. |
||||
|
||||
- When using scripts you should wrap the session in a manager yourself. |
||||
For example:: |
||||
|
||||
import transaction |
||||
|
||||
engine = get_engine(settings) |
||||
session_factory = get_session_factory(engine) |
||||
with transaction.manager: |
||||
dbsession = get_tm_session(session_factory, transaction.manager) |
||||
|
||||
""" |
||||
dbsession = session_factory() |
||||
zope.sqlalchemy.register( |
||||
dbsession, transaction_manager=transaction_manager) |
||||
return dbsession |
||||
|
||||
|
||||
def includeme(config): |
||||
""" |
||||
Initialize the model for a Pyramid app. |
||||
|
||||
Activate this setup using ``config.include('ordr2.models')``. |
||||
|
||||
""" |
||||
settings = config.get_settings() |
||||
|
||||
# use pyramid_tm to hook the transaction lifecycle to the request |
||||
config.include('pyramid_tm') |
||||
|
||||
session_factory = get_session_factory(get_engine(settings)) |
||||
config.registry['dbsession_factory'] = session_factory |
||||
|
||||
# make request.dbsession available for use in Pyramid |
||||
config.add_request_method( |
||||
# r.tm is the transaction manager used by pyramid_tm |
||||
lambda r: get_tm_session(session_factory, r.tm), |
||||
'dbsession', |
||||
reify=True |
||||
) |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
from sqlalchemy.ext.declarative import declarative_base |
||||
from sqlalchemy.schema import MetaData |
||||
|
||||
# Recommended naming convention used by Alembic, as various different database |
||||
# providers will autogenerate vastly different names making migrations more |
||||
# difficult. See: http://alembic.zzzcomputing.com/en/latest/naming.html |
||||
NAMING_CONVENTION = { |
||||
"ix": 'ix_%(column_0_label)s', |
||||
"uq": "uq_%(table_name)s_%(column_0_name)s", |
||||
"ck": "ck_%(table_name)s_%(constraint_name)s", |
||||
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", |
||||
"pk": "pk_%(table_name)s" |
||||
} |
||||
|
||||
metadata = MetaData(naming_convention=NAMING_CONVENTION) |
||||
Base = declarative_base(metadata=metadata) |
@ -0,0 +1,18 @@
@@ -0,0 +1,18 @@
|
||||
from sqlalchemy import ( |
||||
Column, |
||||
Index, |
||||
Integer, |
||||
Text, |
||||
) |
||||
|
||||
from .meta import Base |
||||
|
||||
|
||||
class MyModel(Base): |
||||
__tablename__ = 'models' |
||||
id = Column(Integer, primary_key=True) |
||||
name = Column(Text) |
||||
value = Column(Integer) |
||||
|
||||
|
||||
Index('my_index', MyModel.name, unique=True, mysql_length=255) |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
def includeme(config): |
||||
config.add_static_view('static', 'static', cache_max_age=3600) |
||||
config.add_route('home', '/') |
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
import os |
||||
import sys |
||||
import transaction |
||||
|
||||
from pyramid.paster import ( |
||||
get_appsettings, |
||||
setup_logging, |
||||
) |
||||
|
||||
from pyramid.scripts.common import parse_vars |
||||
|
||||
from ..models.meta import Base |
||||
from ..models import ( |
||||
get_engine, |
||||
get_session_factory, |
||||
get_tm_session, |
||||
) |
||||
from ..models import MyModel |
||||
|
||||
|
||||
def usage(argv): |
||||
cmd = os.path.basename(argv[0]) |
||||
print('usage: %s <config_uri> [var=value]\n' |
||||
'(example: "%s development.ini")' % (cmd, cmd)) |
||||
sys.exit(1) |
||||
|
||||
|
||||
def main(argv=sys.argv): |
||||
if len(argv) < 2: |
||||
usage(argv) |
||||
config_uri = argv[1] |
||||
options = parse_vars(argv[2:]) |
||||
setup_logging(config_uri) |
||||
settings = get_appsettings(config_uri, options=options) |
||||
|
||||
engine = get_engine(settings) |
||||
Base.metadata.create_all(engine) |
||||
|
||||
session_factory = get_session_factory(engine) |
||||
|
||||
with transaction.manager: |
||||
dbsession = get_tm_session(session_factory, transaction.manager) |
||||
|
||||
model = MyModel(name='one', value=1) |
||||
dbsession.add(model) |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,154 @@
@@ -0,0 +1,154 @@
|
||||
@import url(//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); |
||||
body { |
||||
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
||||
font-weight: 300; |
||||
color: #ffffff; |
||||
background: #bc2131; |
||||
} |
||||
h1, |
||||
h2, |
||||
h3, |
||||
h4, |
||||
h5, |
||||
h6 { |
||||
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; |
||||
font-weight: 300; |
||||
} |
||||
p { |
||||
font-weight: 300; |
||||
} |
||||
.font-normal { |
||||
font-weight: 400; |
||||
} |
||||
.font-semi-bold { |
||||
font-weight: 600; |
||||
} |
||||
.font-bold { |
||||
font-weight: 700; |
||||
} |
||||
.starter-template { |
||||
margin-top: 250px; |
||||
} |
||||
.starter-template .content { |
||||
margin-left: 10px; |
||||
} |
||||
.starter-template .content h1 { |
||||
margin-top: 10px; |
||||
font-size: 60px; |
||||
} |
||||
.starter-template .content h1 .smaller { |
||||
font-size: 40px; |
||||
color: #f2b7bd; |
||||
} |
||||
.starter-template .content .lead { |
||||
font-size: 25px; |
||||
color: #f2b7bd; |
||||
} |
||||
.starter-template .content .lead .font-normal { |
||||
color: #ffffff; |
||||
} |
||||
.starter-template .links { |
||||
float: right; |
||||
right: 0; |
||||
margin-top: 125px; |
||||
} |
||||
.starter-template .links ul { |
||||
display: block; |
||||
padding: 0; |
||||
margin: 0; |
||||
} |
||||
.starter-template .links ul li { |
||||
list-style: none; |
||||
display: inline; |
||||
margin: 0 10px; |
||||
} |
||||
.starter-template .links ul li:first-child { |
||||
margin-left: 0; |
||||
} |
||||
.starter-template .links ul li:last-child { |
||||
margin-right: 0; |
||||
} |
||||
.starter-template .links ul li.current-version { |
||||
color: #f2b7bd; |
||||
font-weight: 400; |
||||
} |
||||
.starter-template .links ul li a, a { |
||||
color: #f2b7bd; |
||||
text-decoration: underline; |
||||
} |
||||
.starter-template .links ul li a:hover, a:hover { |
||||
color: #ffffff; |
||||
text-decoration: underline; |
||||
} |
||||
.starter-template .links ul li .icon-muted { |
||||
color: #eb8b95; |
||||
margin-right: 5px; |
||||
} |
||||
.starter-template .links ul li:hover .icon-muted { |
||||
color: #ffffff; |
||||
} |
||||
.starter-template .copyright { |
||||
margin-top: 10px; |
||||
font-size: 0.9em; |
||||
color: #f2b7bd; |
||||
text-transform: lowercase; |
||||
float: right; |
||||
right: 0; |
||||
} |
||||
@media (max-width: 1199px) { |
||||
.starter-template .content h1 { |
||||
font-size: 45px; |
||||
} |
||||
.starter-template .content h1 .smaller { |
||||
font-size: 30px; |
||||
} |
||||
.starter-template .content .lead { |
||||
font-size: 20px; |
||||
} |
||||
} |
||||
@media (max-width: 991px) { |
||||
.starter-template { |
||||
margin-top: 0; |
||||
} |
||||
.starter-template .logo { |
||||
margin: 40px auto; |
||||
} |
||||
.starter-template .content { |
||||
margin-left: 0; |
||||
text-align: center; |
||||
} |
||||
.starter-template .content h1 { |
||||
margin-bottom: 20px; |
||||
} |
||||
.starter-template .links { |
||||
float: none; |
||||
text-align: center; |
||||
margin-top: 60px; |
||||
} |
||||
.starter-template .copyright { |
||||
float: none; |
||||
text-align: center; |
||||
} |
||||
} |
||||
@media (max-width: 767px) { |
||||
.starter-template .content h1 .smaller { |
||||
font-size: 25px; |
||||
display: block; |
||||
} |
||||
.starter-template .content .lead { |
||||
font-size: 16px; |
||||
} |
||||
.starter-template .links { |
||||
margin-top: 40px; |
||||
} |
||||
.starter-template .links ul li { |
||||
display: block; |
||||
margin: 0; |
||||
} |
||||
.starter-template .links ul li .icon-muted { |
||||
display: none; |
||||
} |
||||
.starter-template .copyright { |
||||
margin-top: 20px; |
||||
} |
||||
} |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
{% extends "layout.jinja2" %} |
||||
|
||||
{% block content %} |
||||
<div class="content"> |
||||
<h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy scaffold</span></h1> |
||||
<p class="lead"><span class="font-semi-bold">404</span> Page Not Found</p> |
||||
</div> |
||||
{% endblock content %} |
@ -0,0 +1,64 @@
@@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html> |
||||
<html lang="{{request.locale_name}}"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<meta name="description" content="pyramid web application"> |
||||
<meta name="author" content="Pylons Project"> |
||||
<link rel="shortcut icon" href="{{request.static_url('ordr2:static/pyramid-16x16.png')}}"> |
||||
|
||||
<title>Cookiecutter Alchemy project for the Pyramid Web Framework</title> |
||||
|
||||
<!-- Bootstrap core CSS --> |
||||
<link href="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> |
||||
|
||||
<!-- Custom styles for this scaffold --> |
||||
<link href="{{request.static_url('ordr2:static/theme.css')}}" rel="stylesheet"> |
||||
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> |
||||
<!--[if lt IE 9]> |
||||
<script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> |
||||
<script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> |
||||
<![endif]--> |
||||
</head> |
||||
|
||||
<body> |
||||
|
||||
<div class="starter-template"> |
||||
<div class="container"> |
||||
<div class="row"> |
||||
<div class="col-md-2"> |
||||
<img class="logo img-responsive" src="{{request.static_url('ordr2:static/pyramid.png') }}" alt="pyramid web framework"> |
||||
</div> |
||||
<div class="col-md-10"> |
||||
{% block content %} |
||||
<p>No content</p> |
||||
{% endblock content %} |
||||
</div> |
||||
</div> |
||||
<div class="row"> |
||||
<div class="links"> |
||||
<ul> |
||||
<li><i class="glyphicon glyphicon-cog icon-muted"></i><a href="https://github.com/Pylons/pyramid">Github Project</a></li> |
||||
<li><i class="glyphicon glyphicon-globe icon-muted"></i><a href="https://webchat.freenode.net/?channels=pyramid">IRC Channel</a></li> |
||||
<li><i class="glyphicon glyphicon-home icon-muted"></i><a href="http://pylonsproject.org">Pylons Project</a></li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
<div class="row"> |
||||
<div class="copyright"> |
||||
Copyright © Pylons Project |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
|
||||
<!-- Bootstrap core JavaScript |
||||
================================================== --> |
||||
<!-- Placed at the end of the document so the pages load faster --> |
||||
<script src="//oss.maxcdn.com/libs/jquery/1.10.2/jquery.min.js"></script> |
||||
<script src="//oss.maxcdn.com/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script> |
||||
</body> |
||||
</html> |
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
{% extends "layout.jinja2" %} |
||||
|
||||
{% block content %} |
||||
<div class="content"> |
||||
<h1><span class="font-semi-bold">Pyramid</span> <span class="smaller">Alchemy project</span></h1> |
||||
<p class="lead">Welcome to <span class="font-normal">Ordr2</span>, a Pyramid application generated by<br><span class="font-normal">Cookiecutter</span>.</p> |
||||
</div> |
||||
{% endblock content %} |
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
from pyramid.response import Response |
||||
from pyramid.view import view_config |
||||
|
||||
from sqlalchemy.exc import DBAPIError |
||||
|
||||
from ..models import MyModel |
||||
|
||||
|
||||
@view_config(route_name='home', renderer='../templates/mytemplate.jinja2') |
||||
def my_view(request): |
||||
try: |
||||
query = request.dbsession.query(MyModel) |
||||
one = query.filter(MyModel.name == 'one').first() |
||||
except DBAPIError: |
||||
return Response(db_err_msg, content_type='text/plain', status=500) |
||||
return {'one': one, 'project': 'Ordr2'} |
||||
|
||||
|
||||
db_err_msg = """\ |
||||
Pyramid is having a problem using your SQL database. The problem |
||||
might be caused by one of the following things: |
||||
|
||||
1. You may need to run the "initialize_ordr2_db" script |
||||
to initialize your database tables. Check your virtual |
||||
environment's "bin" directory for this script and try to run it. |
||||
|
||||
2. Your database server may not be running. Check that the |
||||
database server referred to by the "sqlalchemy.url" setting in |
||||
your "development.ini" file is running. |
||||
|
||||
After you fix the problem, please restart the Pyramid application to |
||||
try it again. |
||||
""" |
@ -0,0 +1,7 @@
@@ -0,0 +1,7 @@
|
||||
from pyramid.view import notfound_view_config |
||||
|
||||
|
||||
@notfound_view_config(renderer='../templates/404.jinja2') |
||||
def notfound_view(request): |
||||
request.response.status = 404 |
||||
return {} |
@ -0,0 +1,63 @@
@@ -0,0 +1,63 @@
|
||||
### |
||||
# app configuration |
||||
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html |
||||
### |
||||
|
||||
[app:main] |
||||
use = egg:ordr2 |
||||
|
||||
pyramid.reload_templates = false |
||||
pyramid.debug_authorization = false |
||||
pyramid.debug_notfound = false |
||||
pyramid.debug_routematch = false |
||||
pyramid.default_locale_name = en |
||||
|
||||
sqlalchemy.url = sqlite:///%(here)s/ordr2.sqlite |
||||
|
||||
### |
||||
# wsgi server configuration |
||||
### |
||||
|
||||
[server:main] |
||||
use = egg:waitress#main |
||||
listen = *:6543 |
||||
|
||||
### |
||||
# logging configuration |
||||
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html |
||||
### |
||||
|
||||
[loggers] |
||||
keys = root, ordr2, sqlalchemy |
||||
|
||||
[handlers] |
||||
keys = console |
||||
|
||||
[formatters] |
||||
keys = generic |
||||
|
||||
[logger_root] |
||||
level = WARN |
||||
handlers = console |
||||
|
||||
[logger_ordr2] |
||||
level = WARN |
||||
handlers = |
||||
qualname = ordr2 |
||||
|
||||
[logger_sqlalchemy] |
||||
level = WARN |
||||
handlers = |
||||
qualname = sqlalchemy.engine |
||||
# "level = INFO" logs SQL queries. |
||||
# "level = DEBUG" logs SQL queries and results. |
||||
# "level = WARN" logs neither. (Recommended for production systems.) |
||||
|
||||
[handler_console] |
||||
class = StreamHandler |
||||
args = (sys.stderr,) |
||||
level = NOTSET |
||||
formatter = generic |
||||
|
||||
[formatter_generic] |
||||
format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
[pytest] |
||||
testpaths = tests |
||||
python_files = *.py |
@ -0,0 +1,11 @@
@@ -0,0 +1,11 @@
|
||||
pip==8.1.2 |
||||
bumpversion==0.5.3 |
||||
wheel==0.29.0 |
||||
watchdog==0.8.3 |
||||
flake8==2.6.0 |
||||
tox==2.3.1 |
||||
coverage==4.1 |
||||
Sphinx==1.4.8 |
||||
|
||||
pytest==2.9.2 |
||||
pytest-runner==2.11.1 |
@ -0,0 +1,22 @@
@@ -0,0 +1,22 @@
|
||||
[bumpversion] |
||||
current_version = 0.0.1 |
||||
commit = True |
||||
tag = True |
||||
|
||||
[bumpversion:file:setup.py] |
||||
search = version='{current_version}' |
||||
replace = version='{new_version}' |
||||
|
||||
[bumpversion:file:ordr2/__init__.py] |
||||
search = __version__ = '{current_version}' |
||||
replace = __version__ = '{new_version}' |
||||
|
||||
[bdist_wheel] |
||||
universal = 1 |
||||
|
||||
[flake8] |
||||
exclude = docs |
||||
|
||||
[aliases] |
||||
test = pytest |
||||
# Define setup.py command aliases here |
@ -0,0 +1,86 @@
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env python |
||||
# -*- coding: utf-8 -*- |
||||
|
||||
''' The setup script. ''' |
||||
|
||||
from setuptools import setup, find_packages |
||||
|
||||
with open('README.rst') as readme_file: |
||||
readme = readme_file.read() |
||||
|
||||
with open('HISTORY.rst') as history_file: |
||||
history = history_file.read() |
||||
|
||||
requirements = [ |
||||
'pyramid', |
||||
'pyramid_jinja2', |
||||
'pyramid_debugtoolbar', |
||||
'pyramid_tm', |
||||
'SQLAlchemy', |
||||
'transaction', |
||||
'zope.sqlalchemy', |
||||
'waitress', |
||||
] |
||||
|
||||
setup_requirements = [ |
||||
'pytest-runner', |
||||
# TODO(holgi): put setup requirements (distutils extensions, etc.) here |
||||
] |
||||
|
||||
test_requirements = [ |
||||
'WebTest >= 1.3.1', # py3 compat |
||||
'pytest', |
||||
'pytest-cov', |
||||
# TODO: put package test requirements here |
||||
] |
||||
|
||||
setup( |
||||
name='ordr2', |
||||
|
||||
version='0.0.1', |
||||
|
||||
description='Ordering System for CPI', |
||||
long_description=readme + '\n\n' + history, |
||||
|
||||
author='Holger Frey', |
||||
author_email='frey@imtek.de', |
||||
url='https://github.com/holgi/ordr2', |
||||
|
||||
packages=find_packages(include=['ordr2']), |
||||
|
||||
include_package_data=True, |
||||
install_requires=requirements, |
||||
license='BSD license', |
||||
|
||||
zip_safe=False, |
||||
|
||||
keywords='ordr2 web pyramid pylons', |
||||
|
||||
# see https://pypi.python.org/pypi?%3Aaction=list_classifiers |
||||
classifiers=[ |
||||
'Development Status :: 2 - Pre-Alpha', |
||||
'Intended Audience :: Developers', |
||||
'License :: OSI Approved :: BSD License', |
||||
'Natural Language :: English', |
||||
'Programming Language :: Python :: 3', |
||||
'Programming Language :: Python :: 3.4', |
||||
'Programming Language :: Python :: 3.5', |
||||
'Programming Language :: Python :: 3.6', |
||||
'Framework :: Pyramid', |
||||
'Topic :: Internet :: WWW/HTTP', |
||||
'Topic :: Internet :: WWW/HTTP :: WSGI :: Application', |
||||
], |
||||
|
||||
test_suite='tests', |
||||
tests_require=test_requirements, |
||||
|
||||
setup_requires=setup_requirements, |
||||
entry_points={ |
||||
'paste.app_factory': [ |
||||
'main = ordr2:main', |
||||
], |
||||
'console_scripts': [ |
||||
'initialize_ordr2_db = ordr2.scripts.initializedb:main', |
||||
], |
||||
}, |
||||
) |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
# -*- coding: utf-8 -*- |
||||
|
||||
''' Unit test package for ordr2. ''' |
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env python |
||||
# -*- coding: utf-8 -*- |
||||
|
||||
''' Tests for `ordr2` package. ''' |
||||
|
||||
import pytest |
||||
|
||||
|
||||
import ordr2 |
||||
|
||||
|
||||
@pytest.fixture |
||||
def response(): |
||||
''' Sample pytest fixture. |
||||
|
||||
See more at: http://doc.pytest.org/en/latest/fixture.html |
||||
''' |
||||
# import requests |
||||
# return requests.get('https://github.com/audreyr/cookiecutter-pypackage') |
||||
|
||||
|
||||
def test_content(response): |
||||
''' Sample pytest test function with the pytest fixture as an argument. ''' |
||||
# from bs4 import BeautifulSoup |
||||
# assert 'GitHub' in BeautifulSoup(response.content).title.string |
Reference in new issue