Skip to content

Several issues with CacheControl types #2881

Closed
@RazerM

Description

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

Activity

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

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