diff --git a/MANIFEST.in b/MANIFEST.in index be387ff..104d6cd 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,5 @@ +recursive-include docs * +recursive-exclude docs/_build * include LICENSE.txt include Makefile include MANIFEST.in diff --git a/Makefile b/Makefile index c22a76c..51b9a60 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ build: $(PYTHON) -m setup sdist $(PYTHON) -m setup bdist_wheel -install: +install: build $(PYTHON) -m pip install dist/$(PACKAGE)-*.whl .PHONY: build install diff --git a/README.md b/README.md index ff8151a..15a4bc9 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,32 @@ # RevPiModIO -### Python3 programming for RevolutionPi of Kunbus GmbH. +### Python3 programming for RevolutionPi of KUNBUS GmbH. -The module provides all devices and IOs from the piCtory configuration in Python3. It allows direct -access to the values via their assigned name. Read and write actions on the process image are -managed by the module itself without the programmer having to worry about offsets and addresses. -For the gateway modules such as ModbusTCP or Profinet, own 'inputs' and 'outputs' can be defined -over a specific address range. These IOs can be accessed directly from the values using Python3. +The module provides all devices and IOs from the piCtory configuration in +Python3. It allows direct access to the values via their assigned name. Read and +write actions on the process image are managed by the module itself without the +programmer having to worry about offsets and addresses. + +For the gateway modules such as ModbusTCP or Profinet, own 'inputs' and +'outputs' can be defined over a specific address range. These IOs can be +accessed directly from the values using Python3. #### [RevolutionPi Hardware](https://revolution.kunbus.com) -The hardware configuration is done via a web page, which is located on the PiCore module. The -program is called “piCtory”. -All inputs and outputs can be assigned symbolic names to facilitate their handling and programming. -If this configuration is created and activated, the data of the input, output and gateway modules -are exchanged via a 4096-byte process image. +The hardware configuration is done via a web page, which is located on the +PiCore module. The program is called “piCtory”. + +All inputs and outputs can be assigned symbolic names to facilitate their +handling and programming. If this configuration is created and activated, the +data of the input, output and gateway modules are exchanged via a 4096-byte +process image. #### [Our RevPiModIO module](https://revpimodio.org/) -If you use our module in Python3, it uses the piCtory configuration to create all the inputs and -outputs with their symbolic names as objects. The programmer can address these directly via the -symbolic names and access the values of the inputs and outputs – both reading and writing! +If you use our module in Python3, it uses the piCtory configuration to create +all the inputs and outputs with their symbolic names as objects. The programmer +can address these directly via the symbolic names and access the values of the +inputs and outputs – both reading and writing! ``` import revpimodio2 @@ -34,11 +40,11 @@ if rpi.io.t_on.value: rpi.exit() ``` -In addition, it provides the developer with many useful functions that can be used to develop -cyclic or event-based programs. +In addition, it provides the developer with many useful functions that can be +used to develop cyclic or event-based programs. -If you know the .add_event_detect(...) function of the GPIO module from the Raspberry Pi, you -can also achieve this behavior with the Revolution Pi: +If you know the .add_event_detect(...) function of the GPIO module from the +Raspberry Pi, you can also achieve this behavior with the Revolution Pi: ``` import revpimodio2 @@ -58,8 +64,8 @@ rpi.io.t_on.reg_event(event_detect) rpi.mainloop() ``` -Even with hardware changes, but constant names of the inputs and outputs, the actual Python3 -source code does not need to be changed! +Even with hardware changes, but constant names of the inputs and outputs, the +actual Python3 source code does not need to be changed! #### How it works: @@ -79,10 +85,10 @@ source code does not need to be changed! #### Summary -With this module we want to spare all Python developers a lot of work. All communication with the -process image is optimally performed inside the module. Changes to the inputs and outputs are also -evaluated along with the additional functions of the module give the developer many tools along -the way. +With this module we want to spare all Python developers a lot of work. All +communication with the process image is optimally performed inside the module. +Changes to the inputs and outputs are also evaluated along with the additional +functions of the module give the developer many tools along the way. More examples: (https://revpimodio.org/en/blogs/examples/) diff --git a/docs/Makefile b/docs/Makefile index c35888f..95fc1f7 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,10 +1,10 @@ # Minimal makefile for Sphinx documentation # -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -SPHINXPROJ = RevPiModIO2 +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build @@ -12,9 +12,12 @@ BUILDDIR = _build help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -.PHONY: help Makefile +clean: + rm -R $(BUILDDIR) + +.PHONY: help clean Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/conf.py b/docs/conf.py index 2c735de..a5d2da7 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -1,174 +1,36 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- +# Configuration file for the Sphinx documentation builder. # -# RevPiModIO2 documentation build configuration file, created by -# sphinx-quickstart on Sun Oct 20 12:38:53 2019. -# -# 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. +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html -# 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. -# import os import sys -sys.path.insert(0, os.path.abspath('../')) +sys.path.insert(0, os.path.abspath('../src')) from revpimodio2 import __version__ -# -- General configuration ------------------------------------------------ +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' +project = 'revpimodio2' +copyright = '2023, Sven Sager' +author = 'Sven Sager' +version = __version__ + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration -# 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.todo', 'sphinx.ext.viewcode' ] -# Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = 'RevPiModIO2' -copyright = '2019, Sven Sager (NaruX)' -author = 'Sven Sager (NaruX)' - -# 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 = __version__ -# The full version, including alpha/beta/rc tags. -# release = '' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True - - -# -- 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 = 'alabaster' - -# 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 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'] - -# Custom sidebar templates, must be a dictionary that maps document names -# to template names. -# -# This is required for the alabaster theme -# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars -html_sidebars = { - '**': [ - 'relations.html', # needs 'show_related': True theme option to display - 'searchbox.html', - ] -} - - -# -- Options for HTMLHelp output ------------------------------------------ - -# Output file base name for HTML help builder. -htmlhelp_basename = 'RevPiModIO2doc' - - -# -- 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': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'RevPiModIO2.tex', 'RevPiModIO2 Documentation', - 'Sven Sager (NaruX)', 'manual'), -] - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'revpimodio2', 'RevPiModIO2 Documentation', - [author], 1) -] - - -# -- 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 = [ - (master_doc, 'RevPiModIO2', 'RevPiModIO2 Documentation', - author, 'RevPiModIO2', 'One line description of project.', - 'Miscellaneous'), -] - - - diff --git a/docs/index.rst b/docs/index.rst index 7762839..50cf826 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,9 +1,9 @@ -.. RevPiModIO2 documentation master file, created by - sphinx-quickstart on Sun Oct 20 12:38:53 2019. +.. revpimodio2 documentation master file, created by + sphinx-quickstart on Sun Jan 22 17:49:41 2023. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. -Welcome to RevPiModIO2's documentation! +Welcome to revpimodio2's documentation! ======================================= .. toctree:: diff --git a/docs/modules.rst b/docs/modules.rst index c622db6..76962cf 100644 --- a/docs/modules.rst +++ b/docs/modules.rst @@ -1,5 +1,5 @@ -revpimodio2 -=========== +src +=== .. toctree:: :maxdepth: 4 diff --git a/docs/revpimodio2.app.rst b/docs/revpimodio2.app.rst deleted file mode 100644 index e588c23..0000000 --- a/docs/revpimodio2.app.rst +++ /dev/null @@ -1,7 +0,0 @@ -revpimodio2\.app module -======================= - -.. automodule:: revpimodio2.app - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/revpimodio2.device.rst b/docs/revpimodio2.device.rst deleted file mode 100644 index 3f1fc70..0000000 --- a/docs/revpimodio2.device.rst +++ /dev/null @@ -1,7 +0,0 @@ -revpimodio2\.device module -========================== - -.. automodule:: revpimodio2.device - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/revpimodio2.helper.rst b/docs/revpimodio2.helper.rst deleted file mode 100644 index f82992a..0000000 --- a/docs/revpimodio2.helper.rst +++ /dev/null @@ -1,7 +0,0 @@ -revpimodio2\.helper module -========================== - -.. automodule:: revpimodio2.helper - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/revpimodio2.io.rst b/docs/revpimodio2.io.rst deleted file mode 100644 index 95d9f95..0000000 --- a/docs/revpimodio2.io.rst +++ /dev/null @@ -1,7 +0,0 @@ -revpimodio2\.io module -====================== - -.. automodule:: revpimodio2.io - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/revpimodio2.modio.rst b/docs/revpimodio2.modio.rst deleted file mode 100644 index 8fa4c5d..0000000 --- a/docs/revpimodio2.modio.rst +++ /dev/null @@ -1,7 +0,0 @@ -revpimodio2\.modio module -========================= - -.. automodule:: revpimodio2.modio - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/revpimodio2.netio.rst b/docs/revpimodio2.netio.rst deleted file mode 100644 index 175acb0..0000000 --- a/docs/revpimodio2.netio.rst +++ /dev/null @@ -1,7 +0,0 @@ -revpimodio2\.netio module -========================= - -.. automodule:: revpimodio2.netio - :members: - :undoc-members: - :show-inheritance: diff --git a/docs/revpimodio2.rst b/docs/revpimodio2.rst index a5c890a..6980e58 100644 --- a/docs/revpimodio2.rst +++ b/docs/revpimodio2.rst @@ -4,20 +4,82 @@ revpimodio2 package Submodules ---------- -.. toctree:: +revpimodio2.app module +---------------------- - revpimodio2.app - revpimodio2.device - revpimodio2.helper - revpimodio2.io - revpimodio2.modio - revpimodio2.netio - revpimodio2.summary +.. automodule:: revpimodio2.app + :members: + :undoc-members: + :show-inheritance: + +revpimodio2.device module +------------------------- + +.. automodule:: revpimodio2.device + :members: + :undoc-members: + :show-inheritance: + +revpimodio2.errors module +------------------------- + +.. automodule:: revpimodio2.errors + :members: + :undoc-members: + :show-inheritance: + +revpimodio2.helper module +------------------------- + +.. automodule:: revpimodio2.helper + :members: + :undoc-members: + :show-inheritance: + +revpimodio2.io module +--------------------- + +.. automodule:: revpimodio2.io + :members: + :undoc-members: + :show-inheritance: + +revpimodio2.modio module +------------------------ + +.. automodule:: revpimodio2.modio + :members: + :undoc-members: + :show-inheritance: + +revpimodio2.netio module +------------------------ + +.. automodule:: revpimodio2.netio + :members: + :undoc-members: + :show-inheritance: + +revpimodio2.pictory module +-------------------------- + +.. automodule:: revpimodio2.pictory + :members: + :undoc-members: + :show-inheritance: + +revpimodio2.summary module +-------------------------- + +.. automodule:: revpimodio2.summary + :members: + :undoc-members: + :show-inheritance: Module contents --------------- .. automodule:: revpimodio2 - :members: - :undoc-members: - :show-inheritance: + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/revpimodio2.summary.rst b/docs/revpimodio2.summary.rst deleted file mode 100644 index 89d9f5c..0000000 --- a/docs/revpimodio2.summary.rst +++ /dev/null @@ -1,7 +0,0 @@ -revpimodio2\.summary module -=========================== - -.. automodule:: revpimodio2.summary - :members: - :undoc-members: - :show-inheritance: diff --git a/setup.py b/setup.py index 0edde13..54a1893 100644 --- a/setup.py +++ b/setup.py @@ -1,15 +1,19 @@ #! /usr/bin/env python3 # -*- coding: utf-8 -*- -"""Setupscript for revpimodio.""" +"""Setup-script for revpimodio2.""" __author__ = "Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager" __license__ = "LGPLv3" from setuptools import setup, find_namespace_packages +with open("README.md") as fh: + # Load long description from readme file + long_description = fh.read() + setup( name="revpimodio2", - version="2.6.0rc2", + version="2.6.0rc3", packages=find_namespace_packages("src"), package_dir={'': 'src'}, @@ -27,16 +31,9 @@ setup( author_email="akira@narux.de", maintainer="Sven Sager", maintainer_email="akira@revpimodio.org", - description="Python3 programming for RevolutionPi of Kunbus GmbH", - long_description="Das Modul stellt alle Devices und IOs aus der piCtory Konfiguration \n" - "in Python3 zur Verfügung. Es ermöglicht den direkten Zugriff auf die \n" - "Werte über deren vergebenen Namen. Lese- und Schreibaktionen mit dem \n" - "Prozessabbild werden von dem Modul selbst verwaltet, ohne dass sich \n" - "der Programmierer um Offsets und Adressen kümmern muss. Für die \n" - "Gatewaymodule wie ModbusTCP oder Profinet sind eigene 'Inputs' und \n" - "'Outputs' über einen bestimmten Adressbereich definierbar. Auf \n" - "diese IOs kann mit Python3 über den Namen direkt auf die Werte \n" - "zugegriffen werden.", + description="Python3 programming for RevolutionPi of KUNBUS GmbH", + long_description=long_description, + long_description_content_type="text/markdown", keywords=["revpi", "revolution pi", "revpimodio", "plc", "automation"], classifiers=[ "Development Status :: 5 - Production/Stable", diff --git a/src/revpimodio2/__init__.py b/src/revpimodio2/__init__.py index 92ccb19..c1c497a 100644 --- a/src/revpimodio2/__init__.py +++ b/src/revpimodio2/__init__.py @@ -5,7 +5,7 @@ Stellt alle Klassen fuer den RevolutionPi zur Verfuegung. Webpage: https://revpimodio.org/ Stellt Klassen fuer die einfache Verwendung des Revolution Pis der -Kunbus GmbH (https://revolution.kunbus.de/) zur Verfuegung. Alle I/Os werden +KUNBUS GmbH (https://revolution.kunbus.de/) zur Verfuegung. Alle I/Os werden aus der piCtory Konfiguration eingelesen und mit deren Namen direkt zugreifbar gemacht. Fuer Gateways sind eigene IOs ueber mehrere Bytes konfigurierbar Mit den definierten Namen greift man direkt auf die gewuenschten Daten zu. @@ -22,8 +22,8 @@ __all__ = [ __author__ = "Sven Sager " __copyright__ = "Copyright (C) 2023 Sven Sager" __license__ = "LGPLv3" -__name__ = "revpimodio2" -__version__ = "2.6.0rc2" +__package__ = "revpimodio2" +__version__ = "2.6.0rc3" from ._internal import * from .helper import Cycletools, EventCallback diff --git a/src/revpimodio2/modio.py b/src/revpimodio2/modio.py index 882f093..f83298c 100644 --- a/src/revpimodio2/modio.py +++ b/src/revpimodio2/modio.py @@ -250,7 +250,7 @@ class RevPiModIO(object): err_names_check = {} for device in sorted(lst_devices, key=lambda x: x["offset"]): - # VDev alter piCtory Versionen auf Kunbus-Standard ändern + # VDev alter piCtory Versionen auf KUNBUS-Standard ändern if device["position"] == "adap.": device["position"] = 64 while device["position"] in self.device: