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.
Files changed (58) hide show
  1. sqlcrucible-0.1.0/.github/workflows/ci.yml +88 -0
  2. sqlcrucible-0.1.0/.gitignore +22 -0
  3. sqlcrucible-0.1.0/.python-version +1 -0
  4. sqlcrucible-0.1.0/PKG-INFO +609 -0
  5. sqlcrucible-0.1.0/README.md +594 -0
  6. sqlcrucible-0.1.0/noxfile.py +81 -0
  7. sqlcrucible-0.1.0/pyproject.toml +83 -0
  8. sqlcrucible-0.1.0/src/sqlcrucible/__init__.py +11 -0
  9. sqlcrucible-0.1.0/src/sqlcrucible/_version.py +34 -0
  10. sqlcrucible-0.1.0/src/sqlcrucible/conversion/__init__.py +12 -0
  11. sqlcrucible-0.1.0/src/sqlcrucible/conversion/exceptions.py +87 -0
  12. sqlcrucible-0.1.0/src/sqlcrucible/conversion/function.py +40 -0
  13. sqlcrucible-0.1.0/src/sqlcrucible/conversion/mappings.py +84 -0
  14. sqlcrucible-0.1.0/src/sqlcrucible/conversion/noop.py +63 -0
  15. sqlcrucible-0.1.0/src/sqlcrucible/conversion/registry.py +132 -0
  16. sqlcrucible-0.1.0/src/sqlcrucible/conversion/sequences.py +99 -0
  17. sqlcrucible-0.1.0/src/sqlcrucible/conversion/unions.py +150 -0
  18. sqlcrucible-0.1.0/src/sqlcrucible/entity/__init__.py +0 -0
  19. sqlcrucible-0.1.0/src/sqlcrucible/entity/annotations.py +103 -0
  20. sqlcrucible-0.1.0/src/sqlcrucible/entity/automodel.py +174 -0
  21. sqlcrucible-0.1.0/src/sqlcrucible/entity/core.py +302 -0
  22. sqlcrucible-0.1.0/src/sqlcrucible/entity/field_metadata.py +275 -0
  23. sqlcrucible-0.1.0/src/sqlcrucible/entity/field_resolution.py +123 -0
  24. sqlcrucible-0.1.0/src/sqlcrucible/entity/fields.py +134 -0
  25. sqlcrucible-0.1.0/src/sqlcrucible/entity/sa_conversion.py +85 -0
  26. sqlcrucible-0.1.0/src/sqlcrucible/entity/sa_type.py +41 -0
  27. sqlcrucible-0.1.0/src/sqlcrucible/stubs/__init__.py +369 -0
  28. sqlcrucible-0.1.0/src/sqlcrucible/stubs/__main__.py +42 -0
  29. sqlcrucible-0.1.0/src/sqlcrucible/utils/__init__.py +0 -0
  30. sqlcrucible-0.1.0/src/sqlcrucible/utils/properties.py +66 -0
  31. sqlcrucible-0.1.0/src/sqlcrucible/utils/sa_fields.py +26 -0
  32. sqlcrucible-0.1.0/src/sqlcrucible/utils/types/__init__.py +0 -0
  33. sqlcrucible-0.1.0/src/sqlcrucible/utils/types/equivalence.py +29 -0
  34. sqlcrucible-0.1.0/src/sqlcrucible/utils/types/match.py +91 -0
  35. sqlcrucible-0.1.0/src/sqlcrucible/utils/types/params.py +61 -0
  36. sqlcrucible-0.1.0/src/sqlcrucible/utils/types/transformer.py +94 -0
  37. sqlcrucible-0.1.0/tests/__init__.py +0 -0
  38. sqlcrucible-0.1.0/tests/conversion/__init__.py +0 -0
  39. sqlcrucible-0.1.0/tests/conversion/conftest.py +48 -0
  40. sqlcrucible-0.1.0/tests/conversion/test_mappings.py +71 -0
  41. sqlcrucible-0.1.0/tests/conversion/test_noop.py +74 -0
  42. sqlcrucible-0.1.0/tests/conversion/test_registry.py +30 -0
  43. sqlcrucible-0.1.0/tests/conversion/test_sequences.py +63 -0
  44. sqlcrucible-0.1.0/tests/conversion/test_unions.py +105 -0
  45. sqlcrucible-0.1.0/tests/entity/__init__.py +0 -0
  46. sqlcrucible-0.1.0/tests/entity/test_attrs_entity.py +173 -0
  47. sqlcrucible-0.1.0/tests/entity/test_concrete_table_inheritance.py +135 -0
  48. sqlcrucible-0.1.0/tests/entity/test_custom_sa_model.py +85 -0
  49. sqlcrucible-0.1.0/tests/entity/test_dataclass_entity.py +212 -0
  50. sqlcrucible-0.1.0/tests/entity/test_joined_table_inheritance.py +138 -0
  51. sqlcrucible-0.1.0/tests/entity/test_pydantic_entity.py +260 -0
  52. sqlcrucible-0.1.0/tests/entity/test_sa_type.py +74 -0
  53. sqlcrucible-0.1.0/tests/entity/test_single_table_inheritance.py +130 -0
  54. sqlcrucible-0.1.0/tests/stubs/__init__.py +1 -0
  55. sqlcrucible-0.1.0/tests/stubs/sample_models.py +59 -0
  56. sqlcrucible-0.1.0/tests/stubs/test_stub_typecheck.py +144 -0
  57. sqlcrucible-0.1.0/tests/utils/types/test_params.py +69 -0
  58. 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