code: def __init__(
      self,
      start_max: int,
      target_max: int,
      progress_and_tid: Optional[Tuple[Progress, TaskID]],
  ):
      self.task: Optional[asyncio.Task] = None
      self.target_max = target_max
      self.current_max = start_max
      self.sema = asyncio.Semaphore(self.current_max)
      self.progress_and_tid = progress_and_tid
  
file_path: hail/hail/python/hailtop/aiotools/copy.py
imports: from typing import List, Dict, AsyncContextManager, Optional, Tuple
  import argparse
  import asyncio
  import json
  import logging
  import sys
  from concurrent.futures import ThreadPoolExecutor
  from rich.progress import Progress, TaskID
  from ..utils.utils import sleep_before_try
  from ..utils.rich_progress_bar import CopyToolProgressBar, make_listener
  from .None import Transfer, Copier
  from .router_fs import RouterAsyncFS
label_desc: Use image node_id 1 to create a new GrowingSempahore object from inherited base classes: AsyncContextManager with example: obj = GrowingSempahore(start_max, target_max, progress_and_tid)