code: def already_pending_upgrade(self, upgrade_type: UpgradeId) -> Union[int, float]:
          
          assert isinstance(upgrade_type, UpgradeId)
          if upgrade_type in self.state.upgrades:
              return 1
          level = None
          if "LEVEL" in upgrade_type.name:
              level = upgrade_type.name[-1]
          creationAbilityID = self._game_data.upgrades[upgrade_type.value].research_ability.id
          for structure in self.units.structure.ready:
              for order in structure.orders:
                  if order.ability.id is creationAbilityID:
                      if level and order.ability.button_name[-1] != level:
                          return 0
                      return order.progress
          return 0
docs: Check if an upgrade is being researched
          Return values:
          0: not started
          0 < x < 1: researching
          1: finished