Commit 0703c187 authored by Dom Sekotill's avatar Dom Sekotill
Browse files

Correctly type a "self" return type

Until Mypy supports the "Self" type (PEP 673) this is the correct way
to type this kind of method.

Closes #14
parent 5282f31e
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ from subprocess import Popen
from subprocess import run
from types import TracebackType
from typing import IO
from typing import TYPE_CHECKING
from typing import Any
from typing import Iterable
from typing import Iterator
@@ -235,6 +236,7 @@ class Container(Item):
	exiting the context.
	"""

	if TYPE_CHECKING:
		T = TypeVar('T', bound='Container')

	DEFAULT_ALIASES = tuple[str]()
@@ -276,7 +278,7 @@ class Container(Item):
		self.stop(rm=True)

	@contextmanager
	def started(self) -> Iterator[Container]:
	def started(self: T) -> Iterator[T]:
		"""
		Return a context manager that ensures the container is started when the context is entered
		"""
+5 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ from time import sleep
from typing import TYPE_CHECKING
from typing import Iterator
from typing import Sequence
from typing import TypeVar

from behave import fixture

@@ -39,6 +40,9 @@ class Mysql(Container):
	Container subclass for a database container
	"""

	if TYPE_CHECKING:
		T = TypeVar('T', bound='Mysql')

	def __init__(
		self,
		version: str = "latest",
@@ -95,7 +99,7 @@ class Mysql(Container):
		return Cli(self, "mysqldump")

	@contextmanager
	def started(self) -> Iterator[Container]:
	def started(self: T) -> Iterator[T]:
		"""
		Return a context manager that only enters once the database is initialised
		"""