aio-libs
multidict
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
GitHub Actions run
CPU Simulation
Uses the
CPU Simulation instrument
to collect CPU performance metrics.
2 days ago
276b9b4
dependabot/pip/pytest-cov-7.0.0
pull_request
Compare
Base
Search a run
Head
Bump pytest-cov from 6.1.0 to 7.0.0
#1255
dependabot/pip/pytest-cov-7.0.0
2 days ago
CPU Simulation
Compare
Suggested base runs:
Pull Request Base
•
Default Branch
•
Parent Commit
Benchmarks
test_cimultidict_delitem_istr[c]
tests/test_multidict_benchmarks.py
71 µs
test_cimultidict_add_istr[c]
tests/test_multidict_benchmarks.py
3.6 ms
test_cimultidict_add_istr[py]
tests/test_multidict_benchmarks.py
99.4 ms
test_create_cimultidict_with_items_istr[py]
tests/test_multidict_benchmarks.py
710.9 µs
test_create_cimultidict_with_items_istr_with_kwargs[c]
tests/test_multidict_benchmarks.py
128.8 µs
test_create_cimultidictproxy[py]
tests/test_multidict_benchmarks.py
18.8 µs
test_cimultidict_delitem_istr[py]
tests/test_multidict_benchmarks.py
945.7 µs
test_create_empty_multidict[ci-c]
tests/test_multidict_benchmarks.py
17.4 µs
test_cimultidict_extend_istr[c]
tests/test_multidict_benchmarks.py
3 ms
test_create_empty_multidict[cs-c]
tests/test_multidict_benchmarks.py
17.1 µs
test_create_empty_multidict[ci-py]
tests/test_multidict_benchmarks.py
75.4 µs
test_cimultidict_extend_istr[py]
tests/test_multidict_benchmarks.py
166.5 ms
test_create_empty_cimultidictproxy
tests/test_multidict_benchmarks.py
18.7 µs
test_create_empty_multidict[cs-py]
tests/test_multidict_benchmarks.py
73.6 µs
test_cimultidict_extend_istr_with_kwargs[c]
tests/test_multidict_benchmarks.py
8.9 ms
test_cimultidict_extend_istr_with_kwargs[py]
tests/test_multidict_benchmarks.py
286.8 ms
test_create_empty_multidictproxy
tests/test_multidict_benchmarks.py
18.2 µs
test_create_from_existing_cimultidict[c]
tests/test_multidict_benchmarks.py
20.8 µs
test_cimultidict_get_istr_hit[py]
tests/test_multidict_benchmarks.py
472.6 µs
test_cimultidict_fetch_istr[py]
tests/test_multidict_benchmarks.py
471.6 µs
test_cimultidict_get_istr_hit[c]
tests/test_multidict_benchmarks.py
67 µs
test_cimultidict_fetch_istr[c]
tests/test_multidict_benchmarks.py
54.2 µs
test_cimultidict_get_istr_hit_with_default[c]
tests/test_multidict_benchmarks.py
68.4 µs
test_create_from_existing_cimultidict[py]
tests/test_multidict_benchmarks.py
54.1 µs
test_create_multidict_with_dict[ci-c]
tests/test_multidict_benchmarks.py
90.7 µs
test_multidict_getall_str_hit[cs-c]
tests/test_multidict_benchmarks.py
15 ms
test_create_multidict_with_dict[ci-py]
tests/test_multidict_benchmarks.py
793.3 µs
test_multidict_getall_str_hit[ci-py]
tests/test_multidict_benchmarks.py
383.8 ms
test_multidict_getall_str_hit[cs-py]
tests/test_multidict_benchmarks.py
382.9 ms
test_multidict_getall_str_miss[ci-py]
tests/test_multidict_benchmarks.py
3.4 ms
test_multidict_getall_str_miss[ci-c]
tests/test_multidict_benchmarks.py
681.6 µs
test_create_multidict_with_dict[cs-py]
tests/test_multidict_benchmarks.py
713.4 µs
test_multidict_getall_str_hit[ci-c]
tests/test_multidict_benchmarks.py
14.7 ms
test_cimultidict_get_istr_miss[c]
tests/test_multidict_benchmarks.py
52.8 µs
test_multidict_getall_str_miss[cs-c]
tests/test_multidict_benchmarks.py
296 µs
test_multidict_insert_str[cs-c]
tests/test_multidict_benchmarks.py
54.9 µs
test_create_multidict_with_items[cs-c]
tests/test_multidict_benchmarks.py
46.8 µs
test_cimultidict_get_istr_with_default_miss[c]
tests/test_multidict_benchmarks.py
54.4 µs
test_create_multidict_with_items[ci-py]
tests/test_multidict_benchmarks.py
755.9 µs
test_multidict_getall_str_miss[cs-py]
tests/test_multidict_benchmarks.py
3 ms
test_create_multidict_with_dict[cs-c]
tests/test_multidict_benchmarks.py
42.6 µs
test_multidict_pop_str[ci-c]
tests/test_multidict_benchmarks.py
136.3 µs
test_create_cimultidictproxy[c]
tests/test_multidict_benchmarks.py
18 µs
test_cimultidict_get_istr_miss[py]
tests/test_multidict_benchmarks.py
440.5 µs
test_create_multidict_with_items[ci-c]
tests/test_multidict_benchmarks.py
97.8 µs
test_multidict_insert_str[cs-py]
tests/test_multidict_benchmarks.py
1 ms
test_create_multidict_with_items_with_kwargs[ci-c]
tests/test_multidict_benchmarks.py
191.1 µs
test_multidict_pop_str[ci-py]
tests/test_multidict_benchmarks.py
912.3 µs
test_multidict_insert_str[ci-py]
tests/test_multidict_benchmarks.py
1.1 ms
test_cimultidict_getall_istr_hit[c]
tests/test_multidict_benchmarks.py
14.1 ms
test_cimultidict_get_istr_hit_with_default[py]
tests/test_multidict_benchmarks.py
471.5 µs
test_create_multidict_with_items_with_kwargs[ci-py]
tests/test_multidict_benchmarks.py
1.6 ms
test_cimultidict_getall_istr_hit[py]
tests/test_multidict_benchmarks.py
383.4 ms
test_multidict_pop_str[cs-c]
tests/test_multidict_benchmarks.py
93.2 µs
test_create_multidict_with_items[cs-py]
tests/test_multidict_benchmarks.py
674.3 µs
test_create_cimultidict_with_items_istr_with_kwargs[py]
tests/test_multidict_benchmarks.py
1.6 ms
test_multidict_pop_str[cs-py]
tests/test_multidict_benchmarks.py
848.4 µs
test_create_multidict_with_items_with_kwargs[cs-c]
tests/test_multidict_benchmarks.py
74 µs
test_multidict_popitem_str[cs-c]
tests/test_multidict_benchmarks.py
78.3 µs
test_cimultidict_pop_istr[py]
tests/test_multidict_benchmarks.py
870.5 µs
test_cimultidict_getall_istr_miss[c]
tests/test_multidict_benchmarks.py
354.8 µs
test_cimultidict_update_istr[c]
tests/test_multidict_benchmarks.py
52.4 µs
test_multidict_popitem_str[ci-c]
tests/test_multidict_benchmarks.py
132.9 µs
test_cimultidict_getall_istr_miss[py]
tests/test_multidict_benchmarks.py
3.1 ms
test_multidict_repr[ci-c]
tests/test_multidict_benchmarks.py
77.3 µs
test_cimultidict_update_istr_with_kwargs[c]
tests/test_multidict_benchmarks.py
151.2 µs
test_cimultidict_update_istr_with_kwargs[py]
tests/test_multidict_benchmarks.py
1.9 ms
test_cimultidict_pop_istr[c]
tests/test_multidict_benchmarks.py
108 µs
test_multidict_repr[ci-py]
tests/test_multidict_benchmarks.py
155.4 µs
test_cimultidict_insert_istr[c]
tests/test_multidict_benchmarks.py
53.3 µs
test_create_multidict_with_items_with_kwargs[cs-py]
tests/test_multidict_benchmarks.py
1.5 ms
test_cimultidict_update_istr[py]
tests/test_multidict_benchmarks.py
1 ms
test_cimultidict_insert_istr[py]
tests/test_multidict_benchmarks.py
1.1 ms
test_create_multidictproxy
tests/test_multidict_benchmarks.py
18.3 µs
test_multidict_repr[cs-c]
tests/test_multidict_benchmarks.py
78.4 µs
test_copy_from_existing_cimultidict[c]
tests/test_multidict_benchmarks.py
18.3 µs
test_multidict_insert_str[ci-c]
tests/test_multidict_benchmarks.py
89 µs
test_iterate_multidict_keys[ci-c]
tests/test_multidict_benchmarks.py
31.1 µs
test_multidict_update_str[ci-c]
tests/test_multidict_benchmarks.py
85.6 µs
test_iterate_multidict_items[cs-py]
tests/test_multidict_benchmarks.py
194.5 µs
test_iterate_multidict[cs-c]
tests/test_multidict_benchmarks.py
29.5 µs
test_iterate_multidict_keys[cs-c]
tests/test_multidict_benchmarks.py
31.3 µs
test_iterate_multidict_items[ci-py]
tests/test_multidict_benchmarks.py
265.5 µs
test_multidict_popitem_str[cs-py]
tests/test_multidict_benchmarks.py
586 µs
test_create_cimultidict_with_dict_istr[py]
tests/test_multidict_benchmarks.py
748.3 µs
test_iterate_multidict[cs-py]
tests/test_multidict_benchmarks.py
176.1 µs
test_iterate_multidict[ci-c]
tests/test_multidict_benchmarks.py
29.4 µs
test_iterate_multidict_keys[ci-py]
tests/test_multidict_benchmarks.py
246.4 µs
test_copy_from_existing_cimultidict[py]
tests/test_multidict_benchmarks.py
55.6 µs
test_multidict_repr[cs-py]
tests/test_multidict_benchmarks.py
160.6 µs
test_multidict_update_str[cs-py]
tests/test_multidict_benchmarks.py
1 ms
test_cimultidict_get_istr_with_default_miss[py]
tests/test_multidict_benchmarks.py
443.8 µs
test_multidict_update_str[cs-c]
tests/test_multidict_benchmarks.py
48.7 µs
test_multidict_update_str[ci-py]
tests/test_multidict_benchmarks.py
1.1 ms
test_multidict_update_str_with_kwargs[cs-c]
tests/test_multidict_benchmarks.py
90 µs
test_iterate_multidict[ci-py]
tests/test_multidict_benchmarks.py
246.7 µs
test_multidict_update_str_with_kwargs[cs-py]
tests/test_multidict_benchmarks.py
1.8 ms
test_iterate_multidict_items[cs-c]
tests/test_multidict_benchmarks.py
49.7 µs
test_items_view_and[ci-py]
tests/test_views_benchmarks.py
1.3 ms
test_iterate_multidict_keys[cs-py]
tests/test_multidict_benchmarks.py
170.3 µs
test_multidict_popitem_str[ci-py]
tests/test_multidict_benchmarks.py
682.4 µs
test_multidict_add_str[cs-c]
tests/test_multidict_benchmarks.py
3 ms
test_iterate_multidict_items[ci-c]
tests/test_multidict_benchmarks.py
49.4 µs
test_multidict_clear_str[cs-py]
tests/test_multidict_benchmarks.py
40.1 µs
test_multidict_delitem_str[ci-c]
tests/test_multidict_benchmarks.py
98 µs
test_iterate_multidict_values[ci-py]
tests/test_multidict_benchmarks.py
128 µs
test_iterate_multidict_values[cs-c]
tests/test_multidict_benchmarks.py
29.5 µs
test_create_cimultidict_with_items_istr[c]
tests/test_multidict_benchmarks.py
50.9 µs
test_multidict_update_str_with_kwargs[ci-c]
tests/test_multidict_benchmarks.py
162.2 µs
test_items_view_and[ci-c]
tests/test_views_benchmarks.py
118.4 µs
test_items_view_and[cs-c]
tests/test_views_benchmarks.py
100.9 µs
test_multidict_clear_str[ci-py]
tests/test_multidict_benchmarks.py
38.9 µs
test_multidict_add_str[ci-c]
tests/test_multidict_benchmarks.py
7.3 ms
test_multidict_add_str[ci-py]
tests/test_multidict_benchmarks.py
103.1 ms
test_iterate_multidict_values[cs-py]
tests/test_multidict_benchmarks.py
131.9 µs
test_create_cimultidict_with_dict_istr[c]
tests/test_multidict_benchmarks.py
47.4 µs
test_iterate_multidict_values[ci-c]
tests/test_multidict_benchmarks.py
29.2 µs
test_multidict_extend_str[cs-py]
tests/test_multidict_benchmarks.py
163.9 ms
test_items_view_and[cs-py]
tests/test_views_benchmarks.py
1.1 ms
test_multidict_add_str[cs-py]
tests/test_multidict_benchmarks.py
97.3 ms
test_multidict_clear_str[cs-c]
tests/test_multidict_benchmarks.py
14.6 µs
test_multidict_extend_str_with_kwargs[ci-c]
tests/test_multidict_benchmarks.py
17.3 ms
test_multidict_get_hit[cs-c]
tests/test_multidict_benchmarks.py
56 µs
test_multidict_extend_str_with_kwargs[cs-py]
tests/test_multidict_benchmarks.py
277.3 ms
test_multidict_fetch[ci-py]
tests/test_multidict_benchmarks.py
493.4 µs
test_multidict_extend_str[ci-py]
tests/test_multidict_benchmarks.py
177.6 ms
test_multidict_extend_str_with_kwargs[ci-py]
tests/test_multidict_benchmarks.py
298.3 ms
test_multidict_clear_str[ci-c]
tests/test_multidict_benchmarks.py
14.3 µs
test_multidict_fetch[ci-c]
tests/test_multidict_benchmarks.py
81.3 µs
test_multidict_extend_str[cs-c]
tests/test_multidict_benchmarks.py
3 ms
test_multidict_get_hit_with_default[ci-c]
tests/test_multidict_benchmarks.py
94.2 µs
test_multidict_get_hit_with_default[cs-py]
tests/test_multidict_benchmarks.py
443.2 µs
test_items_view_is_disjoint[cs-py]
tests/test_views_benchmarks.py
633.7 µs
test_items_view_equals[ci-py]
tests/test_views_benchmarks.py
876.7 µs
test_items_view_equals[cs-py]
tests/test_views_benchmarks.py
666 µs
test_items_view_less[cs-py]
tests/test_views_benchmarks.py
250.3 µs
test_items_view_more_or_equal[cs-py]
tests/test_views_benchmarks.py
514.7 µs
test_multidict_extend_str_with_kwargs[cs-c]
tests/test_multidict_benchmarks.py
4.8 ms
test_multidict_get_hit[ci-c]
tests/test_multidict_benchmarks.py
93.1 µs
test_multidict_extend_str[ci-c]
tests/test_multidict_benchmarks.py
11.3 ms
test_items_view_is_disjoint[ci-c]
tests/test_views_benchmarks.py
62.9 µs
test_items_view_equals[ci-c]
tests/test_views_benchmarks.py
94.5 µs
test_multidict_get_hit_with_default[ci-py]
tests/test_multidict_benchmarks.py
495.3 µs
test_items_view_less[ci-c]
tests/test_views_benchmarks.py
100.4 µs
test_multidict_delitem_str[ci-py]
tests/test_multidict_benchmarks.py
976.1 µs
test_multidict_get_miss[ci-c]
tests/test_multidict_benchmarks.py
80.2 µs
test_items_view_equals[cs-c]
tests/test_views_benchmarks.py
91.4 µs
test_multidict_fetch[cs-py]
tests/test_multidict_benchmarks.py
441.3 µs
test_multidict_get_miss[ci-py]
tests/test_multidict_benchmarks.py
465 µs
test_multidict_fetch[cs-c]
tests/test_multidict_benchmarks.py
51 µs
test_multidict_delitem_str[cs-py]
tests/test_multidict_benchmarks.py
916.7 µs
test_multidict_update_str_with_kwargs[ci-py]
tests/test_multidict_benchmarks.py
1.9 ms
test_items_view_is_disjoint[ci-py]
tests/test_views_benchmarks.py
846.3 µs
test_items_view_is_disjoint[cs-c]
tests/test_views_benchmarks.py
62.2 µs
test_multidict_get_miss[cs-py]
tests/test_multidict_benchmarks.py
413 µs
test_items_view_less[cs-c]
tests/test_views_benchmarks.py
97.8 µs
test_multidict_get_hit[cs-py]
tests/test_multidict_benchmarks.py
444.3 µs
test_multidict_get_hit[ci-py]
tests/test_multidict_benchmarks.py
496.7 µs
test_multidict_get_hit_with_default[cs-c]
tests/test_multidict_benchmarks.py
57.5 µs
test_multidict_delitem_str[cs-c]
tests/test_multidict_benchmarks.py
64.5 µs
test_multidict_get_miss[cs-c]
tests/test_multidict_benchmarks.py
41.2 µs
test_items_view_less_or_equal[ci-c]
tests/test_views_benchmarks.py
100.3 µs
test_items_view_more_or_equal[cs-c]
tests/test_views_benchmarks.py
81.2 µs
test_items_view_less_or_equal[cs-py]
tests/test_views_benchmarks.py
246.7 µs
test_items_view_more_or_equal[ci-c]
tests/test_views_benchmarks.py
110.4 µs
test_items_view_less[ci-py]
tests/test_views_benchmarks.py
333.3 µs
test_items_view_more[ci-c]
tests/test_views_benchmarks.py
66.1 µs
test_items_view_less_or_equal[ci-py]
tests/test_views_benchmarks.py
331.2 µs
test_items_view_more[cs-py]
tests/test_views_benchmarks.py
277.3 µs
test_items_view_repr[ci-c]
tests/test_views_benchmarks.py
86.5 µs
test_items_view_not_equals[cs-c]
tests/test_views_benchmarks.py
23.5 µs
test_items_view_or[cs-c]
tests/test_views_benchmarks.py
138.1 µs
test_items_view_repr[ci-py]
tests/test_views_benchmarks.py
150.5 µs
test_items_view_less_or_equal[cs-c]
tests/test_views_benchmarks.py
97.8 µs
test_keys_view_and[ci-c]
tests/test_views_benchmarks.py
80.6 µs
test_items_view_repr[cs-py]
tests/test_views_benchmarks.py
148.8 µs
test_items_view_more_or_equal[ci-py]
tests/test_views_benchmarks.py
570.2 µs
test_keys_view_equals[cs-py]
tests/test_views_benchmarks.py
601.8 µs
test_items_view_or[cs-py]
tests/test_views_benchmarks.py
852.9 µs
test_items_view_xor[cs-c]
tests/test_views_benchmarks.py
245.2 µs
test_items_view_not_equals[ci-py]
tests/test_views_benchmarks.py
72.4 µs
test_keys_view_equals[cs-c]
tests/test_views_benchmarks.py
53.1 µs
test_items_view_more[cs-c]
tests/test_views_benchmarks.py
50.8 µs
test_items_view_xor[ci-c]
tests/test_views_benchmarks.py
247.2 µs
test_items_view_more[ci-py]
tests/test_views_benchmarks.py
304.5 µs
test_keys_view_and[cs-py]
tests/test_views_benchmarks.py
568.8 µs
test_items_view_not_equals[cs-py]
tests/test_views_benchmarks.py
66.9 µs
test_keys_view_is_disjoint[ci-c]
tests/test_views_benchmarks.py
44.2 µs
test_keys_view_is_disjoint[cs-c]
tests/test_views_benchmarks.py
41.8 µs
test_items_view_sub[ci-py]
tests/test_views_benchmarks.py
706.1 µs
test_items_view_sub[cs-c]
tests/test_views_benchmarks.py
174.1 µs
test_items_view_or[ci-c]
tests/test_views_benchmarks.py
151.6 µs
test_keys_view_and[ci-py]
tests/test_views_benchmarks.py
782.1 µs
test_keys_view_more[ci-c]
tests/test_views_benchmarks.py
50.6 µs
test_items_view_sub[cs-py]
tests/test_views_benchmarks.py
487.1 µs
test_items_view_or[ci-py]
tests/test_views_benchmarks.py
1.2 ms
test_items_view_xor[ci-py]
tests/test_views_benchmarks.py
1.3 ms
test_keys_view_is_disjoint[ci-py]
tests/test_views_benchmarks.py
774.6 µs
test_items_view_not_equals[ci-c]
tests/test_views_benchmarks.py
22.4 µs
test_items_view_repr[cs-c]
tests/test_views_benchmarks.py
87 µs
test_items_view_sub[ci-c]
tests/test_views_benchmarks.py
182.1 µs
test_keys_view_less_or_equal[cs-py]
tests/test_views_benchmarks.py
197 µs
test_items_view_xor[cs-py]
tests/test_views_benchmarks.py
995.2 µs
test_keys_view_or[ci-c]
tests/test_views_benchmarks.py
101.3 µs
test_keys_view_less_or_equal[ci-py]
tests/test_views_benchmarks.py
285.3 µs
test_keys_view_less[cs-py]
tests/test_views_benchmarks.py
200.5 µs
test_keys_view_and[cs-c]
tests/test_views_benchmarks.py
58.5 µs
test_keys_view_less_or_equal[ci-c]
tests/test_views_benchmarks.py
56.8 µs
test_keys_view_less_or_equal[cs-c]
tests/test_views_benchmarks.py
47.5 µs
test_keys_view_equals[ci-c]
tests/test_views_benchmarks.py
56.4 µs
test_keys_view_equals[ci-py]
tests/test_views_benchmarks.py
816.6 µs
test_keys_view_more_or_equal[cs-c]
tests/test_views_benchmarks.py
51.5 µs
test_keys_view_repr[ci-py]
tests/test_views_benchmarks.py
108 µs
test_keys_view_more_or_equal[ci-py]
tests/test_views_benchmarks.py
513.4 µs
test_keys_view_less[ci-py]
tests/test_views_benchmarks.py
290.3 µs
test_keys_view_less[ci-c]
tests/test_views_benchmarks.py
56.8 µs
test_keys_view_not_equals[cs-c]
tests/test_views_benchmarks.py
22.5 µs
test_keys_view_not_equals[ci-c]
tests/test_views_benchmarks.py
21.2 µs
test_keys_view_more_or_equal[cs-py]
tests/test_views_benchmarks.py
460.2 µs
test_keys_view_is_disjoint[cs-py]
tests/test_views_benchmarks.py
563.5 µs
test_keys_view_more[cs-py]
tests/test_views_benchmarks.py
249.5 µs
test_keys_view_not_equals[cs-py]
tests/test_views_benchmarks.py
67.1 µs
test_keys_view_more_or_equal[ci-c]
tests/test_views_benchmarks.py
80.4 µs
test_keys_view_more[ci-py]
tests/test_views_benchmarks.py
280.6 µs
test_keys_view_sub[ci-py]
tests/test_views_benchmarks.py
1.1 ms
test_keys_view_or[cs-py]
tests/test_views_benchmarks.py
743.4 µs
test_keys_view_or[ci-py]
tests/test_views_benchmarks.py
1.1 ms
test_values_view_repr[cs-py]
tests/test_views_benchmarks.py
112.1 µs
test_keys_view_repr[cs-c]
tests/test_views_benchmarks.py
50.9 µs
test_keys_view_sub[cs-c]
tests/test_views_benchmarks.py
78.9 µs
test_keys_view_sub[cs-py]
tests/test_views_benchmarks.py
710.1 µs
test_keys_view_xor[ci-py]
tests/test_views_benchmarks.py
1.6 ms
test_keys_view_repr[ci-c]
tests/test_views_benchmarks.py
50.2 µs
test_keys_view_more[cs-c]
tests/test_views_benchmarks.py
35 µs
test_keys_view_repr[cs-py]
tests/test_views_benchmarks.py
103.9 µs
test_values_view_repr[cs-c]
tests/test_views_benchmarks.py
69.9 µs
test_values_view_repr[ci-py]
tests/test_views_benchmarks.py
114.4 µs
test_keys_view_xor[ci-c]
tests/test_views_benchmarks.py
137.5 µs
test_keys_view_not_equals[ci-py]
tests/test_views_benchmarks.py
73 µs
test_keys_view_less[cs-c]
tests/test_views_benchmarks.py
47.6 µs
test_keys_view_sub[ci-c]
tests/test_views_benchmarks.py
103.4 µs
test_values_view_repr[ci-c]
tests/test_views_benchmarks.py
69.5 µs
test_keys_view_xor[cs-py]
tests/test_views_benchmarks.py
1.1 ms
test_keys_view_xor[cs-c]
tests/test_views_benchmarks.py
129.7 µs
test_keys_view_or[cs-c]
tests/test_views_benchmarks.py
77.5 µs
© 2025 CodSpeed Technology
Home
Terms
Privacy
Docs