pgdevkit 0.3.1__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/PKG-INFO +2 -2
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/mssql/constants.py +1 -1
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/schema.py +19 -1
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pyproject.toml +1 -1
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/uv.lock +1 -1
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/.github/workflows/python-publish.yml +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/.github/workflows/python-test.yml +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/.gitignore +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/.python-version +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/README.md +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/docs/database-layout.md +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/__init__.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/backends/__init__.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/backends/base.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/backends/mssql.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/backends/postgres.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/cli.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/connection.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/db/__init__.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/db/complex_types.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/db/connection.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/db/crud.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/db/loader.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/db/model.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/db/mssql_crud.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/db/mssql_sql.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/dialect.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/diff.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/fetch_missing.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/introspect.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/lakebase.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/models.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/mssql_introspect.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/parser.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/__init__.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/_docker.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/api.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/config.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/constants.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/container.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/mssql/__init__.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/mssql/api.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/mssql/container.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/naming.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/pgdevkit/testdb/query.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/skills/pgdevkit/SKILL.md +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/skills/pgdevkit/references/dynamic-sql.md +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/skills/pgdevkit/references/temporal-tables.md +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/__init__.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/conftest.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/db/__init__.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/db/test_complex_types.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/db/test_connection.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/db/test_crud.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/db/test_loader.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/db/test_mssql_crud_live.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/db/test_mssql_crud_sql.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/fixtures/01_schema.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/fixtures/02_types.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/fixtures/03_tables.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/fixtures/04_views.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/fixtures/05_functions.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/fixtures/06_indexes.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_cli_compare.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_compare.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_compare_mssql_live.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_connection.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_dialect.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_diff_mssql.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_fetch_missing.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_fetch_missing_cli.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_lakebase.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_mssql_introspect.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/test_parser_mssql.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/__init__.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/conftest.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/migrations/001_add_gadget_note.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/gadget.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/gadget.test_data.json +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/widget.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/widget.test_data.json +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/widget_part.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/widget_part_detail.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/types/dimensions.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/types/mood.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/views/a_wrapper_view.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/views/b_base_view.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/schema/app.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database_mssql/app/tables/widget.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database_mssql/app/tables/widget.test_data.json +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database_mssql/app/views/a_wrapper_view.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database_mssql/app/views/b_base_view.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database_mssql/schema/app.sql +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_api.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_api_mssql.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_api_mssql_live.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_cli.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_config.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_config_mssql.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_constants.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_container.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_mssql_constants.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_naming.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_query.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_schema.py +0 -0
- {pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/test_schema_mssql.py +0 -0
|
@@ -8,7 +8,7 @@ CONTAINER_NAME = "pgdevkit-mssql"
|
|
|
8
8
|
# emulated under Docker Desktop (slow, occasionally flaky startup). The
|
|
9
9
|
# documented escape hatch is mcr.microsoft.com/azure-sql-edge (multi-arch,
|
|
10
10
|
# missing a few full-SQL-Server features).
|
|
11
|
-
IMAGE = os.environ.get("PGDEVKIT_TESTDB_MSSQL_IMAGE", "mcr.microsoft.com/mssql/server:
|
|
11
|
+
IMAGE = os.environ.get("PGDEVKIT_TESTDB_MSSQL_IMAGE", "mcr.microsoft.com/mssql/server:2025-latest")
|
|
12
12
|
HOST = os.environ.get("PGDEVKIT_TESTDB_MSSQL_HOST", "localhost")
|
|
13
13
|
# Deliberately not SQL Server's native 1433 -- avoids colliding with a
|
|
14
14
|
# locally-installed instance, mirroring how the Postgres container's own
|
|
@@ -195,6 +195,25 @@ async def _insert_test_data(
|
|
|
195
195
|
# Silently drop JSON keys that don't correspond to a real column —
|
|
196
196
|
# e.g. a stale fixture left over from a since-renamed/removed column.
|
|
197
197
|
col_names = [c for c in rows[0] if c in complex_types]
|
|
198
|
+
has_complex_col = any(complex_types.get(col) is not None for col in col_names)
|
|
199
|
+
|
|
200
|
+
await cur.execute(SQL("DELETE FROM {t}").format(t=Identifier(schema, table_name)))
|
|
201
|
+
|
|
202
|
+
if not has_complex_col:
|
|
203
|
+
# No composite/enum/JSONB column on this table -- every value is a
|
|
204
|
+
# plain scalar or a native Postgres array, so COPY can take the
|
|
205
|
+
# rows as-is. COPY sends the whole batch as one stream instead of
|
|
206
|
+
# a parse/bind/execute round trip per row, which matters a lot for
|
|
207
|
+
# fixtures with tens of thousands of rows.
|
|
208
|
+
copy_sql = SQL("COPY {t} ({cols}) FROM STDIN").format(
|
|
209
|
+
t=Identifier(schema, table_name),
|
|
210
|
+
cols=SQL(", ").join(Identifier(c) for c in col_names),
|
|
211
|
+
)
|
|
212
|
+
async with cur.copy(copy_sql) as copy:
|
|
213
|
+
for row in rows:
|
|
214
|
+
await copy.write_row(tuple(row[c] for c in col_names))
|
|
215
|
+
return
|
|
216
|
+
|
|
198
217
|
for row in rows:
|
|
199
218
|
for col in col_names:
|
|
200
219
|
info = complex_types.get(col)
|
|
@@ -206,7 +225,6 @@ async def _insert_test_data(
|
|
|
206
225
|
# is left untouched.
|
|
207
226
|
row[col] = await complex_helper.recursive_convert(row[col], info, con)
|
|
208
227
|
|
|
209
|
-
await cur.execute(SQL("DELETE FROM {t}").format(t=Identifier(schema, table_name)))
|
|
210
228
|
insert_sql = SQL("INSERT INTO {t} ({cols}) VALUES ({vals})").format(
|
|
211
229
|
t=Identifier(schema, table_name),
|
|
212
230
|
cols=SQL(", ").join(Identifier(c) for c in col_names),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/gadget.test_data.json
RENAMED
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/widget.test_data.json
RENAMED
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/tables/widget_part_detail.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database/app/views/a_wrapper_view.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database_mssql/app/tables/widget.sql
RENAMED
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database_mssql/app/views/a_wrapper_view.sql
RENAMED
|
File without changes
|
{pgdevkit-0.3.1 → pgdevkit-0.3.3}/tests/testdb/fixtures/database_mssql/app/views/b_base_view.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|