Skip to content

quirky ocrd_utils.config implementation, esp. for variables without default #1336

Description

@bertsky

(Posting this in German to re-use a chat...)

OcrdEnvConfig ist sehr seltsam definiert:

Nehmen wir eine Variable, die keinen Default hat, z.B. OCRD_METS_CACHING:

Der Versuch einer Referenzierung (config.OCRD_METS_CACHING) ergibt eine Exception: KeyError. Na ok, ich soll also immer erst mal config.is_set benutzen?

Dann setzen wir doch mal config.OCRD_METS_CACHING = True. Jetzt hat sie einen Wert (vom Typ bool). Das hat das builtin setattr nämlich gesetzt. Die Abfrage geschieht aber nicht per überschriebenem __getattr__ – sondern builtin getattr greift zuvor den Wert ab. Schön – ist mir eigentlich egal.

Aber: config.is_set('OCRD_METS_CACHING') liefert immer noch False! Denn in os.environ hat sich ja nichts getan.

Ich kann mich also auch nicht auf config.is_set verlassen. Wenn sie jemand gesetzt hat, kann ich sie direkt abrufen, wenn nicht bekomme ich eine Exception.

(Bei Variablen mit Defaults ist es übrigens etwas logischer, aber auch dort funktioniert is_set nicht, und os.environ wird von programmatischen Zuweisungen ebenfalls nicht berührt.)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions