Skip to content

bug: isinstance(int) validators in ConnectionConfig accept bool values #2076

Description

@rtmalikian

Problem

In weaviate/config.py, the ConnectionConfig.__post_init__ method validates that session_pool_connections, session_pool_maxsize, session_pool_max_retries, and session_pool_timeout are int types using isinstance(x, int).

Since bool is a subclass of int in Python, isinstance(True, int) returns True. This means True and False pass validation for these fields:

from weaviate.config import ConnectionConfig
config = ConnectionConfig(session_pool_connections=True)  # No error!
config.session_pool_connections  # True (not a valid connection count)

Expected Behaviour

True/False should be rejected with a TypeError since they are not valid integer values for connection pool settings.

Proposed Fix

Add and not isinstance(x, bool) guard to each validation check:

if not isinstance(self.session_pool_connections, int) or isinstance(self.session_pool_connections, bool):

Affected Files

  • weaviate/config.py (lines 17, 21, 25, 29)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions