Skip to content

Commit 4965fa6

Browse files
authored
Add CI support (#168)
* Refactored and simplified calculation of RTU frames, added missing unit tests * - fixing a few small issues - bringing a few areas of coverage back up * adding installer test script * enabling the checksum tests in check frame, fixing tests * * Updating documentation * Adding code to handle messages that do not respond * Fixes issue 41 * cleaning up the build tools a bit * Adding more commands to the setup.py - pep8, lint, 2to3 Fixed a few pep8/lint bugs to test * moving files around * pep8 and cleanup * more cleanup * Fixes issue 47 * adding another quick example * cutting 200 pep8 errors * working on py3 merge * updating to python3 * reverting back changes, remember Switch flag next time * adding some magic methods, just cause * adding documentation pdf * Fixes issue 49 * Adds True and False constants for older python versions. Update issue 50 * adding tests for a few fixes * Fixes issue 51 * fixing tests broken by interface change * Updates issue 52 * Fixes issue 53 * Fix to add Python < 2.5 compatibility This fix simply removes all the ternaries that were added in Python 2.5. Fixes issue 50 * adding a mostly complete diagnostic register implementation * Adding more documentation and helpful factory methods. The documentation added was to address some questions with the synchronous and asynchrounous server implementations as well as the functionality of the data contexts. The factory methods were added by request to simplify the creation of a fully populated DataBlock address space. * adding modbus plus registers * adding endian ability to payload builder * Finishing the remaining modbus protocol * Adding the remaining portions of the protocol (request/response) * Tieing these into the factory decoder * Adding tests to cover the new code (need more) * Fixing a few bugs found along the way * finished file read/write record requests * documentation, more tests, fixing extra commands * adding more tests * Fixing the client/server async/sync implementations - asynchronous client/server for tcp working and tested - synchronous client/server for tcp/udp working and tested - adding tests to exercise the synchronous client/server - more documentation * adding test stubs to get full coverage count * working on jamod, need to set up more complete project * adding GetDeviceInformationRequest * adding read device information to decoder factory * fixing some example errors * working on the serial implementations * fixing the synchronous server implementation * updating functional tests and documentation for sync-serial * updating tac files * Updating the documentation for the serial client/servers * adding readme to root * Fixes issue 56 * Fixes issue 1 * adding a requirements file for virtualenv folk * adding more cohesive code to the payload utilities * forgot to add the new example to the doc index * Fixing the rtu size calculation isse #55 on google code * using the endian flag in register factory * fixing bad documentation * fixing issue 58 on google code * Fix binary framer and add start and end tokens Fixes a TypeError occuring while escaping token bytes in the message and adds the start and end tokens to the packet. * Adding checking in the client for an unconnected socket. * Fixing issue 60 on google code (including ez_setup) * fixing github issue #7 * adding tests and two utilities * adding message parser utility * Fixing extended message decoding * Now correctly decoding sub function messages (diagnostic) * Message parser now finished and documented * Fixed broken logger unit test * ModbusSparseDataBlock handled dictionaries incorrectly (they have an __iter__ attribute). Changed 'if' to 'elif' * Updating the Readme.rst to explain how to install in zero dependency mode. * Fixing issue #10 * updating the client documentation * updating the server context documentation * fixes #9 on github * fixing the factory decoding and adding examples * pushing to version 1.0 * Fixing a bug in the asynchronous client that slipped through. * complete tests for the sync client * cleaning up some pep8 errors * finished unit tests for async client * adding another test to the test-install script * finished covering sync client * updating documentation * adding another example, adding debug checks * Fixing the serial implementation of everything * updating lots of reference documentation * fixing the fifo semantics of serial clients * using transaction manager in async clients * fixing references * fixing incorrect rtu lenght calculation * Add optional server_address to Sync and Async TCP/UDP Server API * Improve erver_address defaults to passing None * adding a few messages * Adding a message encoding generator for testing. - fixed messages not passing **kwargs to base - fixed binary framer off by 1 - fixed mei_message rtu size tests - added a message generator to use with message parser - fixed message parser with ascii - tested message parser with all formats (added to messages) * adding documentation for message formats * updating documentation and being pedantic * Allowing overloading of message encoding * allow codes like payload builder to encode * added IPayloadBuilder interface (future) * renamed builder methods to reflect vision * added error code decoding to name * fixed affected tests * Cleaning up the build tools - moving custom datastores to examples - bumping required versions - making the debug server console optional - updating documentation * adding support for pydev * fixing broken nosetest (/dev/pts) and pydev issues * adding bcd payload builder * reworking contrib packages * adding bcd payload contrib * moving complex examples to contrib * syncing version on pypi * adding server rest api * moving web -> bottle * fixing documentation * adding gui base * adding initial manager page * adding data view * fixing error in example * adding the ability to override sync client framer * updating the performance test * fixing documentation * fixing memory leak in sync client * adding modicon encoder/decoder * Fix bogus calculation in ModbusSocketFramer.checkFrame (one of the tests also seemed wrong, I had to fix it) * Adding sunspec client example * Changing @staticmethod to @classmethod to fix inheritance * adding method to retrieve all the device blocks * adding the initial mapper interface * adding ideas in progress * adding a modbus datastore saver * making lrc/crc read stdin * adding the callback server example * adding a periodic updating example * fixing documentation * adding fix for stuck RTU streams * fixing documentation error * Adding an example for changing framers - new example changing-framers.py - added documentation link * Reworking the transaction managers to be explicit - Serial framers use the FIFO manager (results in order) - Socket framers use the Dict manager (tid -> result) - Fixed tests and removed bad global managers - Managers no longer use global state (now instance) * Bumping the version and adding a changelog * Fixing a logic error in client code - Now correctly choosing transaction manager * Fixing 2to3 common warnings * Fixed example typo in readme * Adding slave context delete ability - Fixes #20 * Fixing google code issue 69 - custom-message example had bugs - http://code.google.com/p/pymodbus/issues/detail?id=69 * Fixed docstring in synchronous serial client connect() method I think there was a copy/paste error in the docstring. It said tcp but I think it is supposed to be serial. * Fix for issue #21 * Allowing options to be passed through - This fixes issue #21 - Options now go to the transaction manager * Adding source_address to TCP client inputs * Typo * Typo * Typo * Typo * Adding some new examples * modbus scraper (and documentation) * thread safe datastore (and documentation) * Adding a concurrent client example * Allow specification of client connection handler in Modbus...Server o ModbusTcpServer and ModbusUdpServer allows handler class other than default Modbus{Connected,Disconnected}RequestHandler o Add debug logging on request failure, to help diagnose root causes * Fixes #46 * Fixes #48 * Adds the option to drop into zero mode for slaves * Fixes #42 * Bumping the version to 1.3.0 * add missing self operator The parameter values of the constructor within class WriteMultipleRegistersRequest can specified as single value or list of values. But if a single value is given the missing self operator on line 137 leads to crash in line 138 with error: TypeError("object of type 'int' has no len()",) * typo: fix spelling of Parameter Signed-off-by: Karl Palsson <[email protected]> * async: missing slaves: add missing imports 1e0bcde is missing imports into the async server, the import was only added to the sync server. Further fix for #42 Signed-off-by: Karl Palsson <[email protected]> * Fix zero_mode argument for ModbusSlaveContext Using "-" in the argument name causes SyntaxError 'non-keyword arg after keyword arg' * Fix typo in constants * Adding an example and adding tcp timeout * fixes #70 * Endianness now used in packing bytes * Adding a libmodbus wrapper * adding new contrib example of libmodbus client * updating example documentation so users can find it * closes #73 * Execute methods of Requests accept context There were errors whenever a request that got handles in other_message.py got it's execute method called, as it was being called with a context parameter. The functions now accept this parameter, although they don't do anything with it. The tests have also been updated. * Add Modbus RTU syncronous server example * Signal handlers to stop in shutdown(). * WriteMultipleRegistersRequest: Handle values=None case Currently, if None is passed in explicitly, or if values is not given, the 'values' object is correctly identified as *not* having an __iter__ attribute, but is incorrectly identified as being a valid register value. This breaks testInvalidWriteMultipleRegistersRequest. Solution: if we see None, replace this with [] and skip the check for __iter__. * Fix payload tests. Looking at the "encoded" string, it looks identical to that of the big endian encoding string, and my understanding is that the data shown in "encoded" *IS* big-endian, not little-endian. I have no idea how this passed before, but it passes now. * sync.ModbusUdpClient: Correct reference to settimeout. I could not find a 'settimeout' (case-insensitive) anywhere in the codebase other than on this line, but I *did* see it was a method of socket.socket. So I'll assume that this was *supposed* to be calling socket.socket.settimeout. * test-client-sync: Fix UDP connection test. Rather than passing in a vanilla object, we should pass in something that implements the settimeout method. * Lazily initialize InstallManagementConsole Simply importing the management console takes ~0.3 sec on an 1GHz Atom. Since it is (I suspect) often not used, lazily importing it should help startup for many programs. * Fixes the UDP client socket timeout bug fixes #51 * Implement mask_write_register method in client mixin * Workaround for bug 101 #101 * Workaround for bug 101 #101 * Riptide 1.3.0 pymodbus internal pre-release (riptide1) with dhoomakethu's fix for bashwork#101. * Riptide 1.3.0 pymodbus internal pre-release (riptide1) with dhoomakethu's fix for bashwork#101. * Use a PEP 404 compliant version. Start at rc93101 to usurp any other real release candidates. * Use a PEP 404 compliant version. Start at rc93101 to usurp any other real release candidates. * Document Riptide specific instructions. * Include Workaround for bug 101 bashwork#101 * Include Workaround for bug 101 bashwork#101 * Better tag names. * pymodbus fix for modes RTU error cases. * version bumped to c93103 * version bumped to c93103 * fixed issue with pymodbus timing over serial * fixed issue with pymodbus timing over serial * Add RIPTIDE.md to .gitignore * bump version to rc93105 * fix merge conflicts * fix version file * fix unit test failures * cleanup * #121 changelog updated * Misc update Add __maintainer__ field in setup.py * 1. #162, creating universal distribution for py2 and py3 2. Merge PR #152 , create compatible versions * fix test failures * fix ReadDeviceInformationRequest encoding problem * #166 fix failing tests on python 3.5 * mis - Updated documentation * #167 updated documentation for CI * #167 disable pep8/flake checks for the time being * #167, fix install dependencies osx, remove pypy from supported python versions * #167, fix install dependencies osx, remove pypy from supported python versions * #167 , fix minior error in travis.yml * Bump version to 1.3.0rc2, update README
1 parent 2fb593d commit 4965fa6

File tree

261 files changed

+51903
-169
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

261 files changed

+51903
-169
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ pymodbus.egg-info/
99
.noseids
1010

1111
.idea/
12+
.tox/
13+
doc/api/epydoc/html/
14+
.vscode/
15+
16+

.travis.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
sudo: false
2+
language: python
3+
matrix:
4+
include:
5+
- os: linux
6+
python: "2.7"
7+
- os: linux
8+
python: "3.4"
9+
- os: linux
10+
python: "3.5"
11+
- os: linux
12+
python: "3.6"
13+
- os: osx
14+
language: generic
15+
before_install:
16+
- if [ $TRAVIS_OS_NAME = osx ]; then brew update; fi
17+
- if [ $TRAVIS_OS_NAME = osx ]; then brew install openssl; fi
18+
19+
install:
20+
# - scripts/travis.sh pip install pip-accel
21+
- scripts/travis.sh pip install coveralls
22+
- scripts/travis.sh pip install --requirement=requirements-checks.txt
23+
- scripts/travis.sh pip install --requirement=requirements-tests.txt
24+
- scripts/travis.sh LC_ALL=C pip install .
25+
script:
26+
# - scripts/travis.sh make check
27+
- scripts/travis.sh make test
28+
after_success:
29+
- scripts/travis.sh coveralls
30+
branches:
31+
except:
32+
- /^[0-9]/

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions

Makefile

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Makefile for the `pymodbus' package.
2+
3+
WORKON_HOME ?= $(HOME)/.virtualenvs
4+
VIRTUAL_ENV ?= $(WORKON_HOME)/pymodbus
5+
PATH := $(VIRTUAL_ENV)/bin:$(PATH)
6+
MAKE := $(MAKE) --no-print-directory
7+
SHELL = bash
8+
9+
default:
10+
@echo 'Makefile for pymodbus'
11+
@echo
12+
@echo 'Usage:'
13+
@echo
14+
@echo ' make install install the package in a virtual environment'
15+
@echo ' make reset recreate the virtual environment'
16+
@echo ' make check check coding style (PEP-8, PEP-257)'
17+
@echo ' make test run the test suite, report coverage'
18+
@echo ' make tox run the tests on all Python versions'
19+
@echo ' make clean cleanup all temporary files'
20+
@echo
21+
22+
install:
23+
@test -d "$(VIRTUAL_ENV)" || mkdir -p "$(VIRTUAL_ENV)"
24+
@test -x "$(VIRTUAL_ENV)/bin/python" || virtualenv --quiet "$(VIRTUAL_ENV)"
25+
@test -x "$(VIRTUAL_ENV)/bin/pip" || easy_install pip
26+
@pip install --quiet --requirement=requirements.txt
27+
@pip uninstall --yes pymodbus &>/dev/null || true
28+
@pip install --quiet --no-deps --ignore-installed .
29+
30+
reset:
31+
$(MAKE) clean
32+
rm -Rf "$(VIRTUAL_ENV)"
33+
$(MAKE) install
34+
35+
check: install
36+
@pip install --upgrade --quiet --requirement=requirements-checks.txt
37+
@flake8
38+
39+
test: install
40+
@pip install --quiet --requirement=requirements-tests.txt
41+
@nosetests --with-coverage --cover-html
42+
@coverage report --fail-under=90
43+
44+
tox: install
45+
@pip install --quiet tox && tox
46+
47+
docs: install
48+
@pip install --quiet sphinx
49+
@cd doc/sphinx && sphinx-build -nb html -d doctrees . html
50+
51+
publish: install
52+
git push origin && git push --tags origin
53+
$(MAKE) clean
54+
pip install --quiet twine wheel
55+
python setup.py sdist bdist_wheel
56+
twine upload dist/*
57+
$(MAKE) clean
58+
59+
clean:
60+
@rm -Rf *.egg .cache .coverage .tox build dist docs/build htmlcov
61+
@find -depth -type d -name __pycache__ -exec rm -Rf {} \;
62+
@find -type f -name '*.pyc' -delete
63+
64+
.PHONY: default install reset check test tox docs publish clean

README.rst

Lines changed: 24 additions & 1 deletion

doc/sphinx/conf.py

Lines changed: 49 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -1,198 +1,88 @@
1-
# -*- coding: utf-8 -*-
1+
# Pymodbus
22
#
3-
# PyModbus documentation build configuration file, created by
4-
# sphinx-quickstart on Tue Apr 14 19:11:16 2009.
5-
#
6-
# This file is execfile()d with the current directory set to its containing dir.
7-
#
8-
# Note that not all possible configuration values are present in this
9-
# autogenerated file.
10-
#
11-
# All configuration values have a default; values that are commented out
12-
# serve to show the default.
3+
# Author: dhoomakethu <[email protected]>
4+
# Last Change: May 20, 2017
5+
# URL: https://pymodbus.readthedocs.io
6+
7+
"""Sphinx documentation configuration for the `pymodbus` package."""
8+
9+
import os
10+
import sys
11+
12+
sys.path.insert(0, os.path.abspath(os.pardir))
1313

14-
import sys, os
1514

16-
# If extensions (or modules to document with autodoc) are in another directory,
17-
# add these directories to sys.path here. If the directory is relative to the
18-
# documentation root, use os.path.abspath to make it absolute, like shown here.
19-
#sys.path.append(os.path.abspath('.'))
15+
# -- General configuration ----------------------------------------------------
2016

21-
# -- General configuration -----------------------------------------------------
17+
# Sphinx extension module names.
18+
extensions = [
19+
'sphinx.ext.autodoc',
20+
'sphinx.ext.intersphinx',
21+
'sphinx.ext.viewcode',
22+
'humanfriendly.sphinx',
23+
]
2224

23-
# Add any Sphinx extension module names here, as strings. They can be extensions
24-
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
25-
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage']
25+
# Sort members by the source order instead of alphabetically.
26+
autodoc_member_order = 'bysource'
2627

27-
# Add any paths that contain templates here, relative to this directory.
28-
templates_path = ['_templates']
28+
# Paths that contain templates, relative to this directory.
29+
templates_path = ['templates']
2930

3031
# The suffix of source filenames.
3132
source_suffix = '.rst'
3233

33-
# The encoding of source files.
34-
#source_encoding = 'utf-8'
35-
3634
# The master toctree document.
3735
master_doc = 'index'
3836

3937
# General information about the project.
40-
project = u'Pymodbus'
41-
copyright = u'2009, Galen Collins'
38+
project = u'pymodbus'
39+
copyright = u'2017, riptideio/bashworks'
4240

4341
# The version info for the project you're documenting, acts as replacement for
4442
# |version| and |release|, also used in various other places throughout the
4543
# built documents.
46-
#
44+
45+
# Find the package version and make it the release.
46+
from pymodbus import __version__ as pymodbus_version # noqa
47+
4748
# The short X.Y version.
48-
version = '1.0'
49+
version = '.'.join(pymodbus_version.split('.')[:2])
50+
4951
# The full version, including alpha/beta/rc tags.
50-
release = '1.0'
52+
release = pymodbus_version
5153

5254
# The language for content autogenerated by Sphinx. Refer to documentation
5355
# for a list of supported languages.
54-
#language = None
56+
language = 'en'
5557

56-
# There are two options for replacing |today|: either, you set today to some
57-
# non-false value, then it is used:
58-
#today = ''
59-
# Else, today_fmt is used as the format for a strftime call.
60-
#today_fmt = '%B %d, %Y'
61-
62-
# List of documents that shouldn't be included in the build.
63-
#unused_docs = []
64-
65-
# List of directories, relative to source directory, that shouldn't be searched
66-
# for source files.
67-
exclude_trees = ['build']
68-
69-
# The reST default role (used for this markup: `text`) to use for all documents.
70-
#default_role = None
58+
# List of patterns, relative to source directory, that match files and
59+
# directories to ignore when looking for source files.
60+
exclude_patterns = ['build']
7161

7262
# If true, '()' will be appended to :func: etc. cross-reference text.
73-
#add_function_parentheses = True
74-
75-
# If true, the current module name will be prepended to all description
76-
# unit titles (such as .. function::).
77-
#add_module_names = True
78-
79-
# If true, sectionauthor and moduleauthor directives will be shown in the
80-
# output. They are ignored by default.
81-
show_authors = True
63+
add_function_parentheses = True
8264

8365
# The name of the Pygments (syntax highlighting) style to use.
8466
pygments_style = 'sphinx'
8567

86-
# A list of ignored prefixes for module index sorting.
87-
#modindex_common_prefix = []
88-
68+
# Refer to the Python standard library.
69+
# From: http://twistedmatrix.com/trac/ticket/4582.
70+
intersphinx_mapping = dict(
71+
python=('https://docs.python.org/2', None),
72+
capturer=('https://capturer.readthedocs.io/en/latest', None),
73+
humanfriendly=('https://humanfriendly.readthedocs.io/en/latest', None),
74+
)
8975

90-
# -- Options for extensions ---------------------------------------------------
91-
autodoc_default_flags = ['members', 'inherited-members', 'show-inheritance']
92-
autoclass_content = 'both'
76+
# -- Options for HTML output --------------------------------------------------
9377

94-
# -- Options for HTML output ---------------------------------------------------
95-
96-
# The theme to use for HTML and HTML Help pages. Major themes that come with
97-
# Sphinx are currently 'default' and 'sphinxdoc'.
78+
# The theme to use for HTML and HTML Help pages. See the documentation for
79+
# a list of builtin themes.
9880
html_theme = 'default'
9981

100-
# Theme options are theme-specific and customize the look and feel of a theme
101-
# further. For a list of options available for each theme, see the
102-
# documentation.
103-
#html_theme_options = {}
104-
105-
# Add any paths that contain custom themes here, relative to this directory.
106-
#html_theme_path = []
107-
108-
# The name for this set of Sphinx documents. If None, it defaults to
109-
# "<project> v<release> documentation".
110-
#html_title = None
111-
112-
# A shorter title for the navigation bar. Default is the same as html_title.
113-
#html_short_title = None
114-
115-
# The name of an image file (relative to this directory) to place at the top
116-
# of the sidebar.
117-
#html_logo = None
118-
119-
# The name of an image file (within the static path) to use as favicon of the
120-
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
121-
# pixels large.
122-
#html_favicon = None
82+
# Output file base name for HTML help builder.
83+
htmlhelp_basename = 'pymodbusdoc'
12384

12485
# Add any paths that contain custom static files (such as style sheets) here,
12586
# relative to this directory. They are copied after the builtin static files,
12687
# so a file named "default.css" will overwrite the builtin "default.css".
12788
html_static_path = ['static']
128-
129-
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
130-
# using the given strftime format.
131-
#html_last_updated_fmt = '%b %d, %Y'
132-
133-
# If true, SmartyPants will be used to convert quotes and dashes to
134-
# typographically correct entities.
135-
#html_use_smartypants = True
136-
137-
# Custom sidebar templates, maps document names to template names.
138-
#html_sidebars = {}
139-
140-
# Additional templates that should be rendered to pages, maps page names to
141-
# template names.
142-
#html_additional_pages = {}
143-
144-
# If false, no module index is generated.
145-
#html_use_modindex = True
146-
147-
# If false, no index is generated.
148-
#html_use_index = True
149-
150-
# If true, the index is split into individual pages for each letter.
151-
#html_split_index = False
152-
153-
# If true, links to the reST sources are added to the pages.
154-
#html_show_sourcelink = True
155-
156-
# If true, an OpenSearch description file will be output, and all pages will
157-
# contain a <link> tag referring to it. The value of this option must be the
158-
# base URL from which the finished HTML is served.
159-
#html_use_opensearch = ''
160-
161-
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
162-
#html_file_suffix = ''
163-
164-
# Output file base name for HTML help builder.
165-
htmlhelp_basename = 'Pymodbus'
166-
167-
168-
# -- Options for LaTeX output --------------------------------------------------
169-
170-
# The paper size ('letter' or 'a4').
171-
#latex_paper_size = 'letter'
172-
173-
# The font size ('10pt', '11pt' or '12pt').
174-
#latex_font_size = '10pt'
175-
176-
# Grouping the document tree into LaTeX files. List of tuples
177-
# (source start file, target name, title, author, documentclass [howto/manual]).
178-
latex_documents = [
179-
('index', 'Pymodbus.tex', ur'Pymodbus Documentation',
180-
ur'Galen Collins', 'manual'),
181-
]
182-
183-
# The name of an image file (relative to this directory) to place at the top of
184-
# the title page.
185-
#latex_logo = None
186-
187-
# For "manual" documents, if this is true, then toplevel headings are parts,
188-
# not chapters.
189-
#latex_use_parts = False
190-
191-
# Additional stuff for the LaTeX preamble.
192-
#latex_preamble = ''
193-
194-
# Documents to append as an appendix to all manuals.
195-
#latex_appendices = []
196-
197-
# If false, no module index is generated.
198-
#latex_use_modindex = True
1.64 MB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
15.9 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
5.07 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
10.4 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
28.4 KB
Binary file not shown.
Binary file not shown.
26.1 KB
Binary file not shown.

doc/sphinx/doctrees/index.doctree

4.88 KB
Binary file not shown.
27.7 KB
Binary file not shown.
55.8 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
45 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
89.3 KB
Binary file not shown.
Binary file not shown.
43.3 KB
Binary file not shown.
19.7 KB
Binary file not shown.
29.8 KB
Binary file not shown.
85.7 KB
Binary file not shown.
3.57 KB
Binary file not shown.
61.6 KB
Binary file not shown.
34.7 KB
Binary file not shown.
Binary file not shown.
85.8 KB
Binary file not shown.
57.5 KB
Binary file not shown.
4.51 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
87.1 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.
36.5 KB
Binary file not shown.

0 commit comments

Comments
 (0)