Skip to content

Several issues with CacheControl types #2881

@RazerM

Description

@RazerM

This issue is in three parts:

no-transform directive always returns None

This directive has no arguments (either in current RFC 9111 or older RFC 2616)

from werkzeug.http import parse_cache_control_header

cc = parse_cache_control_header("no-transform")
print(f"{cc.no_transform=}")

Output:

cc.no_transform=None

Expected: boolean based on presence

min-fresh directive returns "*" if missing required argument

from werkzeug.http import parse_cache_control_header

cc = parse_cache_control_header("min-fresh")
print(f"{cc.min_fresh=}")

Output:

cc.min_fresh='*'

Expected: None since the argument is required and "*" doesn't have a semantic meaning for this directive.

type stubs are incorrect

  • no_cache returns str not bool.
  • bool properties never return None
  • max_stale returns "*" in addition to int.
  • RequestCacheControl immutability is not reflected.

Environment:

  • Python version: N/A
  • Werkzeug version: 3.0.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions