Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RedisContainer] Support decode_responses setting #128

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions testcontainers/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@


class RedisContainer(DockerContainer):
def __init__(self, image="redis:latest", port_to_expose=6379):
def __init__(self, image="redis:latest", port_to_expose=6379, decode_responses=False):
super(RedisContainer, self).__init__(image)
self.port_to_expose = port_to_expose
self.with_exposed_ports(self.port_to_expose)
self.decode_responses = decode_responses

@wait_container_is_ready()
def _connect(self):
Expand All @@ -29,7 +30,7 @@ def _connect(self):
raise Exception

def get_client(self):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are your thoughts on instead supporting keyword arguments for the get_client function?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @tillahoffmann

Thanks for the review.

I think it would be better in the constructor. Because it's the same behavior when we use the python redis library. So in the PR, I put it there in the first place.

def __init__(self, image="redis:latest", port_to_expose=6379, decode_responses=False)

get_client is also fine to me too.

I think it's up to you :)

Thank you

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, let's go with **kwargs on the get_client method because it allows different clients to be instantiated with different parameters. You might also be able to add functools.wraps as a decorator to provide a nicer docstring.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @tillahoffmann

I'm not familiar with functors.wraps and not sure how to add it on get_client, could you give me some examples ?

And there's a new commit can you help to see is it what you imagined ?

Thank you very much

return redis.Redis(host=self.get_container_host_ip(), port=self.get_exposed_port(6379))
return redis.Redis(host=self.get_container_host_ip(), port=self.get_exposed_port(6379), decode_responses=self.decode_responses)

def start(self):
super().start()
Expand Down