[#240] Migrated clipboard plugin from pyperclip to pyclip.

Closes: #240
This commit is contained in:
Fabio Manganiello 2023-03-26 23:45:53 +02:00
parent c645ce6bb8
commit 7a368ebbb8
Signed by: blacklight
GPG key ID: D90FBA7F76362774
5 changed files with 21 additions and 11 deletions

View file

@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
Given the high speed of development in the first phase, changes are being
reported only starting from v0.20.2.
## [Unreleased]
### Fixed
- Migrated the `clipboard` integration from `pyperclip` to `pyclip` (see
[#240](https://git.platypush.tech/platypush/platypush/issues/240)).
`pyperclip` is unmaintained and largely broken, and `pyclip` seems to be a
viable drop-in alternative.
## [0.24.5] - 2023-02-22
### Added

View file

@ -216,7 +216,7 @@ autodoc_mock_imports = [
'bluetooth',
'gevent.wsgi',
'Adafruit_IO',
'pyperclip',
'pyclip',
'pydbus',
'inputs',
'inotify',

View file

@ -12,7 +12,8 @@ class ClipboardPlugin(RunnablePlugin):
monitor and get the current clipboard content.
Requires:
- **pyperclip** (``pip install pyperclip``)
- **pyclip** (``pip install pyclip``)
Triggers:
@ -32,27 +33,27 @@ class ClipboardPlugin(RunnablePlugin):
:param text: Text to copy
:type text: str
"""
import pyperclip
import pyclip
pyperclip.copy(text)
pyclip.copy(text)
@action
def paste(self):
"""
Get the current content of the clipboard
"""
import pyperclip
import pyclip
return pyperclip.paste()
return pyclip.paste(text=True)
def main(self):
import pyperclip
import pyclip
last_error_time = 0
while not self.should_stop():
try:
text = pyperclip.paste()
text = pyclip.paste(text=True)
if text and text != self._last_text:
get_bus().post(ClipboardEvent(text=text))
self._last_text = text

View file

@ -3,6 +3,6 @@ manifest:
platypush.message.event.clipboard.ClipboardEvent: on clipboard update.
install:
pip:
- pyperclip
- pyclip
package: platypush.plugins.clipboard
type: plugin

View file

@ -17,7 +17,7 @@ def readfile(fname):
def pkg_files(dir):
paths = []
# noinspection PyShadowingNames
for (path, _, files) in os.walk(dir):
for path, _, files in os.walk(dir):
for file in files:
paths.append(os.path.join('..', path, file))
return paths
@ -238,7 +238,7 @@ setup(
# Support for SSH integration
'ssh': ['paramiko'],
# Support for clipboard integration
'clipboard': ['pyperclip'],
'clipboard': ['pyclip'],
# Support for luma.oled display drivers
'luma-oled': ['luma.oled @ git+https://github.com/rm-hull/luma.oled'],
# Support for DBus integration