|
||
---|---|---|
.. | ||
libretime_shared | ||
tests | ||
.pylintrc | ||
Makefile | ||
README.md | ||
setup.py |
README.md
Shared
The libretime_shared
package contains reusable functions and classes for the Libretime project.
Usage
This library assumes that:
- You will use
Click
to build a CLI for your app. - You will use
Loguru
to log messages from your app. - You will use
Pydantic
to validate objects in your app.
Configuration
First define a schema for your configuration in order to validate it. A schema is a class that inherit from pydantic.BaseModel
. Some existing schemas can be reused such as libretime_shared.config.RabbitMQ
or libretime_shared.config.Database
.
Load your configuration using a subclass of libretime_shared.config.BaseConfig
.
from pydantic import BaseModel
from libretime_shared.config import RabbitMQ, BaseConfig
class Analyzer(BaseModel):
bpm_enabled: bool = False
bpm_track_max_length: int
class Config(BaseConfig):
rabbitmq: RabbitMQ
analyzer: Analyzer
config = Config(filepath="/etc/libretime/config.yml")
App
Create an app class that inherit from libretime_shared.app.AbstractApp
.
from libretime_shared.app import AbstractApp
class LiquidsoapApp(AbstractApp):
name = "liquidsoap"
def __init__(self, some_arg, **kwargs):
super().__init__(**kwargs)
self.some_arg = some_arg
def run(self):
...
app = LiquidsoapApp(**kwargs)
app.run()
CLI
Decorate your CLI commands with the shared decorators to add extra flags.
import click
from libretime_shared.cli import cli_logging_options, cli_config_options
from .app import App
@click.group()
def cli():
pass
@cli.command()
@cli_config_options()
@cli_logging_options()
def run(**kwargs):
app = App(**kwargs)
return app.run()