2121from testcontainers .core .exceptions import ContainerConnectException , ContainerStartException
2222from testcontainers .core .labels import LABEL_SESSION_ID , SESSION_ID
2323from testcontainers .core .network import Network
24+ from testcontainers .core .transferable import Transferable
2425from testcontainers .core .utils import is_arm , setup_logger
2526from testcontainers .core .waiting_utils import wait_container_is_ready , wait_for_logs
2627
@@ -35,13 +36,6 @@ class Mount(TypedDict):
3536 mode : str
3637
3738
38- @dataclasses .dataclass
39- class Transferrable :
40- source : Union [bytes , PathLike ]
41- destination_in_container : str
42- mode : int = 0o644
43-
44-
4539class DockerContainer :
4640 """
4741 Basic container object to spin up Docker instances.
@@ -80,7 +74,7 @@ def __init__(
8074 volumes : Optional [list [tuple [str , str , str ]]] = None ,
8175 network : Optional [Network ] = None ,
8276 network_aliases : Optional [list [str ]] = None ,
83- transferrables : Optional [tuple [ Transferrable ]] = None ,
77+ transferrables : Optional [list [ Transferable ]] = None ,
8478 ** kwargs : Any ,
8579 ) -> None :
8680 self .env = env or {}
@@ -108,7 +102,7 @@ def __init__(
108102 self .with_network_aliases (* network_aliases )
109103
110104 self ._kwargs = kwargs
111- self ._transferrables = transferrables or []
105+ self ._transferables : list [ Transferable ] = transferrables or []
112106
113107 def with_env (self , key : str , value : str ) -> Self :
114108 self .env [key ] = value
@@ -210,7 +204,7 @@ def start(self) -> Self:
210204
211205 logger .info ("Container started: %s" , self ._container .short_id )
212206
213- for t in self ._transferrables :
207+ for t in self ._transferables :
214208 self ._transfer_into_container (t .source , t .destination_in_container , t .mode )
215209
216210 return self
@@ -293,10 +287,10 @@ def _configure(self) -> None:
293287 def with_copy_into_container (
294288 self , file_content : bytes | PathLike , destination_in_container : str , mode : int = 0o644
295289 ):
296- self ._transferrables .append (Transferrable (file_content , destination_in_container , mode ))
290+ self ._transferables .append (Transferable (file_content , destination_in_container , mode ))
297291 return self
298292
299- def copy_into_container (self , file_content : bytes , destination_in_container : str , mode : int = 0o644 ):
293+ def copy_into_container (self , file_content : bytes | PathLike , destination_in_container : str , mode : int = 0o644 ):
300294 return self ._transfer_into_container (file_content , destination_in_container , mode )
301295
302296 def _transfer_into_container (self , source : bytes | PathLike , destination_in_container : str , mode : int ):
0 commit comments