| 639 | } |
| 640 | |
| 641 | vis::op::OperatorResult parse_operator_result(nb::object result, nb::object instance = nb::none()) { |
| 642 | if (nb::isinstance<nb::set>(result)) { |
| 643 | nb::set result_set = nb::cast<nb::set>(result); |
| 644 | for (auto item : result_set) { |
| 645 | std::string s = nb::cast<std::string>(item); |
| 646 | if (s == "FINISHED") |
| 647 | return vis::op::OperatorResult::FINISHED; |
| 648 | if (s == "RUNNING_MODAL") |
| 649 | return vis::op::OperatorResult::RUNNING_MODAL; |
| 650 | if (s == "CANCELLED") |
| 651 | return vis::op::OperatorResult::CANCELLED; |
| 652 | if (s == "PASS_THROUGH") |
| 653 | return vis::op::OperatorResult::PASS_THROUGH; |
| 654 | } |
| 655 | } else if (nb::isinstance<nb::str>(result)) { |
| 656 | std::string s = nb::cast<std::string>(result); |
| 657 | if (s == "FINISHED") |
| 658 | return vis::op::OperatorResult::FINISHED; |
| 659 | if (s == "RUNNING_MODAL") |
| 660 | return vis::op::OperatorResult::RUNNING_MODAL; |
| 661 | if (s == "CANCELLED") |
| 662 | return vis::op::OperatorResult::CANCELLED; |
| 663 | if (s == "PASS_THROUGH") |
| 664 | return vis::op::OperatorResult::PASS_THROUGH; |
| 665 | } else if (nb::isinstance<nb::dict>(result)) { |
| 666 | nb::dict result_dict = nb::cast<nb::dict>(result); |
| 667 | vis::op::OperatorResult status = vis::op::OperatorResult::CANCELLED; |
| 668 | nb::dict data; |
| 669 | |
| 670 | for (auto [key, value] : result_dict) { |
| 671 | std::string key_str = nb::cast<std::string>(key); |
| 672 | if (key_str == "status") { |
| 673 | std::string status_str = nb::cast<std::string>(value); |
| 674 | if (status_str == "FINISHED") |
| 675 | status = vis::op::OperatorResult::FINISHED; |
| 676 | else if (status_str == "RUNNING_MODAL") |
| 677 | status = vis::op::OperatorResult::RUNNING_MODAL; |
| 678 | else if (status_str == "CANCELLED") |
| 679 | status = vis::op::OperatorResult::CANCELLED; |
| 680 | else if (status_str == "PASS_THROUGH") |
| 681 | status = vis::op::OperatorResult::PASS_THROUGH; |
| 682 | } else { |
| 683 | data[key] = value; |
| 684 | } |
| 685 | } |
| 686 | |
| 687 | if (instance.is_valid() && !instance.is_none()) { |
| 688 | nb::setattr(instance, "_return_data", data); |
| 689 | } |
| 690 | |
| 691 | return status; |
| 692 | } |
| 693 | return vis::op::OperatorResult::CANCELLED; |
| 694 | } |
| 695 | |
| 696 | std::vector<vis::op::PropertySchema> extract_property_schemas(nb::object cls) { |
| 697 | std::vector<vis::op::PropertySchema> schemas; |
no test coverage detected