testcontainers-python icon indicating copy to clipboard operation
testcontainers-python copied to clipboard

Bug: No link to new docs from this repo?

Open nedbat opened this issue 3 months ago • 6 comments

Describe the bug

Pull request #822 created a nice-looking docs site. But coming to this repo, I see links to the now almost-empty old docs: https://testcontainers-python.readthedocs.io/en/latest/

Shouldn't we be sending people to the new docs?

I see python.testcontainers.org isn't live yet. I used to be able to see a list of containers: https://testcontainers-python.readthedocs.io/en/testcontainers-v4.2.0/

Now I don't see them: https://testcontainers-python.readthedocs.io/en/testcontainers-v4.12.0/modules/index.html

nedbat avatar Sep 08 '25 17:09 nedbat

i dont believe the new docs are live. moreover, I havent even reviewed them. i am trying to release the next release this week, i just need to make sure i have a free morning to field any issues or questions that come up. for some reason people seem to install the new version right away.

On Mon, Sep 8, 2025 at 1:49 PM Ned Batchelder @.***> wrote:

nedbat created an issue (testcontainers/testcontainers-python#869) https://github.com/testcontainers/testcontainers-python/issues/869

Describe the bug

Pull request #822 https://github.com/testcontainers/testcontainers-python/pull/822 created a nice-looking docs site. But coming to this repo, I see links to the now almost-empty old docs: https://testcontainers-python.readthedocs.io/en/latest/

Shouldn't we be sending people to the new docs?

— Reply to this email directly, view it on GitHub https://github.com/testcontainers/testcontainers-python/issues/869, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACECGJHC74TUQX52XH4MRC33RW6S3AVCNFSM6AAAAACF6GNTOSVHI2DSMVQWIX3LMV43ASLTON2WKOZTGM4TKMBZHA4DSOI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

alexanderankin avatar Sep 08 '25 18:09 alexanderankin

after that i can try to review docs. i believe some intervention is needed from the core team (which i am not a part of) for making them fully live but im not sure we are there yet anyway

On Mon, Sep 8, 2025 at 2:16 PM David Ankin @.***> wrote:

i dont believe the new docs are live. moreover, I havent even reviewed them. i am trying to release the next release this week, i just need to make sure i have a free morning to field any issues or questions that come up. for some reason people seem to install the new version right away.

On Mon, Sep 8, 2025 at 1:49 PM Ned Batchelder @.***> wrote:

nedbat created an issue (testcontainers/testcontainers-python#869) https://github.com/testcontainers/testcontainers-python/issues/869

Describe the bug

Pull request #822 https://github.com/testcontainers/testcontainers-python/pull/822 created a nice-looking docs site. But coming to this repo, I see links to the now almost-empty old docs: https://testcontainers-python.readthedocs.io/en/latest/

Shouldn't we be sending people to the new docs?

— Reply to this email directly, view it on GitHub https://github.com/testcontainers/testcontainers-python/issues/869, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACECGJHC74TUQX52XH4MRC33RW6S3AVCNFSM6AAAAACF6GNTOSVHI2DSMVQWIX3LMV43ASLTON2WKOZTGM4TKMBZHA4DSOI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

alexanderankin avatar Sep 08 '25 18:09 alexanderankin

I misunderstood, because the pull request was merged a few months ago. Maybe the real problem is that the old docs are gone?

nedbat avatar Sep 08 '25 18:09 nedbat

the old docs are currently in a broken state - readthedocs only supports pip and pip is not workable for complicated repo setups like this so we moved to poetry - i guess now people are suggesting we move to uv, so poetry "winning" seems to not have happened the way i had hoped. so that is where we are now.

honestly if the docs were the issue, i would just make markdown files in a docs folder in the repo that people could read but there are bigger issues with the library, like the whole API being different and being architected differently (which is not so easy to just reverse engineer because the python docker client differs, it appeared to me the last time i tried to do a major overhaul, from the other language drivers)

do you have questions that the docs should have answered? I'm happy to help (and highlight what should be made more visible in some documentation somewhere)

alexanderankin avatar Sep 08 '25 18:09 alexanderankin

btw the new list is here https://testcontainers-python.readthedocs.io/en/latest/modules/index.html

alexanderankin avatar Sep 08 '25 18:09 alexanderankin

btw what do we do about doctests when the new docs are live? should i still attempt to create a minimalistic sphinx thing so that doctests can be ran? they are currently silently failing:

poetry run sphinx-build -b doctest -c doctests core docs/_build
Running Sphinx v7.2.6
making output directory... done
building [mo]: targets for 0 po files that are out of date
writing output... 
building [doctest]: targets for 1 source files that are out of date
updating environment: [new config] 1 added, 0 changed, 0 removed
/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/paramiko/pkey.py:100: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.
  "cipher": algorithms.TripleDES,
/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/paramiko/transport.py:259: CryptographyDeprecationWarning: TripleDES has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.
  "class": algorithms.TripleDES,
reading sources... [100%] README
WARNING: autodoc: failed to import class 'generic.DbContainer' from module 'testcontainers.core'; the following exception was raised:
Traceback (most recent call last):
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sphinx/ext/autodoc/importer.py", line 69, in import_module
    return importlib.import_module(modname)
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
  File "/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/importlib/__init__.py", line 88, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1342, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 938, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 762, in exec_module
  File "<frozen importlib._bootstrap>", line 491, in _call_with_frames_removed
  File "/home/runner/work/testcontainers-python/testcontainers-python/core/testcontainers/core/generic.py", line 22, in <module>
    from sqlalchemy.exc import DBAPIError
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/__init__.py", line 13, in <module>
    from .engine import AdaptedConnection as AdaptedConnection
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/engine/__init__.py", line 18, in <module>
    from . import events as events
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/engine/events.py", line 19, in <module>
    from .base import Connection
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/engine/base.py", line 30, in <module>
    from .interfaces import BindTyping
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/engine/interfaces.py", line 38, in <module>
    from ..sql.compiler import Compiled as Compiled
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/sql/__init__.py", line 14, in <module>
    from .compiler import COLLECT_CARTESIAN_PRODUCTS as COLLECT_CARTESIAN_PRODUCTS
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/sql/compiler.py", line 61, in <module>
    from . import crud
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/sql/crud.py", line 34, in <module>
    from . import dml
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/sql/dml.py", line 34, in <module>
    from . import util as sql_util
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/sql/util.py", line 46, in <module>
    from .ddl import sort_tables as sort_tables  # noqa: F401
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/sql/ddl.py", line 30, in <module>
    from .elements import ClauseElement
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/sql/elements.py", line 806, in <module>
    class SQLCoreOperations(Generic[_T_co], ColumnOperators, TypingOnly):
    ...<372 lines>...
            def __rfloordiv__(self, other: Any) -> ColumnElement[Any]: ...
  File "/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/typing.py", line 1161, in _generic_init_subclass
    super(Generic, cls).__init_subclass__(*args, **kwargs)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/home/runner/.cache/pypoetry/virtualenvs/testcontainers-Wc8dTDd--py3.14/lib/python3.14/site-packages/sqlalchemy/util/langhelpers.py", line 1980, in __init_subclass__
    raise AssertionError(
    ...<2 lines>...
    )
AssertionError: Class <class 'sqlalchemy.sql.elements.SQLCoreOperations'> directly inherits TypingOnly but has additional attributes {'__firstlineno__', '__static_attributes__'}.
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
running tests...
Document: README
----------------
1 item passed all tests:
  20 tests in default
20 tests in 1 item.
20 passed.
Test passed.
Doctest summary
===============
   20 tests
    0 failures in tests
    0 failures in setup code
    0 failures in cleanup code
build succeeded, 1 warning.
Testing of doctests in the sources finished, look at the results in docs/_build/output.txt.

alexanderankin avatar Nov 14 '25 04:11 alexanderankin