|
52 | 52 | "# Stdlib imports\n",
|
53 | 53 | "from copy import deepcopy\n",
|
54 | 54 | "from typing import Optional, Any, Sequence, Union\n",
|
55 |
| - "from dataclasses import fields, dataclass\n", |
| 55 | + "from dataclasses import fields, dataclass, replace\n", |
56 | 56 | "\n",
|
57 | 57 | "# Progress bars\n",
|
58 | 58 | "from tqdm import tqdm\n",
|
|
689 | 689 | " break\n",
|
690 | 690 | "\n",
|
691 | 691 | " # Reshape results according to number of iterations performed\n",
|
| 692 | + " reshaped_fields = {}\n", |
692 | 693 | " for field_name in available_fields:\n",
|
693 | 694 | " results_this_field = getattr(results, field_name)\n",
|
694 | 695 | " n_optimized_results_this_field = (\n",
|
695 | 696 | " len(results_this_field)\n",
|
696 | 697 | " if can_optimize\n",
|
697 | 698 | " else field_to_length_so_far[field_name]\n",
|
698 | 699 | " )\n",
|
| 700 | + " n_unoptimized_results_this_field = (\n", |
| 701 | + " len(results_this_field) - n_optimized_results_this_field\n", |
| 702 | + " )\n", |
699 | 703 | "\n",
|
700 | 704 | " assert not n_optimized_results_this_field % n_iters_with_optimization\n",
|
701 | 705 | " n_in_each_optimized_iter = (\n",
|
702 | 706 | " n_optimized_results_this_field // n_iters_with_optimization\n",
|
703 | 707 | " )\n",
|
704 |
| - " setattr(\n", |
705 |
| - " results,\n", |
706 |
| - " field_name,\n", |
707 |
| - " [\n", |
708 |
| - " results_this_field[\n", |
709 |
| - " j\n", |
710 |
| - " * n_in_each_optimized_iter : (j + 1)\n", |
711 |
| - " * n_in_each_optimized_iter\n", |
712 |
| - " ]\n", |
713 |
| - " for j in range(n_iters_with_optimization)\n", |
| 708 | + " reshaped_fields[field_name] = [\n", |
| 709 | + " results_this_field[\n", |
| 710 | + " j * n_in_each_optimized_iter : (j + 1) * n_in_each_optimized_iter\n", |
714 | 711 | " ]\n",
|
715 |
| - " + [results_this_field[n_optimized_results_this_field:]],\n", |
| 712 | + " for j in range(n_iters_with_optimization)\n", |
| 713 | + " ] + [results_this_field[n_optimized_results_this_field:]] * bool(\n", |
| 714 | + " n_unoptimized_results_this_field\n", |
716 | 715 | " )\n",
|
| 716 | + " results = replace(results, **reshaped_fields)\n", |
717 | 717 | "\n",
|
718 | 718 | " return results"
|
719 | 719 | ]
|
|
0 commit comments