1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00

🔧 Use click.echo/click.prompt instead of print/input

This commit is contained in:
Steffo 2021-01-14 16:52:54 +01:00
parent 0c16785d02
commit 2574651d6e
Signed by: steffo
GPG key ID: 6965406171929D01
4 changed files with 36 additions and 13 deletions

17
poetry.lock generated
View file

@ -56,14 +56,21 @@ category = "dev"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "click"
version = "7.1.2"
description = "Composable command line interface toolkit"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]] [[package]]
name = "colorama" name = "colorama"
version = "0.4.4" version = "0.4.4"
description = "Cross-platform colored terminal text." description = "Cross-platform colored terminal text."
category = "dev" category = "main"
optional = false optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
marker = "sys_platform == \"win32\""
[[package]] [[package]]
name = "docutils" name = "docutils"
@ -432,7 +439,7 @@ socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"]
[metadata] [metadata]
lock-version = "1.0" lock-version = "1.0"
python-versions = "^3.9" python-versions = "^3.9"
content-hash = "e5ce7e56ddb284da6206a9dab891023b5a8b057efd8b683e9b0c1dfb6d55131f" content-hash = "b205a562d986cf6f37d26656d253e542a637727073f7d16e83ceb10029762d7e"
[metadata.files] [metadata.files]
alabaster = [ alabaster = [
@ -459,6 +466,10 @@ chardet = [
{file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
{file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
] ]
click = [
{file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
{file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
]
colorama = [ colorama = [
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},

View file

@ -9,6 +9,8 @@ license = "AGPL-3.0-or-later"
python = "^3.9" python = "^3.9"
royalnet = "^6.0.0a37" royalnet = "^6.0.0a37"
psutil = "^5.8.0" psutil = "^5.8.0"
click = "^7.1.2"
colorama = "^0.4.4"
[tool.poetry.dev-dependencies] [tool.poetry.dev-dependencies]
pytest = "^6.1.1" pytest = "^6.1.1"

View file

@ -11,6 +11,7 @@ import royalnet.royaltyping as t
import logging import logging
import asyncio import asyncio
import royalnet.engineer as engi import royalnet.engineer as engi
import click
# Internal imports # Internal imports
from . import magazine from . import magazine
@ -22,7 +23,7 @@ log = logging.getLogger(__name__)
# Code # Code
class ConsolePDA: class ConsolePDA:
""" """
.. todo:: Document the :class:`.ConsolePDA` class. A PDA which handles :mod:`royalnet` input and output using a terminal as source.
""" """
def __init__(self): def __init__(self):
@ -30,10 +31,13 @@ class ConsolePDA:
log.debug(f"Creating new magazine...") log.debug(f"Creating new magazine...")
self.mag = magazine.ConsoleMagazine() self.mag = magazine.ConsoleMagazine()
"""
The
"""
self.dispenser: t.Optional[engi.Dispenser] = None self.dispenser: t.Optional[engi.Dispenser] = None
""" """
The dispenser for this PDA. The :class:`royalnet.engineer.dispenser.Dispenser` of this PDA.
""" """
self.conversations: t.List[engi.Conversation] = [] self.conversations: t.List[engi.Conversation] = []
@ -42,9 +46,13 @@ class ConsolePDA:
:class:`~royalnet.engineer.dispenser.Dispenser`. :class:`~royalnet.engineer.dispenser.Dispenser`.
""" """
async def run(self): async def run(self) -> t.NoReturn:
"""
Run the main loop of the :class:`.ConsolePDA`.
"""
while True: while True:
message = input() message = click.prompt("", type=str, prompt_suffix=">>> ", show_default=False)
log.debug(f"Received a new message: {message!r}") log.debug(f"Received a new message: {message!r}")
log.debug(f"Creating ConsoleMessage from: {message!r}") log.debug(f"Creating ConsoleMessage from: {message!r}")
@ -73,11 +81,12 @@ class ConsolePDA:
def register_partial(self, part: engi.PartialCommand, names: t.List[str]) -> engi.Command: def register_partial(self, part: engi.PartialCommand, names: t.List[str]) -> engi.Command:
""" """
Register a new :class:`PartialCommand` in the PDA, converting it to a :class:`Command` in the process. Register a new :class:`~royalnet.engineer.command.PartialCommand` in the PDA, converting it to a
:class:`royalnet.engineer.Command` in the process.
:param part: The :class:`PartialCommand` to register. :param part: The :class:`~royalnet.engineer.command.PartialCommand` to register.
:param names: The :attr:`~royalnet.engineer.Command.names` to register the command as. :param names: The :attr:`~royalnet.engineer.command.Command.names` to register the command with.
:return: The resulting :class:`Command`. :return: The resulting :class:`~royalnet.engineer.command.Command`.
""" """
log.debug(f"Completing partial: {part!r}") log.debug(f"Completing partial: {part!r}")
if part.syntax: if part.syntax:
@ -110,7 +119,7 @@ class ConsolePDA:
log.debug(f"Putting bullet {bullet!r} in dispenser {self.dispenser!r}...") log.debug(f"Putting bullet {bullet!r} in dispenser {self.dispenser!r}...")
await self.dispenser.put(bullet) await self.dispenser.put(bullet)
log.debug("Awaiting another loop cycle") log.debug("Awaiting another event loop cycle...")
await asyncio.sleep(0) await asyncio.sleep(0)

View file

@ -10,6 +10,7 @@ import royalnet.royaltyping as t
# External imports # External imports
import logging import logging
import royalnet.engineer as engi import royalnet.engineer as engi
import click
# Internal imports # Internal imports
# from . import something # from . import something
@ -38,7 +39,7 @@ async def console_message(*,
raise engi.exc.NotSupportedError("Console does not allow sending files.") raise engi.exc.NotSupportedError("Console does not allow sending files.")
log.debug("Sending message...") log.debug("Sending message...")
print(text) click.echo(text)
log.debug("Creating bullet...") log.debug("Creating bullet...")
return mag.Message(_text=text) return mag.Message(_text=text)