File: test_datastructures.yml

package info (click to toggle)
python-django-stubs 5.2.9-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,832 kB
  • sloc: python: 5,185; makefile: 15; sh: 8
file content (48 lines) | stat: -rw-r--r-- 2,955 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
-   case: multivaluedict
    main: |
      from django.utils.datastructures import MultiValueDict
      from typing_extensions import reveal_type

      # check constructors
      var1 = MultiValueDict()  # E: Need type annotation for "var1"  [var-annotated]
      d2: dict[str, list[str | int]] = {'foo': ['Foo'], 'bar': [2, 3]}
      var2 = MultiValueDict(d2)
      d3: tuple[tuple[str, list[str | int]], ...] = (('foo', ['Foo']), ('bar', [2, 3]))
      var3 = MultiValueDict(d3)
      reveal_type(var1)  # N: Revealed type is "django.utils.datastructures.MultiValueDict[Any, Any]"
      reveal_type(var2)  # N: Revealed type is "django.utils.datastructures.MultiValueDict[builtins.str, builtins.str | builtins.int]"
      reveal_type(var3)  # N: Revealed type is "django.utils.datastructures.MultiValueDict[builtins.str, builtins.str | builtins.int]"

      # __getitem__, get, getlist (with proofs)
      d = MultiValueDict({'foo': ['Foo']})
      d.setlist('bar', [])
      # actually 'Foo'
      reveal_type(d['foo'])  # N: Revealed type is "builtins.str | builtins.list[builtins.object]"
      # actually []
      reveal_type(d['bar'])  # N: Revealed type is "builtins.str | builtins.list[builtins.object]"
      # actually None
      reveal_type(d.get('bar'))  # N: Revealed type is "builtins.str | None"
      # actually 1
      reveal_type(d.get('bar', 1))  # N: Revealed type is "builtins.str | builtins.int"
      # actually []
      reveal_type(d.getlist('bar'))  # N: Revealed type is "builtins.list[builtins.str]"
      # actually []
      reveal_type(d.getlist('bar', [1]))  # N: Revealed type is "builtins.list[builtins.str] | builtins.list[builtins.int]"
      # actually True (note that default can be not a list)
      reveal_type(d.getlist('baz', True))  # N: Revealed type is "builtins.list[builtins.str] | builtins.bool"

      # setters
      reveal_type(d.setlistdefault('baz'))  # N: Revealed type is "builtins.list[builtins.str]"
      d.setlistdefault('baz', [1])  # E: List item 0 has incompatible type "int"; expected "str"  [list-item]
      reveal_type(d.setlistdefault('baz', []))  # N: Revealed type is "builtins.list[builtins.str]"
      d.appendlist('baz', 'Baz')
      d.appendlist('baz', 1)  # E: Argument 2 to "appendlist" of "MultiValueDict" has incompatible type "int"; expected "str"  [arg-type]

      # iterators
      # actually [('foo', 'Foo'), ('bar', [])]
      reveal_type(list(d.items()))  # N: Revealed type is "builtins.list[tuple[builtins.str, builtins.str | builtins.list[builtins.object]]]"
      reveal_type(list(d.keys()))  # N: Revealed type is "builtins.list[builtins.str]"
      # actually ['Foo', []]
      reveal_type(list(d.values()))  # N: Revealed type is "builtins.list[builtins.str | builtins.list[builtins.object]]"
      # actually {'foo': 'Foo', 'bar': []}
      reveal_type(d.dict())  # N: Revealed type is "builtins.dict[builtins.str, builtins.str | builtins.list[builtins.object]]"