Python-Library: Everett 3.0.0 bringt Namespaces und Components in Einklang

Das neue Major Release der Konfigurationsbibliothek für Python-Apps ist bereit für Python 3.10 und setzt künftig mindestens Version 3.7 der Sprache voraus.

In Pocket speichern vorlesen Druckansicht

(Bild: ESB Professional/Shutterstock.com)

Lesezeit: 2 Min.
Von
  • Matthias Parbel

Everett, eine Konfigurationsbibliothek für Python-Applikationen ist in Version 3.0.0 erschienen. Die Library ist darauf ausgelegt, Entwicklerinnen und Entwicklern eine flexible Konfiguration ihrer Anwendungen aus verschiedenen Umgebungen heraus zu ermöglichen. Die nun vorgelegte neue Hauptversion behebt dazu ein bisher bestehendes Problem im Zusammenspiel von Namespaces und den Everett Components.

In den bisherigen Releases der 2019 in Version 1.0 veröffentlichten Python-Library blieb der Weg versperrt, einen Namespace auf eine Konfiguration anzuwenden, wenn diese zuvor schon an eine Everett Component gebunden wurde. Mit Release 3.0 erhalten Entwicklerinnen und Entwickler nun auch die Option einer nachträglichen Namespace-Zuweisung, wie das nachfolgende Listing beispielhaft zeigt:

class MyComponent:
    class Config:
        http_host = Option(default="localhost")
        http_port = Option(default="8000", parser=int)

        db_host = Option(default="localhost")
        db_port = Option(default="5432", parser=int)

config = ConfigManager.basic_config()

# Bind the configuration to a specific component so you can only use
# options defined in that component
component_config = config.with_options(MyComponent)

# Apply a namespace which acts as a prefix for options defined in
# the component
http_config = component_config.with_namespace("http")

db_config = component_config.with_namespace("db")

Eine weitere wichtige Neuerung soll das Dokumentieren von Konfigurationen einfacher und komfortabler gestalten. Dazu haben die Everett-Entwickler die Extension Sphinx überarbeitet. Sie erlaubt nun nicht nur das Dokumentieren von Optionen und Komponenten, sondern lässt sich sogar zum automatisierten Erfassen der in Python-Klassen und -Modulen definierten Optionen einsetzen. Darüber hinaus wurden nun alle Optionen und Komponenten in den Index aufgenommen und haben eindeutige Links erhalten, sodass in der Dokumentation leichter zu finden sind.

Mit Freigabe der mittlerweile dritten Hauptversion ist Everett nun angepasst an Python 3.10, verabschiedet sich hingegen vom Support für Python 3.6 oder älteren Versionen der Programmiersprache.

Einen vollständigen Überblick aller Änderungen in Version 3.0.0 liefert ein Blogbeitrag. Das Projekt steht unter MPL-2.0-Lizenz auf GitHub bereit.

(map)