Skip to content

Mark packages as typed #305

Closed
Closed

Description

@jooola

Describe the bug

Mypy is failing because the packages aren't marked as typed (missing py.typed file), but it seems that most of the packages have the type definitions.

Could the packages be marked as typed ?

To Reproduce

from testcontainers.compose import DockerCompose

with DockerCompose("."):
  pass
$ mypy tests
tests/e2e_test.py:12: error: Skipping analyzing "testcontainers.compose": module is installed, but missing library stubs or py.typed marker  [import]
tests/e2e_test.py:12: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports

Activity

  1. tillahoffmann commented on Feb 16, 2023

    @tillahoffmann
    Contributor

    Yes, that should definitely be possible. Would you be up for setting up a PR? We could also add mypy checks in the same PR.

  2. alexanderankin commented on Mar 30, 2024

    @alexanderankin
    Member

    @jooola if you have any feedback about #504 it is welcome!

  3. brandur commented on Jun 30, 2024

    @brandur

    Does anyone know off hand whether this one was ever resolved?

    I'm kind of a Python noob and was trying to add type checking on a project's tests. I got almost all of it working, except for testcontainers:

    tests/conftest.py:5: error: Skipping analyzing "testcontainers.postgres": module is installed, but missing library stubs or py.typed marker  [import-untyped]
    

    Looking in the file I'm using, it is typed, but I think the problem is that it's not declaring itself as such. Fixing this might be as simple as adding a py.typed file to the project.

  4. alexanderankin commented on Jun 30, 2024

    @alexanderankin
    Member

    there is a pr here but its not a top priority: #504 - almost immediately after i opened there were two pr's with minor typing fixes that conflicted with it, and i did not rebase in time. at this point it would be not only harder to rebase but also there are new modules that need types/mypy checking.

    contributions would be accepted for it.

  5. brandur commented on Jun 30, 2024

    @brandur

    Thanks. My Python skills are such that I'm already having enough trouble just wrangling types in one much smaller package so I don't think I'll try my hand at this yet, but it's good to know I'm not missing something.

    In case this helps anyone else, here's a block that can be placed in mypy.ini to flag it as ignored so that MyPy can pass for everything else:

    # testcontainers is typed, but it doesn't correctly declare itself as such.
    # Hopefully it can be fixed one day:
    #
    # https://github.com/testcontainers/testcontainers-python/issues/305
    [mypy-testcontainers.*]
    ignore_missing_imports = True
  6. andres-ito-traversal commented on Apr 25, 2025

    @andres-ito-traversal
    Contributor

    Has there been any update on this issue? It's been close to a year since the last comment

  7. andres-ito-traversal commented on Nov 12, 2025

    @andres-ito-traversal
    Contributor

    It looks like the relevant PR is #810

  8. andres-ito-traversal commented on Nov 12, 2025

    @andres-ito-traversal
    Contributor

    I attempted to resolve this with #918

    I tested this PR locally by doing the following:

    1. I forked the testcontainers repo and cloned it locally
    2. In my working repo that is using testcontainers, I changed the dependency in pyproject.toml to not point to a release version but to instead point to a local directry. I did something like:
      uv pip install --editable "file:///Users/username/open-source/testcontainers-python[postgres]"
    3. Type checker validation: Executed Pyright against all the code in my directory
      pyright .
      0 errors, 0 warnings, 0 informations
    
  9. added a commit that references this issue on Mar 19, 2026
    ce3d229
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions