<!--
SPDX-FileCopyrightText: 2021 - 2023 Mewbot Developers <mewbot@quicksilver.london>
SPDX-License-Identifier: CC-BY-4.0
-->
# MewBot
[](CODE_OF_CONDUCT.md)
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[](CONTRIBUTORS.md)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
[](https://github.com/mewler/mewbot/actions/workflows/review.yaml)
[](https://sonarcloud.io/summary/new_code?id=mewler_mewbot)
MewBot is an automation framework intended to simplify building cross-platform text/chat-bots.
The design is intended to be modular with configuration separated from code,
allowing users and developers to build out custom logic and behaviours with
minimal coding experience.
### Status
| WARNING: This project is still in the very early stages. |
|-----------------------------------------------------------|
Some basic bots can be built and run, but we currently consider all parts of the framework to be unstable.
### Packages and Modules
The codebase represents both the base API used to build components for the bot,
as well as an implementation of the runtime to actually execute a bot.
As such, it is built and published as a group of packages.
| Package | Modules | Description |
|---------------|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------|
| `mewbot` | `mewbot` | Tools to load a bot, and run that bot. |
| `mewbot-core` | `mewbot.core` | Base interfaces for all modules |
| `mewbot-api` | `mewbot.api.v1` | Development libraries + component registry system. This is the package that all 3rd party libraries should depend on for their interfaces. |
| `mewbot-io` | `mewbot.io.*` | The bindings to connect MewBot to a given service. |
| `mewbot-test` | `mewbot.tests` | Utilities for writing tests for MewBot modules. |

These packages are generated by some trickery in [`setup.py`](./setup.py).
Each package also defines its own requirements list. Installing `requirements-dev.txt`
will include all of these automatically.
### Development
Contributions to the project are made via GitHub pull requests, which will
enforce the code style and linting requirements of this project.
#### Setting up project for local development
[//]: # (This section is under development)
The recommended way to set this project up is using python 3.10 (or higher) with
a standard `venv` setup.
The project uses a "src-dir" layout; for Python to be able to locate the modules,
you will need to set up the `PYTHONPATH` environment variable with at least the `src/` directory.
For convenience in POSIX-like systems, an importable script `./tools/path`
is provided that will return the appropriate path.
The following example will get you started in POSIX-like shells (sh, bash, zsh, etc.).
```shell
# Get the source code
git clone git@github.com:mewler/mewbot
cd mewbot
# Set up the virtual environment
python3 -m venv venv
printf '. ./tools/path\n' >>venv/bin/activate
# Activate the virtual environment
source venv/bin/activate
# Install all dependencies (including development dependencies)
pip install -r requirements-dev.txt
# Run a demo!
python3 -m examples examples/trivial_socket.yaml
```
#### Running the tests and linters
You can run the linters via the convenience script `./tools/lint` or with
`python -m mewbot.tools.lint`
This runs the auto-formatter `black`, two opinionated linting tools in `flake8`
and `pylint`, and the `mypy` type checker in strict mode.
You can run the test framework using the convenience script `./tools/test`
or with `python -m mewbot.tools.test`.
Locally this will default to running all tests in parallel for fast testing.
You can add the flag `--cov` to enable coverage, which will output coverage information
both to the terminal and store details of code coverage as webpages in `coverage/`.
More information on the linters and tests can be found in the
[contributor documentation](./CONTRIBUTING.md).
## CREDENTIALS WARNING
Please note.
If you use you credentials for a service with mewbot, you do so at your own risk.
Some services ban accounts if they are used with bots which they determine to be harmful.
This can happen at any time and without warning.
Thus we CANNOT be held responsible if you use your account credentials - whether to generate a bot token or directly -
with a mewbot bot which subsequently causes your account to be banned.
This is your responsbility. Not ours.
Raw data
{
"_id": null,
"home_page": "https://github.com/mewler/mewbot",
"name": "mewbot",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "",
"keywords": "",
"author": "Mewbot Developers (https://github.com/mewbotorg)",
"author_email": "mewbot@quicksilver.london",
"download_url": "https://files.pythonhosted.org/packages/93/dc/9662d1f1054ac6f783262544800f8210fae29b129c4d0669451f28dedff4/mewbot-0.0.3.tar.gz",
"platform": null,
"description": "<!--\nSPDX-FileCopyrightText: 2021 - 2023 Mewbot Developers <mewbot@quicksilver.london>\n\nSPDX-License-Identifier: CC-BY-4.0\n-->\n\n# MewBot\n\n[](CODE_OF_CONDUCT.md)\n\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n[](CONTRIBUTORS.md)\n<!-- ALL-CONTRIBUTORS-BADGE:END -->\n\n[](https://github.com/mewler/mewbot/actions/workflows/review.yaml)\n\n[](https://sonarcloud.io/summary/new_code?id=mewler_mewbot)\n\nMewBot is an automation framework intended to simplify building cross-platform text/chat-bots.\nThe design is intended to be modular with configuration separated from code,\nallowing users and developers to build out custom logic and behaviours with\nminimal coding experience.\n\n### Status\n\n| WARNING: This project is still in the very early stages. |\n|-----------------------------------------------------------|\n\nSome basic bots can be built and run, but we currently consider all parts of the framework to be unstable.\n\n### Packages and Modules\n\nThe codebase represents both the base API used to build components for the bot,\nas well as an implementation of the runtime to actually execute a bot.\nAs such, it is built and published as a group of packages.\n\n| Package | Modules | Description |\n|---------------|-----------------|--------------------------------------------------------------------------------------------------------------------------------------------|\n| `mewbot` | `mewbot` | Tools to load a bot, and run that bot. |\n| `mewbot-core` | `mewbot.core` | Base interfaces for all modules |\n| `mewbot-api` | `mewbot.api.v1` | Development libraries + component registry system. This is the package that all 3rd party libraries should depend on for their interfaces. |\n| `mewbot-io` | `mewbot.io.*` | The bindings to connect MewBot to a given service. |\n| `mewbot-test` | `mewbot.tests` | Utilities for writing tests for MewBot modules. |\n\n\n\n\n\n\nThese packages are generated by some trickery in [`setup.py`](./setup.py).\n\n\nEach package also defines its own requirements list. Installing `requirements-dev.txt`\nwill include all of these automatically.\n\n\n### Development\n\n\nContributions to the project are made via GitHub pull requests, which will\nenforce the code style and linting requirements of this project.\n\n#### Setting up project for local development\n[//]: # (This section is under development)\n\n\nThe recommended way to set this project up is using python 3.10 (or higher) with\na standard `venv` setup.\nThe project uses a \"src-dir\" layout; for Python to be able to locate the modules, \nyou will need to set up the `PYTHONPATH` environment variable with at least the `src/` directory.\n\nFor convenience in POSIX-like systems, an importable script `./tools/path`\nis provided that will return the appropriate path.\n\nThe following example will get you started in POSIX-like shells (sh, bash, zsh, etc.).\n\n```shell\n# Get the source code\ngit clone git@github.com:mewler/mewbot\ncd mewbot\n\n# Set up the virtual environment\npython3 -m venv venv\nprintf '. ./tools/path\\n' >>venv/bin/activate\n\n# Activate the virtual environment\nsource venv/bin/activate\n\n# Install all dependencies (including development dependencies)\npip install -r requirements-dev.txt\n\n# Run a demo!\npython3 -m examples examples/trivial_socket.yaml\n```\n\n#### Running the tests and linters\n\nYou can run the linters via the convenience script `./tools/lint` or with\n`python -m mewbot.tools.lint`\nThis runs the auto-formatter `black`, two opinionated linting tools in `flake8`\nand `pylint`, and the `mypy` type checker in strict mode.\n\nYou can run the test framework using the convenience script `./tools/test`\nor with `python -m mewbot.tools.test`.\nLocally this will default to running all tests in parallel for fast testing.\nYou can add the flag `--cov` to enable coverage, which will output coverage information\nboth to the terminal and store details of code coverage as webpages in `coverage/`.\n\nMore information on the linters and tests can be found in the\n[contributor documentation](./CONTRIBUTING.md).\n\n## CREDENTIALS WARNING\n\nPlease note.\n\nIf you use you credentials for a service with mewbot, you do so at your own risk.\nSome services ban accounts if they are used with bots which they determine to be harmful.\nThis can happen at any time and without warning.\n\nThus we CANNOT be held responsible if you use your account credentials - whether to generate a bot token or directly - \nwith a mewbot bot which subsequently causes your account to be banned.\n\nThis is your responsbility. Not ours.\n\n\n",
"bugtrack_url": null,
"license": "",
"summary": "Lightweight, YAML-driven, text based, generic irc Bot framework",
"version": "0.0.3",
"project_urls": {
"Bug Tracker": "https://github.com/mewler/mewbot/issues",
"Homepage": "https://github.com/mewler/mewbot"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "fd13d7ed07d9494ad348178335779e354a6825da00cf60cc0892711ab11efd03",
"md5": "85f35a4a6fa44a3bf92217bfbb1efc11",
"sha256": "cd21f7a7643ac222f5005ce33fb664ed1de30f6a5fd49060c636558796aabf65"
},
"downloads": -1,
"filename": "mewbot-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "85f35a4a6fa44a3bf92217bfbb1efc11",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 11362,
"upload_time": "2023-10-15T00:48:07",
"upload_time_iso_8601": "2023-10-15T00:48:07.127664Z",
"url": "https://files.pythonhosted.org/packages/fd/13/d7ed07d9494ad348178335779e354a6825da00cf60cc0892711ab11efd03/mewbot-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "93dc9662d1f1054ac6f783262544800f8210fae29b129c4d0669451f28dedff4",
"md5": "ec7672c3e9dcce4a510e0ab46eeab12e",
"sha256": "f44504e650e1a2b8902c59d5e2a8b18b4d013aa3a436422990890cd9dd05f30f"
},
"downloads": -1,
"filename": "mewbot-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "ec7672c3e9dcce4a510e0ab46eeab12e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 13878,
"upload_time": "2023-10-15T00:48:15",
"upload_time_iso_8601": "2023-10-15T00:48:15.049224Z",
"url": "https://files.pythonhosted.org/packages/93/dc/9662d1f1054ac6f783262544800f8210fae29b129c4d0669451f28dedff4/mewbot-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-15 00:48:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mewler",
"github_project": "mewbot",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "PyYAML",
"specs": [
[
"~=",
"6.0"
]
]
}
],
"tox": true,
"lcname": "mewbot"
}