sqlcrucible 0.1.0__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.
- sqlcrucible-0.1.0/.github/workflows/ci.yml +88 -0
- sqlcrucible-0.1.0/.gitignore +22 -0
- sqlcrucible-0.1.0/.python-version +1 -0
- sqlcrucible-0.1.0/PKG-INFO +609 -0
- sqlcrucible-0.1.0/README.md +594 -0
- sqlcrucible-0.1.0/noxfile.py +81 -0
- sqlcrucible-0.1.0/pyproject.toml +83 -0
- sqlcrucible-0.1.0/src/sqlcrucible/__init__.py +11 -0
- sqlcrucible-0.1.0/src/sqlcrucible/_version.py +34 -0
- sqlcrucible-0.1.0/src/sqlcrucible/conversion/__init__.py +12 -0
- sqlcrucible-0.1.0/src/sqlcrucible/conversion/exceptions.py +87 -0
- sqlcrucible-0.1.0/src/sqlcrucible/conversion/function.py +40 -0
- sqlcrucible-0.1.0/src/sqlcrucible/conversion/mappings.py +84 -0
- sqlcrucible-0.1.0/src/sqlcrucible/conversion/noop.py +63 -0
- sqlcrucible-0.1.0/src/sqlcrucible/conversion/registry.py +132 -0
- sqlcrucible-0.1.0/src/sqlcrucible/conversion/sequences.py +99 -0
- sqlcrucible-0.1.0/src/sqlcrucible/conversion/unions.py +150 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/__init__.py +0 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/annotations.py +103 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/automodel.py +174 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/core.py +302 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/field_metadata.py +275 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/field_resolution.py +123 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/fields.py +134 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/sa_conversion.py +85 -0
- sqlcrucible-0.1.0/src/sqlcrucible/entity/sa_type.py +41 -0
- sqlcrucible-0.1.0/src/sqlcrucible/stubs/__init__.py +369 -0
- sqlcrucible-0.1.0/src/sqlcrucible/stubs/__main__.py +42 -0
- sqlcrucible-0.1.0/src/sqlcrucible/utils/__init__.py +0 -0
- sqlcrucible-0.1.0/src/sqlcrucible/utils/properties.py +66 -0
- sqlcrucible-0.1.0/src/sqlcrucible/utils/sa_fields.py +26 -0
- sqlcrucible-0.1.0/src/sqlcrucible/utils/types/__init__.py +0 -0
- sqlcrucible-0.1.0/src/sqlcrucible/utils/types/equivalence.py +29 -0
- sqlcrucible-0.1.0/src/sqlcrucible/utils/types/match.py +91 -0
- sqlcrucible-0.1.0/src/sqlcrucible/utils/types/params.py +61 -0
- sqlcrucible-0.1.0/src/sqlcrucible/utils/types/transformer.py +94 -0
- sqlcrucible-0.1.0/tests/__init__.py +0 -0
- sqlcrucible-0.1.0/tests/conversion/__init__.py +0 -0
- sqlcrucible-0.1.0/tests/conversion/conftest.py +48 -0
- sqlcrucible-0.1.0/tests/conversion/test_mappings.py +71 -0
- sqlcrucible-0.1.0/tests/conversion/test_noop.py +74 -0
- sqlcrucible-0.1.0/tests/conversion/test_registry.py +30 -0
- sqlcrucible-0.1.0/tests/conversion/test_sequences.py +63 -0
- sqlcrucible-0.1.0/tests/conversion/test_unions.py +105 -0
- sqlcrucible-0.1.0/tests/entity/__init__.py +0 -0
- sqlcrucible-0.1.0/tests/entity/test_attrs_entity.py +173 -0
- sqlcrucible-0.1.0/tests/entity/test_concrete_table_inheritance.py +135 -0
- sqlcrucible-0.1.0/tests/entity/test_custom_sa_model.py +85 -0
- sqlcrucible-0.1.0/tests/entity/test_dataclass_entity.py +212 -0
- sqlcrucible-0.1.0/tests/entity/test_joined_table_inheritance.py +138 -0
- sqlcrucible-0.1.0/tests/entity/test_pydantic_entity.py +260 -0
- sqlcrucible-0.1.0/tests/entity/test_sa_type.py +74 -0
- sqlcrucible-0.1.0/tests/entity/test_single_table_inheritance.py +130 -0
- sqlcrucible-0.1.0/tests/stubs/__init__.py +1 -0
- sqlcrucible-0.1.0/tests/stubs/sample_models.py +59 -0
- sqlcrucible-0.1.0/tests/stubs/test_stub_typecheck.py +144 -0
- sqlcrucible-0.1.0/tests/utils/types/test_params.py +69 -0
- sqlcrucible-0.1.0/uv.lock +756 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
tags: ["*"]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
UV_CACHE_DIR: /tmp/.uv-cache
|
|
12
|
+
# Top-level nox session names to run (newline-separated)
|
|
13
|
+
# Parameterized sessions (e.g., test-3.11, test-3.12) are discovered automatically from their base name
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
discover:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
outputs:
|
|
19
|
+
sessions: ${{ steps.sessions.outputs.sessions }}
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
|
|
23
|
+
- name: Install uv
|
|
24
|
+
uses: astral-sh/setup-uv@v5
|
|
25
|
+
|
|
26
|
+
- name: Get nox sessions
|
|
27
|
+
id: sessions
|
|
28
|
+
env:
|
|
29
|
+
NOX_SESSIONS: |
|
|
30
|
+
typecheck
|
|
31
|
+
check
|
|
32
|
+
depcheck
|
|
33
|
+
test
|
|
34
|
+
|
|
35
|
+
run: |
|
|
36
|
+
# Convert newline-separated session names to JSON array for jq
|
|
37
|
+
include_filter=$(echo "$NOX_SESSIONS" | jq -Rc '[., inputs] | map(select(length > 0))')
|
|
38
|
+
# Filter nox sessions to only those whose 'name' is in the include list
|
|
39
|
+
sessions=$(uv run nox --list --json | jq -c --argjson include "$include_filter" '[.[] | select(.name as $n | $include | index($n)) | .session]')
|
|
40
|
+
echo "sessions=$sessions" >> $GITHUB_OUTPUT
|
|
41
|
+
echo "Discovered sessions: $sessions"
|
|
42
|
+
|
|
43
|
+
check:
|
|
44
|
+
needs: discover
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
strategy:
|
|
47
|
+
fail-fast: false
|
|
48
|
+
matrix:
|
|
49
|
+
session: ${{ fromJson(needs.discover.outputs.sessions) }}
|
|
50
|
+
steps:
|
|
51
|
+
- uses: actions/checkout@v4
|
|
52
|
+
|
|
53
|
+
- name: Install uv
|
|
54
|
+
uses: astral-sh/setup-uv@v5
|
|
55
|
+
|
|
56
|
+
- name: Restore uv cache
|
|
57
|
+
uses: actions/cache@v4
|
|
58
|
+
with:
|
|
59
|
+
path: ${{ env.UV_CACHE_DIR }}
|
|
60
|
+
key: uv-${{ runner.os }}-${{ matrix.session }}-${{ hashFiles('uv.lock') }}
|
|
61
|
+
restore-keys: |
|
|
62
|
+
uv-${{ runner.os }}-${{ matrix.session }}-
|
|
63
|
+
uv-${{ runner.os }}-
|
|
64
|
+
|
|
65
|
+
- name: Run nox session
|
|
66
|
+
run: uv run nox -s "${{ matrix.session }}"
|
|
67
|
+
|
|
68
|
+
- name: Minimize uv cache
|
|
69
|
+
run: uv cache prune --ci
|
|
70
|
+
|
|
71
|
+
publish:
|
|
72
|
+
needs: check
|
|
73
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
|
|
74
|
+
runs-on: ubuntu-latest
|
|
75
|
+
environment: pypi
|
|
76
|
+
permissions:
|
|
77
|
+
id-token: write
|
|
78
|
+
steps:
|
|
79
|
+
- uses: actions/checkout@v4
|
|
80
|
+
|
|
81
|
+
- name: Install uv
|
|
82
|
+
uses: astral-sh/setup-uv@v5
|
|
83
|
+
|
|
84
|
+
- name: Build package
|
|
85
|
+
run: uv build
|
|
86
|
+
|
|
87
|
+
- name: Publish to PyPI
|
|
88
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
|
|
9
|
+
# Auto-generated version file
|
|
10
|
+
src/sqlcrucible/_version.py
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
.venv
|
|
14
|
+
|
|
15
|
+
# Coverage
|
|
16
|
+
htmlcov/
|
|
17
|
+
.coverage
|
|
18
|
+
.coverage.*
|
|
19
|
+
|
|
20
|
+
# Nox
|
|
21
|
+
.nox/
|
|
22
|
+
.claude
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|