mirror of
				https://github.com/KevinMidboe/python-gpiozero.git
				synced 2025-10-29 17:50:37 +00:00 
			
		
		
		
	This commit is a fairly major piece of work that abstracts all pin operations (function, state, edge detection, PWM, etc.) into a base "Pin" class which is then used by input/output/composite devices to perform all required configuration. The idea is to pave the way for I2C based IO extenders which can present additional GPIO ports with similar capabilities to the Pi's "native" GPIO ports. As a bonus it also abstracts away the reliance on the RPi.GPIO library to allow alternative pin implementations (e.g. using RPIO to take advantage of DMA based PWM), or even pure Python implementations.
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import os
 | |
| import sys
 | |
| from setuptools import setup, find_packages
 | |
| 
 | |
| "A simple interface to everyday GPIO components used with Raspberry Pi"
 | |
| 
 | |
| if sys.version_info[0] == 2:
 | |
|     if not sys.version_info >= (2, 7):
 | |
|         raise ValueError('This package requires Python 2.7 or above')
 | |
| elif sys.version_info[0] == 3:
 | |
|     if not sys.version_info >= (3, 2):
 | |
|         raise ValueError('This package requires Python 3.2 or above')
 | |
| else:
 | |
|     raise ValueError('Unrecognized major version of Python')
 | |
| 
 | |
| HERE = os.path.abspath(os.path.dirname(__file__))
 | |
| 
 | |
| # Workaround <http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html>
 | |
| try:
 | |
|     import multiprocessing
 | |
| except ImportError:
 | |
|     pass
 | |
| 
 | |
| __project__      = 'gpiozero'
 | |
| __version__      = '1.0.0'
 | |
| __author__       = 'Ben Nuttall'
 | |
| __author_email__ = 'ben@raspberrypi.org'
 | |
| __url__          = 'https://github.com/RPi-Distro/python-gpiozero'
 | |
| __platforms__    = 'ALL'
 | |
| 
 | |
| __classifiers__ = [
 | |
|     "Development Status :: 5 - Production/Stable",
 | |
|     "Intended Audience :: Education",
 | |
|     "Intended Audience :: Developers",
 | |
|     "Topic :: Education",
 | |
|     "Topic :: System :: Hardware",
 | |
|     "License :: OSI Approved :: BSD License",
 | |
|     "Programming Language :: Python :: 2",
 | |
|     "Programming Language :: Python :: 3",
 | |
| ]
 | |
| 
 | |
| __keywords__ = [
 | |
|     'raspberrypi',
 | |
|     'gpio',
 | |
| ]
 | |
| 
 | |
| __requires__ = [
 | |
|     'spidev',
 | |
| ]
 | |
| 
 | |
| __extra_requires__ = {
 | |
| }
 | |
| 
 | |
| __entry_points__ = {
 | |
| }
 | |
| 
 | |
| 
 | |
| def main():
 | |
|     import io
 | |
|     with io.open(os.path.join(HERE, 'README.rst'), 'r') as readme:
 | |
|         setup(
 | |
|             name                 = __project__,
 | |
|             version              = __version__,
 | |
|             description          = __doc__,
 | |
|             long_description     = readme.read(),
 | |
|             classifiers          = __classifiers__,
 | |
|             author               = __author__,
 | |
|             author_email         = __author_email__,
 | |
|             url                  = __url__,
 | |
|             license              = [
 | |
|                 c.rsplit('::', 1)[1].strip()
 | |
|                 for c in __classifiers__
 | |
|                 if c.startswith('License ::')
 | |
|             ][0],
 | |
|             keywords             = __keywords__,
 | |
|             packages             = find_packages(),
 | |
|             include_package_data = True,
 | |
|             platforms            = __platforms__,
 | |
|             install_requires     = __requires__,
 | |
|             extras_require       = __extra_requires__,
 | |
|             entry_points         = __entry_points__,
 | |
|         )
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 |