Skip to main content

Run commands quickly from the pyproject.toml (or pyqwe.toml) file.

Project description

🏎️💨 pyqwe

The Quick Work Environment for Python.

PyPI version License Downloads black

Run commands quickly from the pyproject.toml (or pyqwe.toml) file.

pip install pyqwe

For .env file support using python-dotenv:

pip install pyqwe[dotenv]
# If zsh install extra using:
pip install 'pyqwe[dotenv]'


-- New in 1.9.0 ↓

Sync / Async Grouped commands


Usage

Add commands to the pyproject.toml or pyqwe.toml file.

[tool.pyqwe]
flask = "flask_app:run"
say_hello = "*:echo Hello World"

If you're using a pyqwe.toml file you can drop the [tool.pyqwe]

flask = "flask_app:run"
say_hello = "*:echo Hello World"

🚨 NOTE 🚨

If you have both a pyproject.toml and a pyqwe.toml file, the pyqwe.toml file will be used and the pyproject.toml file will be ignored.

You will be able to see what commands you have set in the pyproject.toml file by running:

pyqwe list
# or
pyqwe ls

You can run the commands by using the command name:

pyqwe flask

Running pyqwe without any option or command will show all available commands in a menu you can choose from.

pyqwe
🚥|🏎️
0 : Exit
1 : flask
2 : say_hello
Select a command to run [0]:

Choosing 1 will run the flask command.

Python commands

For Python, the commands are structured like (package &/ module):function

Package example

project/
    flask_app/
        __init__.py
[tool.pyqwe]
flask = "flask_app:run"

This command will run the function run() from the __init__.py file in the flask_app package.

Module example

project/
    app.py
[tool.pyqwe]
flask = "app:run"

This command will run the function run() from the app.py file.

Now run the pyqwe command:

pyqwe flask

This will start the Flask app.

*:... commands (terminal)

Any command that starts with * will be run using subprocess.

For example:

[tool.pyqwe]
say_hello = "*:echo Hello World"

Now running the pyqwe command:

pyqwe say_hello

Will print Hello World.

Run as shell

To run the command as a subprocess shell command, add the shell key to the command.

[tool.pyqwe]
say_hello = "*shell:echo Hello World"

Change the working directory

You can change the working directory of a subprocess by adding the folder within parentheses to the command, (node_app) for example.

The folder must be relative to the pyproject.toml file.

Absolute paths are not supported.

Moving up directories is not supported, ../node_app for example.

[tool.pyqwe]
npm_install = "*(node_app):npm install"

The shell key is still available when changing the directory.

[tool.pyqwe]
npm_install = "*shell(node_app):npm i"

Using environment variables

To use environment variables in the command, use the {{ }} syntax.

[tool.pyqwe]
talk = "*shell:echo {{MESSAGE}}"

Now running the pyqwe command:

pyqwe talk

Will print the value of the MESSAGE environment variable.

⚠️ Note: The environment variables must be set before running the command.

pyqwe will not look for the .env file by default. To enable this, install the pyqwe-extra-dotenv package.

pip install pyqwe-extra-dotenv

or

pip install pyqwe[dotenv]

To stop the behavior of looking for the .env when using pyqwe, uninstall the pyqwe-extra-dotenv package.

pip uninstall pyqwe-extra-dotenv

Grouped commands

You can group commands together in a list to have one pyqwe command run multiple commands.

Grouped commands can also be run in sync / async mode. Async being the default.

This will run the commands in the group in sequence, one after the other:

[tool.pyqwe]
group = [
    "@sync",
    "*:echo 'Hello, World! 1'",
    "*:echo 'Hello, World! 2'",
    "*:echo 'Hello, World! 3'"
]

This will run the commands in the group in parallel:

[tool.pyqwe]
group = [
    "@async",
    "*:echo 'Hello, World! 1'",
    "*:echo 'Hello, World! 2'",
    "*:echo 'Hello, World! 3'"
]

Of course, you can leave out the @sync or @async to use the default async mode.

For example, this will also run the commands in the group in parallel:

[tool.pyqwe]
group = [
    "*:echo 'Hello, World! 1'",
    "*:echo 'Hello, World! 2'",
    "*:echo 'Hello, World! 3'"
]

Other commands

pyqwe -h or --help will display help information.

pyqwe --version or -v will display the version of pyqwe.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyqwe-1.9.0.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

pyqwe-1.9.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file pyqwe-1.9.0.tar.gz.

File metadata

  • Download URL: pyqwe-1.9.0.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for pyqwe-1.9.0.tar.gz
Algorithm Hash digest
SHA256 fb2e9f8c9de81ca914d1728cd19700f88339ae758a3d1847c388d14ed01aefea
MD5 9cc784466deae0b3184796c47c262104
BLAKE2b-256 8c9cee0acc4a3e668cd33205a42932be757eb76bd891205055984125d22d7275

See more details on using hashes here.

File details

Details for the file pyqwe-1.9.0-py3-none-any.whl.

File metadata

  • Download URL: pyqwe-1.9.0-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.20

File hashes

Hashes for pyqwe-1.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 162232bc875fd796894a915bf66dda422e99213b90b2969560c2c1d0f953244d
MD5 379d86d3ba838be946f6b64de14fa57d
BLAKE2b-256 ab1e22ce50e17d97ba1b897faeed48724c3682e7f9b1f6743ef0b409cb68910f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page