mirror of
				https://github.com/KevinMidboe/python-gpiozero.git
				synced 2025-10-29 17:50:37 +00:00 
			
		
		
		
	First stab at #451
This is almost a straight copy'n'paste of picamera's development chapter with a few minor changes to make it read sensibly for GPIO Zero; it needs plenty more work to fulfil the goals of #451 but hopefully this'll act as a reasonable base for people to work on.
This commit is contained in:
		| @@ -61,7 +61,7 @@ Release 1.2.0 (2016-04-10) | |||||||
| * Added support for lots of ADC chips (MCP3xxx family) (`#162`_) - many thanks | * Added support for lots of ADC chips (MCP3xxx family) (`#162`_) - many thanks | ||||||
|   to pcopa and lurch! |   to pcopa and lurch! | ||||||
| * Added support for pigpiod as a pin implementation with | * Added support for pigpiod as a pin implementation with | ||||||
|   :class:`~gpiozero.pins.pigpiod.PiGPIOPin` (`#180`_) |   :class:`~gpiozero.pins.pigpio.PiGPIOPin` (`#180`_) | ||||||
| * Many refinements to the base classes mean more consistency in composite | * Many refinements to the base classes mean more consistency in composite | ||||||
|   devices and several bugs squashed (`#164`_, `#175`_, `#182`_, `#189`_, |   devices and several bugs squashed (`#164`_, `#175`_, `#182`_, `#189`_, | ||||||
|   `#193`_, `#229`_) |   `#193`_, `#229`_) | ||||||
|   | |||||||
							
								
								
									
										130
									
								
								docs/development.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								docs/development.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,130 @@ | |||||||
|  | =========== | ||||||
|  | Development | ||||||
|  | =========== | ||||||
|  |  | ||||||
|  | .. currentmodule:: gpiozero | ||||||
|  |  | ||||||
|  | The main GitHub repository for the project can be found at: | ||||||
|  |  | ||||||
|  |     https://github.com/RPi-Distro/python-gpiozero | ||||||
|  |  | ||||||
|  | For anybody wishing to hack on the project, we recommend starting off by | ||||||
|  | getting to grips with some simple device classes. Pick something like | ||||||
|  | :class:`LED` and follow its heritage backward to :class:`DigitalOutputDevice`. | ||||||
|  | Follow that back to :class:`OutputDevice` and you should have a good | ||||||
|  | understanding of simple output devices along with a grasp of how GPIO Zero | ||||||
|  | relies fairly heavily upon inheritance to refine the functionality of devices. | ||||||
|  | The same can be done for input devices, and eventually more complex devices | ||||||
|  | (composites and SPI based). | ||||||
|  |  | ||||||
|  |  | ||||||
|  | .. _dev_install: | ||||||
|  |  | ||||||
|  | Development installation | ||||||
|  | ======================== | ||||||
|  |  | ||||||
|  | If you wish to develop GPIO Zero itself, we recommend obtaining the source by | ||||||
|  | cloning the GitHub repository and then use the "develop" target of the Makefile | ||||||
|  | which will install the package as a link to the cloned repository allowing | ||||||
|  | in-place development (it also builds a tags file for use with vim/emacs with | ||||||
|  | Exuberant’s ctags utility). The following example demonstrates this method | ||||||
|  | within a virtual Python environment: | ||||||
|  |  | ||||||
|  | .. code-block:: console | ||||||
|  |  | ||||||
|  |     $ sudo apt-get install lsb-release build-essential git git-core \ | ||||||
|  |     >   exuberant-ctags virtualenvwrapper python-virtualenv python3-virtualenv \ | ||||||
|  |     >   python-dev python3-dev | ||||||
|  |     $ cd | ||||||
|  |     $ mkvirtualenv -p /usr/bin/python3 python-gpiozero | ||||||
|  |     $ workon python-gpiozero | ||||||
|  |     (python-gpiozero) $ git clone https://github.com/RPi-Distro/python-gpiozero.git | ||||||
|  |     (python-gpiozero) $ cd python-gpiozero | ||||||
|  |     (python-gpiozero) $ make develop | ||||||
|  |  | ||||||
|  | You will likely wish to install one or more pin implementations within the | ||||||
|  | virtual environment (if you don't, GPIO Zero will use the "native" pin | ||||||
|  | implementation which is largely experimental at this stage and not very | ||||||
|  | useful): | ||||||
|  |  | ||||||
|  | .. code-block:: console | ||||||
|  |  | ||||||
|  |     (python-gpiozero) $ pip install rpi.gpio pigpio | ||||||
|  |  | ||||||
|  | If you are working on SPI devices you may also wish to install the ``spidev`` | ||||||
|  | package to provide hardware SPI capabilities (again, GPIO Zero will work | ||||||
|  | without this, but a big-banging software SPI implementation will be used | ||||||
|  | instead): | ||||||
|  |  | ||||||
|  | .. code-block:: console | ||||||
|  |  | ||||||
|  |     (python-gpiozero) $ pip install spidev | ||||||
|  |  | ||||||
|  | To pull the latest changes from git into your clone and update your | ||||||
|  | installation: | ||||||
|  |  | ||||||
|  | .. code-block:: console | ||||||
|  |  | ||||||
|  |     $ workon python-gpiozero | ||||||
|  |     (python-gpiozero) $ cd ~/python-gpiozero | ||||||
|  |     (python-gpiozero) $ git pull | ||||||
|  |     (python-gpiozero) $ make develop | ||||||
|  |  | ||||||
|  | To remove your installation, destroy the sandbox and the clone: | ||||||
|  |  | ||||||
|  | .. code-block:: console | ||||||
|  |  | ||||||
|  |     (python-gpiozero) $ deactivate | ||||||
|  |     $ rmvirtualenv python-gpiozero | ||||||
|  |     $ rm -fr ~/python-gpiozero | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Building the docs | ||||||
|  | ================= | ||||||
|  |  | ||||||
|  | If you wish to build the docs, you'll need a few more dependencies. Inkscape | ||||||
|  | is used for conversion of SVGs to other formats, Graphviz is used for rendering | ||||||
|  | certain charts, and TeX Live is required for building PDF output. The following | ||||||
|  | command should install all required dependencies: | ||||||
|  |  | ||||||
|  | .. code-block:: console | ||||||
|  |  | ||||||
|  |     $ sudo apt-get install texlive-latex-recommended texlive-latex-extra \ | ||||||
|  |         texlive-fonts-recommended graphviz inkscape | ||||||
|  |  | ||||||
|  | Once these are installed, you can use the "doc" target to build the | ||||||
|  | documentation: | ||||||
|  |  | ||||||
|  | .. code-block:: console | ||||||
|  |  | ||||||
|  |     $ workon python-gpiozero | ||||||
|  |     (python-gpiozero) $ cd ~/python-gpiozero | ||||||
|  |     (python-gpiozero) $ make doc | ||||||
|  |  | ||||||
|  | The HTML output is written to :file:`docs/_build/html` while the PDF output | ||||||
|  | goes to :file:`docs/_build/latex`. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Test suite | ||||||
|  | ========== | ||||||
|  |  | ||||||
|  | If you wish to run the GPIO Zero test suite, follow the instructions in | ||||||
|  | :ref:`dev_install` above and then make the "test" target within the sandbox: | ||||||
|  |  | ||||||
|  | .. code-block:: console | ||||||
|  |  | ||||||
|  |     $ workon python-gpiozero | ||||||
|  |     (python-gpiozero) $ cd ~/python-gpiozero | ||||||
|  |     (python-gpiozero) $ make test | ||||||
|  |  | ||||||
|  | The test suite expects pins 22 and 27 (by default) to be wired together in | ||||||
|  | order to run the "real" pin tests. The pins used by the test suite can be | ||||||
|  | overridden with the environment variables ``GPIOZERO_TEST_PIN`` (defaults to | ||||||
|  | 22) and ``GPIOZERO_TEST_INPUT_PIN`` (defaults to 27). | ||||||
|  |  | ||||||
|  | .. warning:: | ||||||
|  |  | ||||||
|  |     When wiring GPIOs together, ensure a load (like a 330Ω resistor) is placed | ||||||
|  |     between them. Failure to do so may lead to blown GPIO pins (your humble | ||||||
|  |     author has a fried GPIO27 as a result of such laziness, although it did | ||||||
|  |     take *many* runs of the test suite before this occurred!). | ||||||
| @@ -8,7 +8,6 @@ Table of Contents | |||||||
|  |  | ||||||
|     recipes |     recipes | ||||||
|     notes |     notes | ||||||
|     contributing |  | ||||||
|     api_input |     api_input | ||||||
|     api_output |     api_output | ||||||
|     api_spi |     api_spi | ||||||
| @@ -20,6 +19,8 @@ Table of Contents | |||||||
|     api_exc |     api_exc | ||||||
|     cli_tools |     cli_tools | ||||||
|     source_values |     source_values | ||||||
|  |     contributing | ||||||
|  |     development | ||||||
|     changelog |     changelog | ||||||
|     license |     license | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user