#!/usr/bin/env python import os from setuptools import setup, find_packages def path(fname=''): return os.path.abspath(os.path.join(os.path.dirname(__file__), fname)) def readfile(fname): with open(path(fname)) as f: return f.read() # noinspection PyShadowingBuiltins def pkg_files(dir): paths = [] # noinspection PyShadowingNames for path, _, files in os.walk(dir): for file in files: paths.append(os.path.join('..', path, file)) return paths plugins = pkg_files('platypush/plugins') backend = pkg_files('platypush/backend') setup( name="platypush", version="0.50.3", author="Fabio Manganiello", author_email="fabio@manganiello.tech", description="Platypush service", license="MIT", python_requires='>= 3.6', keywords="home-automation automation iot mqtt websockets redis dashboard notifications", url="https://platypush.tech", packages=find_packages(exclude=['tests']), include_package_data=True, package_data={ 'platypush': [ 'migrations/alembic.ini', 'migrations/alembic/*', 'migrations/alembic/**/*', 'install/**', 'install/scripts/*', 'install/scripts/**/*', 'install/requirements/*', 'install/docker/*', 'components.json.gz', ], }, entry_points={ 'console_scripts': [ 'platypush=platypush:main', 'platydock=platypush.platydock:main', 'platyvenv=platypush.platyvenv:main', ], }, long_description=readfile('README.md'), long_description_content_type='text/markdown', classifiers=[ "Topic :: Utilities", "License :: OSI Approved :: MIT License", "Development Status :: 4 - Beta", ], install_requires=[ 'alembic', 'croniter', 'docutils', 'flask', 'frozendict', 'marshmallow', 'marshmallow_dataclass', 'psutil', 'python-dateutil', 'python-magic', 'pyyaml', 'redis', 'requests', 'rsa', 'sqlalchemy', 'tornado', 'websocket-client', 'websockets', 'wheel', 'zeroconf>=0.27.0', ], extras_require={ # Support for Kafka backend and plugin 'kafka': ['kafka-python'], # Support for Pushbullet 'pushbullet': [ 'pushbullet.py @ https://github.com/rbrcsk/pushbullet.py/tarball/master' ], # This is only kept for back-compatibility purposes, as all the # dependencies of the HTTP webserver are now core dependencies. 'http': [], # Support for MQTT backends 'mqtt': ['paho-mqtt'], # Support for RSS feeds parser 'rss': ['feedparser', 'defusedxml'], # Support for PDF generation 'pdf': ['weasyprint'], # Support for Philips Hue plugin 'hue': ['phue'], # Support for MPD/Mopidy music server plugin and backend 'mpd': ['python-mpd2'], # Support for Google text2speech plugin 'google-tts': [ 'oauth2client', 'httplib2', 'google-api-python-client', 'google-auth', 'google-cloud-texttospeech', ], # Support for OMXPlayer plugin 'omxplayer': ['omxplayer-wrapper'], # Support for YouTube 'youtube': ['yt-dlp'], # Support for torrents download 'torrent': ['python-libtorrent'], # Generic support for cameras 'camera': ['numpy', 'Pillow'], # Support for RaspberryPi camera 'picamera': ['picamera', 'numpy', 'Pillow'], # Support for inotify file monitors 'inotify': ['inotify'], # Support for Google Assistant 'google-assistant': ['google-assistant-library', 'google-auth'], # Support for the Google APIs 'google': [ 'oauth2client', 'google-auth', 'google-api-python-client', 'httplib2', ], # Support for Last.FM scrobbler plugin 'lastfm': ['pylast'], # Support for real-time MIDI events 'midi': ['rtmidi'], # Support for RaspberryPi GPIO 'rpi-gpio': ['RPi.GPIO'], # Support for MCP3008 analog-to-digital converter plugin 'mcp3008': ['adafruit-mcp3008'], # Support for smart cards detection 'scard': ['pyscard'], # Support for serial port plugin 'serial': ['pyserial'], # Support for ICal calendars 'ical': ['icalendar'], # Support for joystick backend 'joystick': ['inputs'], # Support for Kodi plugin 'kodi': ['kodi-json'], # Support for Plex plugin 'plex': ['plexapi'], # Support for Chromecast plugin 'chromecast': ['pychromecast'], # Support for sound devices 'sound': ['sounddevice', 'numpy'], # Support for web media subtitles 'subtitles': [ 'webvtt-py', 'python-opensubtitles @ https://github.com/agonzalezro/python-opensubtitles/tarball/master', ], # Support for mpv player plugin 'mpv': ['python-mpv'], # Support for NFC tags 'nfc': ['nfcpy>=1.0', 'ndeflib'], # Support for enviropHAT 'envirophat': ['envirophat'], # Support for GPS 'gps': ['gps'], # Support for BME280 environment sensor 'bme280': ['pimoroni-bme280'], # Support for LTR559 light/proximity sensor 'ltr559': ['ltr559', 'smbus'], # Support for VL53L1X laser ranger/distance sensor 'vl53l1x': ['smbus2', 'vl53l1x'], # Support for Dropbox integration 'dropbox': ['dropbox'], # Support for Leap Motion backend 'leap': [ 'leap-sdk @ https://github.com/BlackLight/leap-sdk-python3/tarball/master' ], # Support for Flic buttons 'flic': [ 'flic @ https://github.com/50ButtonsEach/fliclib-linux-hci/tarball/master' ], # Support for Bluetooth devices 'bluetooth': [ 'bleak', 'bluetooth-numbers', 'TheengsDecoder', 'pydbus', 'pybluez @ https://github.com/pybluez/pybluez/tarball/master', 'PyOBEX @ https://github.com/BlackLight/PyOBEX/tarball/master', ], # Support for TP-Link devices 'tplink': ['pyHS100'], # Support for PMW3901 2-Dimensional Optical Flow Sensor 'pmw3901': ['pmw3901'], # Support for MLX90640 thermal camera 'mlx90640': ['Pillow'], # Support for machine learning models and cameras over OpenCV 'cv': ['opencv-python', 'numpy', 'Pillow'], # Support for Node-RED integration 'nodered': ['pynodered'], # Support for Todoist integration 'todoist': ['todoist-python'], # Support for Trello integration 'trello': ['py-trello'], # Support for Google Pub/Sub 'google-pubsub': ['google-cloud-pubsub', 'google-auth', 'httplib2'], # Support for Google Translate 'google-translate': ['google-cloud-translate', 'google-auth', 'httplib2'], # Support for keyboard/mouse plugin 'inputs': ['pyuserinput'], # Support for Buienradar weather forecast 'buienradar': ['buienradar'], # Support for Telegram integration 'telegram': ['python-telegram-bot'], # Support for Arduino integration 'arduino': ['pyserial', 'pyfirmata2'], # Support for CUPS printers management 'cups': ['pycups'], # Support for Graphite integration 'graphite': ['graphyte'], # Support for CPU and memory monitoring and info 'sys': ['py-cpuinfo'], # Support for nmap integration 'nmap': ['python-nmap'], # Support for zigbee2mqtt 'zigbee': ['paho-mqtt'], # Support for Z-Wave 'zwave': ['paho-mqtt'], # Support for Mozilla DeepSpeech speech-to-text engine 'deepspeech': ['deepspeech', 'numpy', 'sounddevice'], # Support for PicoVoice hotword detection engine 'picovoice-hotword': ['pvporcupine'], # Support for PicoVoice speech-to-text engine 'picovoice-speech': ['pvcheetah @ git+https://github.com/BlackLight/cheetah'], # Support for OTP (One-Time Password) generation 'otp': ['pyotp'], # Support for Linode integration 'linode': ['linode_api4'], # Support for QR codes 'qrcode': ['numpy', 'qrcode[pil]', 'Pillow', 'pyzbar'], # Support for Tensorflow 'tensorflow': ['numpy', 'tensorflow>=2.0', 'keras', 'pandas'], # Support for Samsung TizenOS-based smart TVs 'samsungtv': ['samsungtvws'], # Support for SSH integration 'ssh': ['paramiko'], # Support for clipboard integration 'clipboard': ['pyclip'], # Support for luma.oled display drivers 'luma-oled': ['luma.oled @ git+https://github.com/rm-hull/luma.oled'], # Support for DBus integration 'dbus': ['pydbus', 'defusedxml'], # Support for Twilio integration 'twilio': ['twilio'], # Support for DHT11/DHT22/AM2302 temperature/humidity sensors 'dht': [ 'Adafruit_Python_DHT @ git+https://github.com/adafruit/Adafruit_Python_DHT' ], # Support for LCD display integration 'lcd': ['RPi.GPIO', 'RPLCD'], # Support for email integration 'mail': ['imapclient', 'dnspython'], # Support for NextCloud integration 'nextcloud': ['nextcloud-api-wrapper'], # Support for VLC integration 'vlc': ['python-vlc'], # Support for SmartThings integration 'smartthings': ['pysmartthings', 'aiohttp'], # Support for file.monitor backend 'filemonitor': ['watchdog'], # Support for Adafruit PCA9685 PWM controller 'pca9685': ['adafruit-python-shell', 'adafruit-circuitpython-pca9685'], # Support for ngrok integration 'ngrok': ['pyngrok'], # Support for IRC integration 'irc': ['irc'], # Support for the Matrix integration 'matrix': ['matrix-nio'], # Support for the XMPP integration 'xmpp': ['aioxmpp', 'pytz'], }, )