* Annotations for psycopg2.ConnectionInfo These annotations come from the documentation here: https://www.psycopg.org/docs/extensions.html#psycopg2.extensions.ConnectionInfo If there was doubt, I referred to the libpq documentation cited by psycopg2's docs. I wasn't completely sure about `dsn_parameters`. Psycopg2's docs list it as an `dict`, and the example suggests it's a `dict[str, str]` at that. From psycopg2's source I found1d3a89a0bb/psycopg/conninfo_type.c (L183-L206)which is implemented here:1d3a89a0bb/psycopg/utils.c (L251-L279)I'm no expert in CPython's API, but this looks to me like it's building a `dict[str, str]`. Additionally, the libpq docs https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PQCONNINFO https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PQCONNDEFAULTS show that the underlying data just consists of strings. Additionally, I'm pretty sure from this chunk of source1d3a89a0bb/psycopg/conninfo_type.c (L581-L598)That `ConnectionInfo.__init__` takes one positional-only argument, which must be a `psycopg2.connection`. But I don't think users are intended to be constructing this type, so I've not added that annotation. * Annotate `connection.info` and related attributes * Make ConnectionInfo attributes properties According to1d3a89a0bb/psycopg/conninfo_type.c (L534-L563)* Mark connection attributes as readonly according to8ef195f2ff/psycopg/connection_type.c (L1244)* Explain why some properties aren't `T | None`
typeshed
About
Typeshed contains external type annotations for the Python standard library and Python builtins, as well as third party packages as contributed by people external to those projects.
This data can e.g. be used for static analysis, type checking or type inference.
For information on how to use typeshed, read below. Information for
contributors can be found in CONTRIBUTING.md. Please read
it before submitting pull requests; do not report issues with annotations to
the project the stubs are for, but instead report them here to typeshed.
Typeshed supports Python versions 2.7 and 3.6 and up.
Using
If you're just using mypy (or pytype or PyCharm), as opposed to
developing it, you don't need to interact with the typeshed repo at
all: a copy of standard library part of typeshed is bundled with mypy.
And type stubs for third party packages and modules you are using can
be installed from PyPI. For example, if you are using six and requests,
you can install the type stubs using
$ pip install types-six types-requests
These PyPI packages follow PEP 561 and are automatically released (multiple times a day, when needed) by typeshed internal machinery.
Type checkers should be able to use these stub packages when installed. For more details, see the documentation for your type checker.
The _typeshed package
typeshed includes a package _typeshed as part of the standard library.
This package and its submodules contains utility types, but is not
available at runtime. For more information about how to use this package,
see the stdlib/_typeshed directory.
Discussion
If you've run into behavior in the type checker that suggests the type stubs for a given library are incorrect or incomplete, we want to hear from you!
Our main forum for discussion is the project's GitHub issue tracker. This is the right place to start a discussion of any of the above or most any other topic concerning the project.
If you have general questions about typing with Python, or you need a review of your type annotations or stubs outside of typeshed, head over to our discussion forum. For less formal discussion, try the typing chat room on gitter.im. Some typeshed maintainers are almost always present; feel free to find us there and we're happy to chat. Substantive technical discussion will be directed to the issue tracker.