@@ -48,7 +48,7 @@ class CrateDBContainer(SqlContainer):
4848
4949 # Default command-line options. CrateDB needs single-node discovery to run
5050 # as a one-node cluster suitable for testing.
51- CMD_OPTS : ClassVar [dict [ str , str ]] = { "discovery.type" : "single-node" }
51+ CMD_OPTS : ClassVar [list [ tuple [ str , str ]]] = [( "discovery.type" , "single-node" )]
5252
5353 def __init__ (
5454 self ,
@@ -57,7 +57,7 @@ def __init__(
5757 username : Optional [str ] = None ,
5858 password : Optional [str ] = None ,
5959 dialect : str = "crate" ,
60- cmd_opts : Optional [dict [ str , str ]] = None ,
60+ cmd_opts : Optional [list [ tuple [ str , str ] ]] = None ,
6161 ** kwargs ,
6262 ) -> None :
6363 """
@@ -73,12 +73,13 @@ def __init__(
7373 merged over (and able to override) the defaults.
7474 """
7575 raise_for_deprecated_parameter (kwargs , "user" , "username" )
76- # Readiness is signalled by CrateDB's HTTP interface returning 200; this
76+ # Readiness is signaled by CrateDB's HTTP interface returning 200; this
7777 # keeps startup free of any database client library.
7878 super ().__init__ (image , wait_strategy = HttpWaitStrategy (HTTP_PORT ).for_status_code (200 ), ** kwargs )
7979
80- cmd_opts = cmd_opts or {}
81- self ._command = self ._build_cmd ({** self .CMD_OPTS , ** cmd_opts })
80+ cmd_opts = cmd_opts or []
81+ default_cmd_opts = [s for s in self .CMD_OPTS if s [0 ] not in {k [0 ] for k in cmd_opts }]
82+ self ._command = self ._build_cmd ([* default_cmd_opts , * cmd_opts ])
8283
8384 self .username = username or os .environ .get ("CRATEDB_USER" , "crate" )
8485 self .password = password or os .environ .get ("CRATEDB_PASSWORD" , "crate" )
@@ -88,10 +89,10 @@ def __init__(
8889 self .with_exposed_ports (HTTP_PORT , PSQL_PORT )
8990
9091 @staticmethod
91- def _build_cmd (opts : dict [ str , str ]) -> str :
92+ def _build_cmd (opts : list [ tuple [ str , str ] ]) -> str :
9293 """Render a CrateDB ``-C<key>=<value> ...`` command-line string."""
9394 cmd = []
94- for key , val in opts . items () :
95+ for key , val in opts :
9596 if isinstance (val , bool ):
9697 val = str (val ).lower ()
9798 cmd .append (f"-C{ key } ={ val } " )
0 commit comments