Read function/lambda parameters. Return (parameters, has_annotations).
(state: State, data: ReadBuffer)
| 559 | |
| 560 | |
| 561 | def read_parameters(state: State, data: ReadBuffer) -> tuple[list[Argument], bool]: |
| 562 | """Read function/lambda parameters. |
| 563 | |
| 564 | Return (parameters, has_annotations). |
| 565 | """ |
| 566 | expect_tag(data, LIST_GEN) |
| 567 | n_args = read_int_bare(data) |
| 568 | arguments = [] |
| 569 | has_ann = False |
| 570 | for _ in range(n_args): |
| 571 | arg_name = read_str(data) |
| 572 | arg_kind_int = read_int(data) |
| 573 | arg_kind = ARG_KINDS[arg_kind_int] |
| 574 | has_type = read_bool(data) |
| 575 | if has_type: |
| 576 | ann = read_type(state, data) |
| 577 | has_ann = True |
| 578 | else: |
| 579 | ann = None |
| 580 | has_default = read_bool(data) |
| 581 | if has_default: |
| 582 | default = read_expression(state, data) |
| 583 | else: |
| 584 | default = None |
| 585 | pos_only = read_bool(data) |
| 586 | |
| 587 | if state.options.implicit_optional and ann is not None: |
| 588 | optional = isinstance(default, NameExpr) and default.name == "None" |
| 589 | if isinstance(ann, UnboundType): |
| 590 | ann.optional = optional |
| 591 | |
| 592 | var = Var(arg_name, ann) |
| 593 | var.is_inferred = False |
| 594 | var.is_argument = True |
| 595 | arg = Argument(var, ann, default, arg_kind, pos_only) |
| 596 | read_loc(data, arg) |
| 597 | set_line_column_range(var, arg) |
| 598 | arguments.append(arg) |
| 599 | |
| 600 | return arguments, has_ann |
| 601 | |
| 602 | |
| 603 | def read_type_params(state: State, data: ReadBuffer) -> list[TypeParam]: |
no test coverage detected
searching dependent graphs…