sintonia/shared
libretime-bot 4795170feb
chore(main): release 4.0.0 (#2834)
🤖 I have created a release *beep* *boop*
---


## [4.0.0](https://github.com/libretime/libretime/compare/3.2.0...4.0.0)
(2024-01-07)


### ⚠ BREAKING CHANGES

* The media file serving is now handled by Nginx instead of the API
service. The `storage.path` field is now used in the Nginx
configuration, so make sure to update the Nginx configuration file if
you change it.
* **installer:** The default listen port for the installer is now
`8080`. We recommend that you put a reverse proxy in front of LibreTime.
* **installer:** The `--update-nginx` flag was removed from the
installer. The nginx configuration deployed by the installer will now
always be overwritten. Make sure to move your customizations to a
reverse proxy configuration.
* The default system output (`stream.outputs.system[].kind`) changed
from `alsa` to `pulseaudio`. Make sure to update your configuration file
if you rely on the default system output.
* The `general.secret_key` configuration field is now required. Make
sure to update your configuration file and add a secret key.

### Features

* default system output is now `pulseaudio`
([#2842](https://github.com/libretime/libretime/issues/2842))
([083ee3f](083ee3f1dd)),
closes [#2542](https://github.com/libretime/libretime/issues/2542)
* disable uvicorn worker lifespan
([#2845](https://github.com/libretime/libretime/issues/2845))
([8743c84](8743c84d0f))
* **installer:** add the `--storage-path` flag
([#2865](https://github.com/libretime/libretime/issues/2865))
([5b23852](5b23852f8d))
* **installer:** change default listen port to 8080
([#2852](https://github.com/libretime/libretime/issues/2852))
([f72b7f9](f72b7f9c97))
* **installer:** remove the `--update-nginx` flag
([#2851](https://github.com/libretime/libretime/issues/2851))
([35d7eac](35d7eace13))
* **playout:** configure device for alsa and pulseaudio system outputs
([#2654](https://github.com/libretime/libretime/issues/2654))
([06af18b](06af18b84e))
* rewrite cloud-init config
([#2853](https://github.com/libretime/libretime/issues/2853))
([8406d52](8406d520d7))
* run python in optimized mode
([#2874](https://github.com/libretime/libretime/issues/2874))
([3f7fc99](3f7fc99b6b))
* the `general.secret_key` configuration field is now required
([#2841](https://github.com/libretime/libretime/issues/2841))
([0d2d1a2](0d2d1a2673)),
closes [#2426](https://github.com/libretime/libretime/issues/2426)
* use nginx to serve media files
([#2860](https://github.com/libretime/libretime/issues/2860))
([4603c17](4603c1759f))


### Bug Fixes

* add parent function name in setValue exception
([#2777](https://github.com/libretime/libretime/issues/2777))
([c764a5a](c764a5a648))
* **api:** ensure non ascii paths are handled by X-Accel-Redirect
([#2861](https://github.com/libretime/libretime/issues/2861))
([0ce63f3](0ce63f3bf0))
* **api:** enum schema description
([#2803](https://github.com/libretime/libretime/issues/2803))
([976b70e](976b70ed32))
* **api:** let nginx handle the media file content type
([#2862](https://github.com/libretime/libretime/issues/2862))
([72268ad](72268ad9bb))
* **api:** move gunicorn worker config to python file
([#2854](https://github.com/libretime/libretime/issues/2854))
([43221d9](43221d9d7f))
* **api:** paths with question marks chars are handled by
X-Accel-Redirect
([#2875](https://github.com/libretime/libretime/issues/2875))
([b2c1ceb](b2c1ceb89f))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.42.1
(main) ([#2765](https://github.com/libretime/libretime/issues/2765))
([8ae4dce](8ae4dce9e7))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.43.2
(main) ([#2848](https://github.com/libretime/libretime/issues/2848))
([62e5f4d](62e5f4dfbb))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.45.1
(main) ([#2855](https://github.com/libretime/libretime/issues/2855))
([6f84328](6f84328380))
* **deps:** update dependency friendsofphp/php-cs-fixer to <3.46.1
(main) ([#2868](https://github.com/libretime/libretime/issues/2868))
([4827dbc](4827dbce71))
* **legacy:** allow uploading opus files
([#2804](https://github.com/libretime/libretime/issues/2804))
([f252a16](f252a16637))
* **legacy:** declare previously undeclared variable
([#2793](https://github.com/libretime/libretime/issues/2793))
([e2cfbf4](e2cfbf4c03))
* **legacy:** ensure last played criteria works with never played files
([#2840](https://github.com/libretime/libretime/issues/2840))
([24ee383](24ee3830c2))
* **playout:** increase file download chunk size to 8192 bytes
([#2863](https://github.com/libretime/libretime/issues/2863))
([7ed1be1](7ed1be1816))
* **playout:** remove empty file when the download request failed
([#2864](https://github.com/libretime/libretime/issues/2864))
([2facbfa](2facbfaff2))
* **worker:** unbound variable when episode url returns HTTP 404
([#2844](https://github.com/libretime/libretime/issues/2844))
([3f39689](3f396895e5))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: jo <ljonas@riseup.net>
2024-01-07 16:56:33 +01:00
..
libretime_shared feat(playout): configure device for alsa and pulseaudio system outputs (#2654) 2023-12-29 15:22:43 +01:00
tests feat!: the `general.secret_key` configuration field is now required (#2841) 2023-12-27 18:15:47 +01:00
Makefile chore: split test and coverage tasks 2023-01-16 08:42:23 +02:00
README.md feat: replace loguru with logging 2023-02-26 19:09:51 +02:00
packages.ini chore: list distribution releases by release date 2022-10-10 20:11:33 +02:00
pyproject.toml test: re-enable pylint logging-fstring-interpolation 2023-02-26 19:09:51 +02:00
requirements.txt fix(deps): update dependency pydantic to v2 (main) (#2604) 2023-12-27 13:35:19 +01:00
setup.py chore(main): release 4.0.0 (#2834) 2024-01-07 16:56:33 +01:00

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 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 RabbitMQConfig, BaseConfig

class AnalyzerConfig(BaseModel):
    bpm_enabled: bool = False
    bpm_track_max_length: int

class Config(BaseConfig):
    rabbitmq: RabbitMQConfig
    analyzer: AnalyzerConfig

config = Config("/etc/libretime/config.yml")

Don't instantiate a sub model if it has a required field, otherwise the Config class import will raise a ValidationError.

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()