From 6edf1fe9677c06863293612bfeffbf3d8175dae0 Mon Sep 17 00:00:00 2001 From: euri10 Date: Tue, 18 Nov 2025 06:22:55 +0100 Subject: [PATCH 1/3] docs: usage cli tests --- docs/examples/usage/usage_cli_1.py | 30 +++++++++++++++ docs/examples/usage/usage_cli_2.py | 26 +++++++++++++ docs/usage/cli.rst | 61 ++++++------------------------ 3 files changed, 68 insertions(+), 49 deletions(-) create mode 100644 docs/examples/usage/usage_cli_1.py create mode 100644 docs/examples/usage/usage_cli_2.py diff --git a/docs/examples/usage/usage_cli_1.py b/docs/examples/usage/usage_cli_1.py new file mode 100644 index 00000000..03df1289 --- /dev/null +++ b/docs/examples/usage/usage_cli_1.py @@ -0,0 +1,30 @@ +from sqlspec.adapters.asyncpg import AsyncpgConfig + + +def test_single_and_multiple_configs() -> None: + # start-example + # Single config + db_config = AsyncpgConfig( + pool_config={"dsn": "postgresql://user:pass@localhost/mydb"}, + migration_config={"script_location": "migrations", "enabled": True}, + ) + + # Multiple configs + configs = [ + AsyncpgConfig( + bind_key="postgres", + pool_config={"dsn": "postgresql://..."}, + migration_config={"script_location": "migrations/postgres"}, + ) + # ... more configs + ] + + # Callable function + def get_configs() -> list[AsyncpgConfig]: + return [db_config] + + # end-example + assert isinstance(db_config, AsyncpgConfig) + assert isinstance(configs, list) + assert callable(get_configs) + assert get_configs()[0] is db_config diff --git a/docs/examples/usage/usage_cli_2.py b/docs/examples/usage/usage_cli_2.py new file mode 100644 index 00000000..f81cd63a --- /dev/null +++ b/docs/examples/usage/usage_cli_2.py @@ -0,0 +1,26 @@ +from sqlspec.adapters.asyncmy import AsyncmyConfig +from sqlspec.adapters.asyncpg import AsyncpgConfig + + +def test_multi_config() -> None: + # start-example + configs = [ + AsyncpgConfig( + bind_key="postgres", + pool_config={"dsn": "postgresql://..."}, + migration_config={"script_location": "migrations/postgres", "enabled": True} + ), + AsyncmyConfig( + bind_key="mysql", + pool_config={"host": "localhost", "database": "mydb"}, + migration_config={"script_location": "migrations/mysql", "enabled": True} + ), + AsyncpgConfig( + bind_key="analytics", + pool_config={"dsn": "postgresql://analytics/..."}, + migration_config={"script_location": "migrations/analytics", "enabled": True} + ), + ] + # end-example + assert isinstance(configs, list) + assert all(hasattr(cfg, "bind_key") for cfg in configs) diff --git a/docs/usage/cli.rst b/docs/usage/cli.rst index 6c8e1056..6c10cb66 100644 --- a/docs/usage/cli.rst +++ b/docs/usage/cli.rst @@ -218,32 +218,12 @@ The ``--config`` option accepts a dotted path to either: Example configuration file (``myapp/config.py``): -.. code-block:: python - - from sqlspec.adapters.asyncpg import AsyncpgConfig - - # Single config - db_config = AsyncpgConfig( - pool_config={"dsn": "postgresql://user:pass@localhost/mydb"}, - migration_config={ - "script_location": "migrations", - "enabled": True - } - ) - - # Multiple configs - configs = [ - AsyncpgConfig( - bind_key="postgres", - pool_config={"dsn": "postgresql://..."}, - migration_config={"script_location": "migrations/postgres"} - ), - # ... more configs - ] - - # Callable function - def get_configs(): - return [db_config] +.. literalinclude:: /examples/usage/usage_cli_1.py + :language: python + :dedent: 0 + :start-after: # start-example + :end-before: # end-example + :caption: `configuration loading` Global Options -------------- @@ -769,29 +749,12 @@ them collectively or selectively. Scenario: Multiple Databases ----------------------------- -.. code-block:: python - - # config.py - from sqlspec.adapters.asyncpg import AsyncpgConfig - from sqlspec.adapters.asyncmy import AsyncmyConfig - - configs = [ - AsyncpgConfig( - bind_key="postgres", - pool_config={"dsn": "postgresql://..."}, - migration_config={"script_location": "migrations/postgres", "enabled": True} - ), - AsyncmyConfig( - bind_key="mysql", - pool_config={"host": "localhost", "database": "mydb"}, - migration_config={"script_location": "migrations/mysql", "enabled": True} - ), - AsyncpgConfig( - bind_key="analytics", - pool_config={"dsn": "postgresql://analytics/..."}, - migration_config={"script_location": "migrations/analytics", "enabled": True} - ), - ] +.. literalinclude:: /examples/usage/usage_cli_2.py + :language: python + :dedent: 0 + :start-after: # start-example + :end-before: # end-example + :caption: `multiple databases` Upgrade All Enabled Configs ---------------------------- From 50164afcbd242e03e52c3b36b80e8e7652f481bd Mon Sep 17 00:00:00 2001 From: euri10 Date: Tue, 18 Nov 2025 06:25:53 +0100 Subject: [PATCH 2/3] lint --- docs/examples/usage/usage_cli_1.py | 2 ++ docs/examples/usage/usage_cli_2.py | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/examples/usage/usage_cli_1.py b/docs/examples/usage/usage_cli_1.py index 03df1289..8b3cc9c3 100644 --- a/docs/examples/usage/usage_cli_1.py +++ b/docs/examples/usage/usage_cli_1.py @@ -1,5 +1,7 @@ from sqlspec.adapters.asyncpg import AsyncpgConfig +__all__ = ("test_single_and_multiple_configs", ) + def test_single_and_multiple_configs() -> None: # start-example diff --git a/docs/examples/usage/usage_cli_2.py b/docs/examples/usage/usage_cli_2.py index f81cd63a..8bec562a 100644 --- a/docs/examples/usage/usage_cli_2.py +++ b/docs/examples/usage/usage_cli_2.py @@ -1,6 +1,8 @@ from sqlspec.adapters.asyncmy import AsyncmyConfig from sqlspec.adapters.asyncpg import AsyncpgConfig +__all__ = ("test_multi_config", ) + def test_multi_config() -> None: # start-example @@ -8,17 +10,17 @@ def test_multi_config() -> None: AsyncpgConfig( bind_key="postgres", pool_config={"dsn": "postgresql://..."}, - migration_config={"script_location": "migrations/postgres", "enabled": True} + migration_config={"script_location": "migrations/postgres", "enabled": True}, ), AsyncmyConfig( bind_key="mysql", pool_config={"host": "localhost", "database": "mydb"}, - migration_config={"script_location": "migrations/mysql", "enabled": True} + migration_config={"script_location": "migrations/mysql", "enabled": True}, ), AsyncpgConfig( bind_key="analytics", pool_config={"dsn": "postgresql://analytics/..."}, - migration_config={"script_location": "migrations/analytics", "enabled": True} + migration_config={"script_location": "migrations/analytics", "enabled": True}, ), ] # end-example From c8ac811f89559a99a72ae9e2934393f739e78375 Mon Sep 17 00:00:00 2001 From: euri10 Date: Tue, 18 Nov 2025 06:28:48 +0100 Subject: [PATCH 3/3] lint --- docs/examples/usage/usage_cli_1.py | 2 +- docs/examples/usage/usage_cli_2.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/examples/usage/usage_cli_1.py b/docs/examples/usage/usage_cli_1.py index 8b3cc9c3..520c96c1 100644 --- a/docs/examples/usage/usage_cli_1.py +++ b/docs/examples/usage/usage_cli_1.py @@ -1,6 +1,6 @@ from sqlspec.adapters.asyncpg import AsyncpgConfig -__all__ = ("test_single_and_multiple_configs", ) +__all__ = ("test_single_and_multiple_configs",) def test_single_and_multiple_configs() -> None: diff --git a/docs/examples/usage/usage_cli_2.py b/docs/examples/usage/usage_cli_2.py index 8bec562a..22587d20 100644 --- a/docs/examples/usage/usage_cli_2.py +++ b/docs/examples/usage/usage_cli_2.py @@ -1,7 +1,7 @@ from sqlspec.adapters.asyncmy import AsyncmyConfig from sqlspec.adapters.asyncpg import AsyncpgConfig -__all__ = ("test_multi_config", ) +__all__ = ("test_multi_config",) def test_multi_config() -> None: