Skip to content

Commit 0a6df41

Browse files
CoderAAAsfc-gh-mmishchenko
authored andcommitted
Add type annotations to snowflake.connector.connect
1 parent 9ddfa23 commit 0a6df41

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

src/snowflake/connector/__init__.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,26 @@
4545
from .log_configuration import EasyLoggingConfigPython
4646
from .version import VERSION
4747

48+
from typing import TypeVar, ParamSpec, Unpack
49+
50+
P = ParamSpec("P")
51+
T = TypeVar("T", bound=SnowflakeConnection)
52+
4853
logging.getLogger(__name__).addHandler(NullHandler())
4954
setup_external_libraries()
5055

51-
5256
@wraps(SnowflakeConnection.__init__)
53-
def Connect(**kwargs) -> SnowflakeConnection:
54-
return SnowflakeConnection(**kwargs)
57+
def connect(
58+
__cls: type[T] = SnowflakeConnection,
59+
/,
60+
*args: P.args,
61+
**kwargs: Unpack[P.kwargs]
62+
) -> T:
63+
return __cls(*args, **kwargs)
64+
65+
# @wraps(SnowflakeConnection.__init__)
66+
# def Connect(**kwargs) -> SnowflakeConnection:
67+
# return SnowflakeConnection(**kwargs)
5568

5669

5770
connect = Connect

test/unit/test_type_check.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import snowflake.connector as conn
2+
3+
c = conn.connect(
4+
user="user",
5+
password="pass",
6+
account="account"
7+
)
8+
9+
invalid = conn.connect(
10+
user="user",
11+
password=123,
12+
account="account"
13+
)

0 commit comments

Comments
 (0)