Personal Assistant on the command line
Project description
Yoda PA
Personal Assistant on the command line.
Installation
pip install yodapa
yoda --help
Configure Yoda
yoda configure
Plugins
Yoda is designed to be extensible. You can write your own plugins or use the AI to generate one for you.
List plugins
The help command will list all the available plugins.
$ yoda --help
You can find the details for each plugin with the --help
flag. Some examples:
Write your own plugin for Yoda
Simply create a class with the @yoda_plugin(name="plugin-name")
decorator and add methods to it. The non-private
methods will be automatically added as sub-commands to Yoda, with the command being the name you provide to the
decorator.
import typer
app = typer.Typer(help="""
Hi plugin. Say hello.
Example:
$ yoda hi hello --name MP
$ yoda hi hello
""")
@app.command()
def hello(name: str = None):
"""Say hello."""
name = name or "Padawan"
typer.echo(f"Hello {name}!")
Use AI to generate your own plugin
$ yoda ai generate-command weather "show weather for the provided location"
🤖 Generated code:
import requests
from typing import Optional
app = typer.Typer(help="""
Show weather for a given location.
Example:
$ yoda weather London
$ yoda weather -l London
""")
@app.command()
def weather(location: str, units: Optional[str] = None):
"""Show the current weather for a given location."""
# Set up your API key or database connection here
api_key = "YOUR_API_KEY"
db_conn = None # Initialize your DB connection here
# Use the requests library to make an HTTP request to the API
url = f"https://api.openweathermap.org/data/2.5/weather?q={location}&appid={api_key}"
response = requests.get(url)
# If the response is successful, parse the JSON data and return it in a format that typer can display
if response.status_code == 200:
data = response.json()
temperature = data["main"]["temp"]
humidity = data["main"]["humidity"]
wind = data["wind"]["speed"]
pressure = data["main"]["pressure"]
typer.echo(f"Weather for {location}:")
typer.echo(f"\tTemperature: {temperature}°C")
typer.echo(f"\tHumidity: {humidity}%")
typer.echo(f"\tWind speed: {wind} m/s")
typer.echo(f"\tPressure: {pressure} hPa")
# If the response is not successful, print an error message
else:
typer.echo(f"Error: {response.status_code}")
.. or chat with Yoda:
Development setup
# 1. Install poetry from their website: https://python-poetry.org/docs/#installation
# 2. Install dependencies and this package
poetry install
# 3. Activate the virtual environment
poetry shell
# Now you should be able to communicate with yoda
yoda --help
Testing
# Run tests when in the virtual environment
pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file yodapa-0.5.0.tar.gz
.
File metadata
- Download URL: yodapa-0.5.0.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.9.20 Linux/6.8.0-1015-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee0976cb6911188304a50a0b0509ffcce8a75e31e4bc643957dbf5c57520a319 |
|
MD5 | 7ae486ecef12a6224f37736106c09220 |
|
BLAKE2b-256 | 0aed3723f57680610f6a38b1a545f0e8d4129118e58ac94aff81196ab68c6ab8 |
File details
Details for the file yodapa-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: yodapa-0.5.0-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.9.20 Linux/6.8.0-1015-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 425b51e60475cd9e79f98962c512e6318109fea159ad9a5bd116b2c77d917829 |
|
MD5 | cb2708b21949c07809642beb7e18f331 |
|
BLAKE2b-256 | 4a25e0964d94a324068090f6c972d3c9e31cf48643da6eda2cbffa2143f829e2 |