pgdevkit 0.3.6__tar.gz → 0.3.8__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.6 → pgdevkit-0.3.8}/PKG-INFO +1 -1
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/fetch_missing.py +2 -2
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/parser.py +10 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/schema.py +3 -1
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pyproject.toml +1 -1
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/uv.lock +1 -1
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/.github/workflows/python-publish.yml +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/.github/workflows/python-test.yml +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/.gitignore +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/.python-version +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/README.md +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/docs/database-layout.md +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/__init__.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/backends/__init__.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/backends/base.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/backends/mssql.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/backends/postgres.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/cli.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/connection.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/db/__init__.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/db/complex_types.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/db/connection.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/db/crud.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/db/loader.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/db/model.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/db/mssql_crud.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/db/mssql_sql.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/dialect.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/diff.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/introspect.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/lakebase.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/migrate.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/models.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/mssql_introspect.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/__init__.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/_docker.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/api.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/config.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/constants.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/container.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/mssql/__init__.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/mssql/api.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/mssql/constants.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/mssql/container.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/naming.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/pgdevkit/testdb/query.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/skills/pgdevkit/SKILL.md +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/skills/pgdevkit/references/dynamic-sql.md +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/skills/pgdevkit/references/temporal-tables.md +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/__init__.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/conftest.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/db/__init__.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/db/test_complex_types.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/db/test_connection.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/db/test_crud.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/db/test_loader.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/db/test_mssql_crud_live.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/db/test_mssql_crud_sql.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/fixtures/01_schema.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/fixtures/02_types.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/fixtures/03_tables.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/fixtures/04_views.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/fixtures/05_functions.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/fixtures/06_indexes.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_cli_compare.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_compare.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_compare_mssql_live.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_connection.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_dialect.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_diff_mssql.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_fetch_missing.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_fetch_missing_cli.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_lakebase.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_migrate.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_mssql_introspect.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/test_parser_mssql.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/__init__.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/conftest.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/migrations/001_add_gadget_note.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/gadget.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/gadget.test_data.json +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/widget.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/widget.test_data.json +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/widget_part.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/widget_part_detail.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/types/dimensions.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/types/mood.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/views/a_wrapper_view.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/views/b_base_view.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/schema/app.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database_mssql/app/tables/widget.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database_mssql/app/tables/widget.test_data.json +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database_mssql/app/views/a_wrapper_view.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database_mssql/app/views/b_base_view.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database_mssql/schema/app.sql +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_api.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_api_mssql.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_api_mssql_live.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_cli.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_config.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_config_mssql.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_constants.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_container.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_mssql_constants.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_naming.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_query.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_schema.py +0 -0
- {pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/test_schema_mssql.py +0 -0
|
@@ -9,7 +9,7 @@ import psycopg
|
|
|
9
9
|
|
|
10
10
|
from .diff import DiffKind, compute_diff
|
|
11
11
|
from .introspect import introspect_db
|
|
12
|
-
from .parser import parse_directory
|
|
12
|
+
from .parser import IGNORED_DIR_NAMES, parse_directory
|
|
13
13
|
|
|
14
14
|
_LAYER_PREFIX_RE = re.compile(r"^\d+_?")
|
|
15
15
|
|
|
@@ -41,7 +41,7 @@ def layer_folder_for(scripts_dir: Path, schema: str) -> Path:
|
|
|
41
41
|
if no existing folder matches."""
|
|
42
42
|
if scripts_dir.is_dir():
|
|
43
43
|
for entry in scripts_dir.iterdir():
|
|
44
|
-
if not entry.is_dir() or entry.name in ("migrations", "_migration_scripts"):
|
|
44
|
+
if not entry.is_dir() or entry.name in ("migrations", "_migration_scripts") or entry.name in IGNORED_DIR_NAMES:
|
|
45
45
|
continue
|
|
46
46
|
if _LAYER_PREFIX_RE.sub("", entry.name).lower() == schema.lower():
|
|
47
47
|
return entry
|
|
@@ -15,6 +15,14 @@ from .models import (
|
|
|
15
15
|
|
|
16
16
|
logger = logging.getLogger(__name__)
|
|
17
17
|
|
|
18
|
+
# Tooling/scratch dirs that can end up inside a database/ tree (e.g. git
|
|
19
|
+
# worktrees checked out under database/.worktree for isolated test DBs) but
|
|
20
|
+
# never hold real schema content.
|
|
21
|
+
IGNORED_DIR_NAMES = {
|
|
22
|
+
".worktree", ".worktrees", ".claude", ".vscode", "node_modules",
|
|
23
|
+
"__pycache__", ".pytest_cache", ".mypy_cache", ".ruff_cache",
|
|
24
|
+
}
|
|
25
|
+
|
|
18
26
|
# Regex to extract dollar-quoted body (Postgres-only construct)
|
|
19
27
|
_DOLLAR_BODY = re.compile(r'\$(\w*)\$(.*?)\$\1\$', re.DOTALL | re.IGNORECASE)
|
|
20
28
|
|
|
@@ -35,6 +43,8 @@ def parse_directory(scripts_dir: Path, *, dialect: str | Dialect = "postgres") -
|
|
|
35
43
|
resolved = resolve_dialect(dialect)
|
|
36
44
|
db_schema = DatabaseSchema()
|
|
37
45
|
for sql_file in sorted(scripts_dir.rglob("*.sql")):
|
|
46
|
+
if IGNORED_DIR_NAMES.intersection(sql_file.relative_to(scripts_dir).parts[:-1]):
|
|
47
|
+
continue
|
|
38
48
|
_parse_file(sql_file, db_schema, resolved)
|
|
39
49
|
return db_schema
|
|
40
50
|
|
|
@@ -15,6 +15,7 @@ from psycopg.sql import SQL, Identifier, Placeholder
|
|
|
15
15
|
|
|
16
16
|
from ..db.complex_types import ComplexHelper
|
|
17
17
|
from ..dialect import Dialect, POSTGRES
|
|
18
|
+
from ..parser import IGNORED_DIR_NAMES
|
|
18
19
|
|
|
19
20
|
logger = logging.getLogger(__name__)
|
|
20
21
|
logging.getLogger("sqlglot").setLevel(logging.ERROR)
|
|
@@ -121,7 +122,8 @@ def _get_sql_deps(sql: str, dialect: Dialect = POSTGRES) -> set[str]:
|
|
|
121
122
|
def _iter_sql_files(database_dir: Path, dialect: Dialect = POSTGRES):
|
|
122
123
|
"""Yield (Path, sql_content) pairs in dependency-safe execution order."""
|
|
123
124
|
files: list[Path] = []
|
|
124
|
-
for root,
|
|
125
|
+
for root, dirs, dbfiles in os.walk(database_dir):
|
|
126
|
+
dirs[:] = [d for d in dirs if d not in IGNORED_DIR_NAMES]
|
|
125
127
|
if "_migration_scripts" in root or "migrations" in root:
|
|
126
128
|
continue
|
|
127
129
|
for file in dbfiles:
|
|
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
|
|
File without changes
|
{pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/gadget.test_data.json
RENAMED
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/widget.test_data.json
RENAMED
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/tables/widget_part_detail.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database/app/views/a_wrapper_view.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database_mssql/app/tables/widget.sql
RENAMED
|
File without changes
|
|
File without changes
|
{pgdevkit-0.3.6 → pgdevkit-0.3.8}/tests/testdb/fixtures/database_mssql/app/views/a_wrapper_view.sql
RENAMED
|
File without changes
|
{pgdevkit-0.3.6 → pgdevkit-0.3.8}/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
|