testcontainers-python
testcontainers-python copied to clipboard
Feature: Proper type hinting for UDP ports bindings
I'm trying to bind udp ports:
def telegraf(network: Network):
ctr = DockerContainer(image="telegraf:1.31.1")
ctr.with_volume_mapping(f"{CURRENT_DIR}/telegraf_test.conf", "/etc/telegraf/telegraf.d/telegraf_test.conf")
ctr.with_exposed_ports("8094/tcp") # Telegraf ports
ctr.with_bind_ports("8125/udp", "8125/udp")
ctr.with_bind_ports("8092/udp", "8092/udp")
_connect_to_network(ctr, network, "telegraf")
return ctr
It works fine, except that ports are type hinted as int, leading to sad squiggly lines in IDEs.
Could we change type hints of port APIs to allow strings, to make it nicer to define more fine grain port specs?
def with_bind_ports(self, container: str, host: Optional[str] = None): ...
def with_exposed_ports(self, *ports: str): ...
def get_exposed_port(self, port: str): ...
open to a pr for this!
please note that def get_exposed_port(self, port: str): ... is probably wrong as it uses
mapped_port = self.get_docker_client().port(self._container.id, port)
->
port_mappings = self.client.api.port(container_id, port)
->
def port(self, container, private_port):
"""
Lookup the public-facing port that is NAT-ed to ``private_port``.
Identical to the ``docker port`` command.
Args:
container (str): The container to look up
private_port (int): The private port to inspect
So the docker API expect it to be an int
with_bind_ports & with_exposed_ports seems safe
Opened #690