docs: def _list_variables(self, station_codes):
          """
          Internal helper to list the variables for the given station codes.
          """
          # sample output from obs retrieval:
          #
          # DD9452D0
          #     HP(SRBM5)
          #         2013-07-22 19:30 45.97
          #     HT(SRBM5)
          #         2013-07-22 19:30 44.29
          #     PC(SRBM5)
          #         2013-07-22 19:30 36.19
          #
          rvar = re.compile(r"\n\s([A-Z]{2}[A-Z0-9]{0,1})\(\w+\)")
  
          variables = set()
          resp = requests.post(
              self.obs_retrieval_url,
              data={
                  "state": "nil",
                  "hsa": "nil",
                  "of": "3",
                  "extraids": " ".join(station_codes),
                  "sinceday": -1,
              },
          )
          resp.raise_for_status()
  
          list(map(variables.add, rvar.findall(resp.text)))
          return variables