class_docstr: the class to get Pool info.
class_docstr_tok: ["the","class","to","get","Pool","info","."]
docstr: Get the number of slots open at the moment.
  
  :param session: SQLAlchemy ORM Session
  :return: the number of slots
docstr_tok: ["Get","the","number","of","slots","open","at","the","moment",".",":","param","session",":","SQLAlchemy","ORM","Session",":","return",":","the","number","of","slots"]
code: def open_slots(self, session: Session = NEW_SESSION) -> float:
      """
      Get the number of slots open at the moment.
  
      :param session: SQLAlchemy ORM Session
      :return: the number of slots
      """
      if self.slots == -1:
          return float("inf")
      return self.slots - self.occupied_slots(session)
  
imports: from __future__ import annotations
  from typing import TYPE_CHECKING, Any
  from sqlalchemy import Boolean, Column, Integer, String, Text, func, select
  from airflow.exceptions import AirflowException, PoolNotFound
  from airflow.models.base import Base
  from airflow.ti_deps.dependencies_states import EXECUTION_STATES
  from airflow.typing_compat import TypedDict
  from airflow.utils.db import exists_query
  from airflow.utils.session import NEW_SESSION, provide_session
  from airflow.utils.sqlalchemy import nowait, with_row_locks
  from airflow.utils.state import TaskInstanceState
label_desc: Use image node_id 16 for calling the Pool obj's underlying member method code with example usage: obj.open_slots(session) and returns: unknown, float